在Google BigQuery重复字段中选择前N个项目

Jan*_*auw 2 google-bigquery

有没有办法在Google BigQuery Repeated字段中选择前n个项目?

查看Google文档中的示例:

WITH items AS
    (SELECT ["apples", "bananas", "pears", "grapes"] as list
    UNION ALL
    SELECT ["coffee", "tea", "milk" ] as list
    UNION ALL
    SELECT ["cake", "pie"] as list)

SELECT list, list[OFFSET(0)] as offset_1, list[OFFSET(1)] as offset_2
FROM items;
Run Code Online (Sandbox Code Playgroud)

给出以下内容:

Bigquery SQL输出

OFFSET()函数返回一个(非重复)元素。

有没有一种优雅的方法来选择重复字段中的前n个元素(例如n = 2)?查看第1行,输出应为包含两个元素的重复字段:苹果和香蕉。

Mik*_*ant 5

以下是BigQuery标准SQL

#standardSQL
WITH items AS (
  SELECT ["apples", "bananas", "pears", "grapes"] AS list UNION ALL
  SELECT ["coffee", "tea", "milk" ] AS list UNION ALL
  SELECT ["cake", "pie"] AS list
)
SELECT 
  list AS original_list, 
  ARRAY(SELECT item FROM UNNEST(list) item WITH OFFSET pos WHERE pos < 2) new_list
FROM items
Run Code Online (Sandbox Code Playgroud)

输出为

Row original_list   new_list     
1   apples          apples   
    bananas         bananas  
    pears        
    grapes       
2   coffee          coffee   
    tea             tea  
    milk         
3   cake            cake     
    pie             pie
Run Code Online (Sandbox Code Playgroud)