如果需要对表中的数据做抽样,可以使用 SAMPLE 函数,其语法如下:
SAMPLE
SAMPLE(<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>] … )
SAMPLE 返回包含样本行数<n_value>的表,当 n 为 0 或负数时,返回空。
参数 | 属性 | 描述 |
---|---|---|
Size | 返回的抽样表的行数 | |
Table | 用于抽样的表或表表达式 | |
OrderBy | 可重复 | 每行计值的标量表达式 |
Order | 可选 可重复 |
排序规则. 0/FALSE/DESC – 降序(默认); 1/TRUE/ASC – 升序. |
抽样原理
用法示例
下面的查询每月只返回一行:
EVALUATE SAMPLE ( 12, 'Date', 'Date'[Month] )
Date 列似乎是随机分布的,其实整个表是按照 Month 列的降序排序,因为省略<order>参数默认使用降序,<column>和<order>可以重复使用。
EVALUATE SAMPLE ( 100, SUMMARIZE ( 'Date', 'Date'[Date], 'Date'[Calendar Year], 'Date'[Month Number] ), 'Date'[Month Number],, 'Date'[Calendar Year], )
如果你指定的列呈不规则分布,那么在提取的样本中也会看到相同的分布特征。例如,考虑以下查询,该查询从顾客表中按 Country/Region 列的分布提取 6 行。
EVALUATE SAMPLE ( 6, SUMMARIZE ( Customer, Customer[City], Customer[Country/Region] ), Customer[Country/Region] )
Country/Region 列的许多值都没有显示,而美国却出现了好几次。这是因为列表包含的美国的城市比其他国家/地区多得多,因此样本中美国的城市更多。
某些客户端工具使用 SAMPLE 函数来评估数据的分布,而避免检索整个数据集,并根据相应的评估结果定义坐标轴的单位。
说点什么