如何在BigQuery Standard SQL中生成系列

Mik*_*ant 10 google-bigquery

我需要生成表说,连续600号的每一行中(从51)
我如何做到这一点与BigQuery标准SQL?

Ell*_*ard 18

尝试GENERATE_ARRAY标准SQL:

SELECT num FROM UNNEST(GENERATE_ARRAY(51, 650)) AS num;
Run Code Online (Sandbox Code Playgroud)


Mik*_*ant 7

BigQuery 标准 SQL

SELECT 50 + ROW_NUMBER() OVER() AS num
FROM UNNEST((SELECT SPLIT(FORMAT("%600s", ""),'') AS h FROM (SELECT NULL))) AS pos
ORDER BY num
Run Code Online (Sandbox Code Playgroud)

BigQuery 旧版 SQL

SELECT 50 + pos AS pos FROM (
  SELECT ROW_NUMBER() OVER() AS pos, * 
  FROM (FLATTEN((SELECT SPLIT(RPAD('', 600, '.'),'') AS h FROM (SELECT NULL)), h))
) WHERE pos BETWEEN 1 AND 600
Run Code Online (Sandbox Code Playgroud)

从那里你可以调整逻辑,例如获得连续的天数和其他序列

  • 我在标准 SQL 的管道中有更好的东西 - 不幸的是它尚不可用:(我会在这篇文章中添加书签并在我有东西要分享时添加一个答案。 (2认同)