在 this blog一位 Google Cloud 员工解释了如何对 BigQuery 中的机器学习数据集进行可重复采样。这对于创建(和复制)数据的训练/验证/测试分区非常重要。
然而,该博客使用了 Legacy SQL,其中 Google has now deprecated赞成标准 SQL。
您将如何使用标准 SQL 重新编写如下所示的博客示例代码?
#legacySQL
SELECT
date,
airline,
departure_airport,
departure_schedule,
arrival_airport,
arrival_delay
FROM
[bigquery-samples:airline_ontime_data.flights]
WHERE
ABS(HASH(date)) % 10 < 8
最佳答案
标准 SQL 会这样重写查询:
#standardSQL
SELECT
date,
airline,
departure_airport,
departure_schedule,
arrival_airport,
arrival_delay
FROM
`bigquery-samples.airline_ontime_data.flights`
WHERE
ABS(MOD(FARM_FINGERPRINT(date), 10)) < 8
具体变化如下:
MOD
函数(不是 %
)。 FARM_FINGERPRINT
(不是 HASH
)。这实际上是与 Legacy SQL 的 HASH
不同的散列函数。 , 其中 wasn't in fact consistent over time正如博客所暗示的那样。 关于sql - 如何在 BigQuery Standard SQL 中进行可重复采样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46019624/