概念:Prism 表达式语言
Prism Analytics 包含自己的表达式语言,该语言由函数和运算符组成。您使用 Prism 表达式语言创建
表达式
“”,然后使用该表达式创建新值或筛选现有值。表达式通过组合字段、常量值、运算符和函数来计算或生成值。表达式会输出特定字段类型的值,例如数字或文本值。简单表达式可以是单个常量值、给定字段的值,也可以只是一个函数。您可以使用运算符将两个或更多简单表达式联接成一个复杂表达式。
您可以通过以下方式在数据集中使用表达式:
- 计算字段使用表达式来定义将对源数据进行运算的计算字段。计算字段表达式根据某个计算或条件生成相应的值,并为每个输入行返回一个值。计算字段表达式可以包含来自其他字段的值、常量、数学运算符、比较运算符或内置行函数。
- 筛选阶段。在“筛选”阶段中使用表达式可限制数据集源数据的范围。
表达式构建器可帮助您在数据集中创建计算字段表达式。它会显示数据集中的可用字段,以及 Prism 函数的列表。它会验证您的表达式的语法、输入字段类型等是否正确。
函数输入和输出
函数接受一个或多个输入值并返回一个输出值。输入值可以是字面量值,也可以是包含值的字段的名称。在这两种情况下,函数都要求输入值为特定字段类型,例如“文本”或“整数”。示例:CONCAT() 函数会合并文本输入并输出新的文本。
以下示例演示如何使用 CONCAT() 函数连接
月
、 日
和 年
字段中的值,并用斜杠字符分隔:CONCAT([month],"/",[day],"/",[year])
函数的返回值可能与其输入类型相同,也可能是全新的字段类型。示例:TO_DATE() 函数接受文本作为输入,但输出日期值。如果函数需要一个文本,但传递的是其他字段类型作为输入,则该函数将返回错误。
通常,函数按函数所采用的字段类型或函数用途进行分类。示例:CONCAT() 是一个文本函数,而 TO_DATE() 是一个字段类型转换函数。
嵌套函数
函数可以接受其他函数作为参数。示例:您可以将 CONCAT 函数用作 TO_DATE() 函数的参数。最终结果是一个格式为 10/31/2014 的日期值。
TO_DATE(CONCAT([month],"/",[day],"/",[year]),"MM/dd/yyyy")
嵌套函数必须返回正确的字段类型。因此,由于 TO_DATE() 需要文本输入,而 CONCAT() 返回文本,因此嵌套成功。
引用当前数据集中的字段
Workday 建议使用方括号 (
[]
)。示例:TO_INT([sales])
TO_INT([Sale Amount])
TO_INT([2013_data])
TO_INT([count])
如果字段名称中包含](右方括号),则必须通过显示两个]]来转义右方括号。假设您有以下字段名称:
[Total Sales]
您可以将整个字段名称用方括号括起来,并对实际字段名称中的右括号进行转义:
[[Total Sales]]]
常值文本值
要指定字面值或实际 Text 值,请将该值用双引号 (
"
)。示例:以下表达式将 性别
字段的值转换为字面值: 男性
、 女性
或 未知
:
CASE WHEN [gender]="M"THEN"male"WHEN [gender]="F"THEN"female"ELSE"unknown"END
要对文字值本身中的文字引号进行转义,请将文字引号字符翻倍。示例:
CASE WHEN [height]="60""" THEN "5 feet" WHEN [height]="72""" THEN "6 feet" ELSE "other" END
REGEX() 函数是一种特殊情况。在 REGEX() 函数中,文本表达式也用引号引起来。当 Text 表达式包含引号时,将引号字符加倍。示例:
REGEX([height], "\d\'(\d)+""")
文字日期值
要在筛选器阶段表达式中引用日期值,您必须使用以下格式(或其任何缩短版本),且不能使用任何引号或其他标点符号:
yyyy-MM-ddTHH:mm:ss:SSSZ
示例:
[Order Date] BETWEEN 2016-06-01T00:00:00.000Z AND 2016-07-31T00:00:00.000Z
如果筛选器表达式是完整格式的缩短版本,则 Prism 会为未包含的任何值指定零 (0)。示例:以下表达式:
[Order Date] >= 2017-01-01
等效于:
[Order Date] >= 2017-01-01T00:00:00.000Z
要在计算字段表达式中引用字面量日期值,您必须使用 TO_DATE 指定日期和时间构成的格式,TO_DATE 接受一个 Text 字面量参数和一个格式字符串。示例:
CASE WHEN [Order Date]=TO_DATE("2013-01-01 00:00:59 PST","yyyy-MM-dd HH:mm:ss z") THEN "free shipping" ELSE "standard shipping" DONE
文字数值
对于常量数值,您只需指定数字本身,无需任何特殊转义或格式设置。示例:
CASE WHEN [is married]=1THEN "married" WHEN [is married]=0THEN "not_married" ELSE NULL END