You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADX中|sample算子如何设置随机种子以实现固定采样结果?

固定种子实现ADX重复抽样相同结果

ADX的sample运算符本身不支持直接指定随机种子,没法直接让每次执行返回完全相同的样本,但可以通过其他方法模拟带固定种子的随机抽样,保证每次结果一致。

实现方法

核心思路是给数据表的每一行生成一个基于固定种子+行唯一标识的固定数值,通过排序这个数值后取前N条,替代sample的随机抽样效果。

示例代码1:用rand()结合固定种子

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2017-01-01), 1,
  datetime(2017-01-02), 2,
  datetime(2017-01-03), 3,
  datetime(2017-01-04), 4,
  datetime(2017-01-05), 5,
  datetime(2017-01-06), 6,
];
let fixed_seed = 12345; // 自定义固定种子,可随意修改
data
| extend random_value = rand(fixed_seed, hash(timestamp, metric)) // 用行的唯一特征(时间戳+指标)和种子生成固定随机值
| sort by random_value
| take 2

示例代码2:用哈希函数结合固定种子

如果觉得rand()的方式不够直观,也可以用哈希函数生成固定值:

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2017-01-01), 1,
  datetime(2017-01-02), 2,
  datetime(2017-01-03), 3,
  datetime(2017-01-04), 4,
  datetime(2017-01-05), 5,
  datetime(2017-01-06), 6,
];
let fixed_seed = 12345;
data
| extend hash_val = hash(concat(tostring(timestamp), tostring(metric), fixed_seed)) // 拼接行特征和种子后生成哈希值
| sort by hash_val
| take 2

原理说明

  • sample是无固定种子的随机抽样,每次执行的随机源不同,所以结果不一致;
  • 上面的方法通过固定种子+行的唯一特征(比如时间戳、指标值的组合)生成唯一且固定的数值,排序后取前N条,只要种子不变、表数据不变,每次执行都会得到相同的样本。

内容的提问来源于stack exchange,提问作者Windfish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:57:18