如何关联多个 BigQuery 数组字段?
Posted
技术标签:
【中文标题】如何关联多个 BigQuery 数组字段?【英文标题】:How to associate multiple BigQuery array fields? 【发布时间】:2020-04-22 22:54:47 【问题描述】:我正在处理一个 BigQuery 数据表,该数据表使用多个数组字段来存储同一逻辑记录的元素。
在这种情况下,有一个数组字段用于“产品代码”,第二个数组字段用于“数量”,第三个数组字段用于“价格”。如果元素,所有数组字段都将具有相同的数量。
如何构建将产品代码、数量和价格提取为三列结果集的 BigQuery 查询?
【问题讨论】:
请提供样本数据和预期结果。 【参考方案1】:以下是 BigQuery 标准 SQL
#standardSQL
SELECT id, rec.*
FROM `project.dataset.table`,
UNNEST(ARRAY(
SELECT AS STRUCT code, quantity, price
FROM UNNEST(code) code WITH OFFSET
JOIN UNNEST(quantity) quantity WITH OFFSET USING(OFFSET)
JOIN UNNEST(price) price WITH OFFSET USING(OFFSET)
)) rec
您可以使用示例虚拟数据进行测试,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 id, ['product1', 'product2', 'product3'] code, [10, 20, 30] quantity, [2.99, 1.99, 0.99] price UNION ALL
SELECT 2, ['product4', 'product5', 'product6'], [60, 50, 40], [3.99, 4.99, 5.99]
)
SELECT id, rec.*
FROM `project.dataset.table`,
UNNEST(ARRAY(
SELECT AS STRUCT code, quantity, price
FROM UNNEST(code) code WITH OFFSET
JOIN UNNEST(quantity) quantity WITH OFFSET USING(OFFSET)
JOIN UNNEST(price) price WITH OFFSET USING(OFFSET)
)) rec
有输出
Row id code quantity price
1 1 product1 10 2.99
2 1 product2 20 1.99
3 1 product3 30 0.99
4 2 product4 60 3.99
5 2 product5 50 4.99
6 2 product6 40 5.99
【讨论】:
以上是关于如何关联多个 BigQuery 数组字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何在存储为字符串的 bigquery 字段中取消嵌套多个数组?
在 Bigquery 中,如何使用标准 Sql 过滤 Struct 数组以匹配 Struct 中的多个字段?