首页 > 解决方案 > BigQuery 中跨多个数组列的高级 UNNEST

问题描述

关于 UNNEST 的问题。我有这张桌子:在此处输入图像描述

我想根据状态和语言环境数组取消嵌套,但结果表仍然需要有 7 行,而不是 14 行。我想取消嵌套那些“数组对”,而不是一一取消嵌套 2 个数组(这将返回 14 行)。

另外,我不知道数组中的项目数。它可以是 1,但也可以是 20,但“组”中的每个数组确实具有相同数量的项目。

关于如何实现这一目标的任何想法?

(请记住,我有大约 10 列作为数组,但我的示例图像仅显示其中 2 个)

标签: google-bigquery

解决方案


以下是 BigQuery 标准 SQL

#standardSQL
SELECT * EXCEPT(status, locale, pos1, pos2), status, locale  
FROM `project.dataset.table`,
UNNEST(status) status WITH OFFSET pos1,
UNNEST(locale) locale WITH OFFSET pos2
WHERE pos1 = pos2

推荐阅读