如果需要对表中的数据做抽样,可以使用 SAMPLE 函数,其语法如下:如果需要对表中的数据做抽样,可以使用 SAMPLE 函数,其语法如下:
如果需要对表中的数据做抽样,可以使用 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 – 升序. |
抽样原理
<orderBy_expression>可以指定一个或多个列,这些列将用于在选择样本行之前对数据进行排序。算法根据这些参数对数据进行逻辑排序,然后按<n_value>的数量分块,从每个块返回一行。<orderBy_expression>通常使用列名,但也可以是在<table>的行上下文中计值的任何 DAX 表达式。<order>参数为 0,返回按<column>降序排序的数据,参数为 1 返回按升序排序的数据,如果为空,则默认为 0(降序)。
SAMPLE 返回的稳定分布的样本,包含原始表第一行、最后一行,和在首末记录之间均匀分布的行,顺序由<orderBy_expression>决定。
用法示例
下面的查询每月只返回一行:
- 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 函数来评估数据的分布,而避免检索整个数据集,并根据相应的评估结果定义坐标轴的单位。
|