sample 运算符
从输入表返回最大指定随机行数。
注意
sample
适用于速度而不是对值的均匀分配。 具体来说,这意味着如果在联合了 2 个不同大小的数据集的运算符(如union
或join
运算符)之后使用,它将不会产生“公平”的结果。 建议在表格引用和筛选器后立即使用sample
。sample
是一个非确定性运算符,每次在查询过程中对其求值时,它都会返回不同的结果集。 例如,以下查询将产生两个不同的行(即使其中一个预期会返回相同的行两次)。
语法
T | sample
NumberOfRows
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
T | string |
✔️ | 输入表格表达式。 |
NumberOfRows | int、long 或 real | ✔️ | 要返回的行数。 可以指定任何数值表达式。 |
示例
let _data = range x from 1 to 100 step 1;
let _sample = _data | sample 1;
union (_sample), (_sample)
输出
x |
---|
83 |
3 |
为确保在上面的示例中 _sample
计算一次,可以使用 materialize() 函数:
let _data = range x from 1 to 100 step 1;
let _sample = materialize(_data | sample 1);
union (_sample), (_sample)
输出
x |
---|
34 |
34 |
若要对一定百分比的数据(而不是指定的行数)进行采样,则可以使用
StormEvents | where rand() < 0.1
若要对项而不是行进行采样(例如对 10 个 ID 进行采样并获取这些 ID 的所有行),则可以将 sample-distinct
与 in
运算符结合使用。
let sampleEpisodes = StormEvents | sample-distinct 10 of EpisodeId;
StormEvents
| where EpisodeId in (sampleEpisodes)