GENERATE_ARRAY(start_expression, end_expression[, step_expression])
関数を使うと連番の数値(等差数列)を作ることができます
しかし一度に作る個数が多いとError: GENERATE_ARRAY(1, 10000000, 1) produced too many elements
のようにエラーが出てしまいます
なので力技でエラーを回避します
2つのGENERATE_ARRAY()
で数列を生成して、片方を小さい方の桁もう片方を大きい方の桁の数値とします
こうやると先程は\(10^7\)個の数列の作成でもエラーになっていたのが例えば\(10^9\)個の数列でも作ることができます
#standardSQL SELECT i * 1000 + i2 AS i FROM UNNEST(GENERATE_ARRAY(0, 999999)) AS i, UNNEST(GENERATE_ARRAY(0, 1000 - 1)) AS i2
ただし実行時間は結構遅いので注意が必要です
\(10^9\)個の数列を作って出力するだけで8分以上かかっています