首页 > 解决方案 > 如何在 BigQuery 标准 SQL 中取消嵌套多个数组

问题描述

我正在从包含 JSON 列的 Google Bigquery 表中选择数据。我的表有多个嵌套数组,其中一个包含两个嵌套级别。这是我的表模式

https://imgur.com/UBPKUMx

我的声明是:

SELECT 
items.*,
pay.*,
credits.creditnoteid,
credits.id,
credits.total
FROM client_account.invoices,
UNNEST(lineitems) items,
UNNEST(items.tracking),
UNNEST(payments) pay,
UNNEST(creditnotes) credits

https://imgur.com/c1YT258

不幸的是,我没有得到任何结果......你能帮我解除所有数组的嵌套吗?

在此处输入图像描述

标签: sqlgoogle-bigqueryunnest

解决方案


好的,我对我的一个数据集进行了测试。我认为creditnotes总是这样null。因为在我的情况下,当我取消嵌套始终为空的列时,我没有得到任何结果。您可以通过使用LEFT JOIN我修改您的查询以使用左连接来修复它,但您可能能够更好地调整它。

SELECT 
items.*,
tracking.*,
pay.*,
credits.creditnoteid,
credits.id,
credits.total
FROM client_account.invoices
LEFT JOIN UNNEST(lineitems) items
LEFT JOIN UNNEST(items.tracking) tracking
LEFT JOIN UNNEST(payments) pay
LEFT JOIN UNNEST(creditnotes) credits

推荐阅读