本篇文章将介绍一些使用频率较低但是作用又比较有用的函数。
1、FILTERS 函数
语法:
FILTERS ( <columnName> )
作用:
只考虑参数所指定列的直接筛选器,然后返回参数所指定列的可见数据去重后的单列表。
示例:
如下图所示 ,产品类别筛选器筛选了不存在的类别,那么产品表的可见数据应该为空才对,但因为FILTERS函数只考虑直接筛选,因此以下查询将忽略非产品名称字段上的筛选器,故最终返回了产品名称字段所筛选的两个产品。
2、GENERATESERIES 函数
语法:
GENERATESERIES ( <startValue>, <endValue>[, <incrementValue>] )
作用:
返回由第一参数与第二参数所指定范围的连续数值序列,并可以使用第三参数来控制增量,默认增量为1。
示例:
1、生成数字10到数字16的连续数值序列,如下图所示:
2、生成数字10到数字16的连续数值序列,但增量为2,如下图所示:
3、CONCATENATEX 函数
语法:
CONCATENATEX ( <table>, <expression>[, <delimiter> [, <orderBy_expression> [, <order>]]...] )
作用:
迭代第一参数的表的每一行,计算第二参数的表达式,然后将得到的结果串联到一个字符串中,由第三参数指定的分隔符进行分隔。其中,第四参数可以在串联成字符串前对第二参数的表达式结果进行排序,第五参数则用来控制升序(1/ASC)还是降序(0/DESC),省略时默认升序。
示例:
将所有产品名称合并成一个字符串,并用逗号分隔,如下图所示:
4、COALESCE 函数
语法:
COALESCE ( <expression>, <expression>[, <expression>]… )
作用:
返回第一个计算结果不为空(BLANK)的表达式的结果,若所有表达式的计算结果都为空,则返回空。
示例:
如下图所示,以下查询返回1,即第一个计算结果不为空的表达式。
5、ROW 函数
语法:
ROW ( <name>, <expression>[[,<name>, <expression>]…] )
作用:
返回一个单行表,其中包含由参数所定义的各个派生列。
示例:
1、使用ROW函数返回一行多列的表,如下图所示:
2、将ROW函数与GENERATE函数配合,在达到ADDCOLUMNS函数的效果的同时又能增加代码复用率,如下图所示:
6、CONTAINSSTRING 函数
语法:
CONTAINSSTRING ( <within_text>, <find_text> )
作用:
如果一个文本字符串中包含另一个文本字符串,则返回 TRUE,不区分大小写,支持通配符。
示例:
从一个文本字符串中查找是否包含关键词,如下图所示:
7、CONTAINSSTINGEXACT 函数
语法:
CONTAINSSTRINGEXACT ( <within_text>, <find_text> )
作用:
如果一个文本字符串中包含另一个文本字符串,则返回 TRUE,区分大小写,不支持通配符。
示例:
从一个文本字符串中查找是否包含关键词,如下图所示:
8、SAMPLE 函数
语法:
SAMPLE ( <n_value>, <table>, <orderBy_expression>, [<order>[, <orderBy_expression>, [<order>]]…] )
作用:
从第二参数指定的表中进行抽样,返回第一参数指定的样本行数,如果样本行数小于等于 0 则返回空表。可以使用第三参数与第四参数进行排序,当进行排序后,此样本表将是稳定且确定性的,返回第一行、最后一行和它们之间均匀分布的行。 如果未指定顺序,此样本将是随机的、不稳定且不确定的。
示例:
对日期表进行抽样,返回每个月中的随机一行,如下图所示:
总结
以上函数虽然不常用,但它们的作用在某些场景下却是不可代替的,建议掌握,更多函数请参考官方文档。