BigQuery RAND() 不接受种子值

BigQuery RAND() not accepting seed value

我正在尝试使用 RAND() 函数并设置种子以在 https://cloud.google.com/dataprep/docs/html/RAND-Function_57344757#int_value

之后的输出中生成一组一致的 10 个随机值

通过此查询我收到错误:No matching signature for function RAND for argument types: INT64. :

rand_val as (
  select value
  from test
  where RAND(3) < 10/ (select count(value) from test))

select * from rand_val

我做错了什么?

在 BigQuery 中 rand() 不接受种子参数。检查 documentation.

您可以使用伪随机数生成器。例如,如果您的 table 有一个主键,您可以使用 farm_fingerprint():

的键获得 10 个“随机”样本
with t as (
      select t.*,
             row_number() over (order by farm_fingerprint(concat(pk, '3')) ) as seqnum
      from t
     )
select t.*
from t
where seqnum <= 10;

concat() 的第二个参数是种子值。