如何在 BigQuery 标准 SQL 中取消嵌套多个数组
How to UNNEST multiple arrays in BigQuery standardSQL
我正在从 Google Bigquery table 中选择数据,其中包括 JSON 列。我的 table 有多个嵌套数组,其中一个包含两个嵌套级别。
这是我的 table 架构
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
很遗憾,我没有得到任何结果...
你能帮我取消所有数组的嵌套吗?
好的,我对我的一个数据集进行了测试。我认为 creditnotes
总是 null
。因为在我的例子中,当我取消嵌套一个始终为 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
我正在从 Google Bigquery table 中选择数据,其中包括 JSON 列。我的 table 有多个嵌套数组,其中一个包含两个嵌套级别。 这是我的 table 架构
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
很遗憾,我没有得到任何结果... 你能帮我取消所有数组的嵌套吗?
好的,我对我的一个数据集进行了测试。我认为 creditnotes
总是 null
。因为在我的例子中,当我取消嵌套一个始终为 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