[英]BigQuery: UNNEST result containing multiple rows
我有一個返回多行的 UDF:
CREATE OR REPLACE FUNCTION dataset.multi_row() RETURNS ARRAY<STRUCT<r1 FLOAT64, r2 FLOAT64>> LANGUAGE js AS """
return [{
"r1": 10 * Math.random(),
"r2": 10 * Math.random()
}, {
"r1": 100 * Math.random(),
"r2": 100 * Math.random()
}]
""";
假設這個 UDF 用於產生多行的查詢,例如
SELECT dataset.multi_row() FROM UNNEST([1,2,3])
Row f0_.r1 f0_.r2
--- ----------------- -----------------
1 9.328970861925416 9.61853335054045
20.700051452811017 87.67054242459575
2 4.184274373335275 6.136918172331227
26.790853709322747 35.848885881352
3 0.32172810017527365 7.416528380222973
70.21210223299556 57.644422256839746
我想將每一行和數組條目轉換為單獨的行,所以它看起來像這樣:
Row f0_.r1 f0_.r2
--- ----------------- -----------------
1 9.328970861925416 9.61853335054045
2 20.700051452811017 87.67054242459575
3 4.184274373335275 6.136918172331227
4 26.790853709322747 35.848885881352
5 0.32172810017527365 7.416528380222973
6 70.21210223299556 57.644422256839746
產生此結果的 SQL 查詢是什么樣的?
您可以嘗試在 BQ 臨時表上保存數據,然后按照代碼將數據unnest
WITH data AS (
SELECT
[9.328970861925416, 20.700051452811017] as col_1,
[9.61853335054045, 87.67054242459575] as col_2 union all
SELECT
[4.184274373335275, 26.790853709322747] as col_1,
[6.136918172331227, 35.848885881352] as col_2 union all
SELECT
[0.32172810017527365, 70.21210223299556] as col_1,
[7.416528380222973, 57.644422256839746] as col_2
)
SELECT col_1, col_2[OFFSET(off)] as col_2 FROM data ,unnest(col_1) as col_1 WITH OFFSET off
Output 將作為:-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.