如何在BigQuery中正确展开关联数组列避免笛卡尔积?
BigQuery中正确展开关联数组列(避免笛卡尔积)
当你分别对两个数组列执行UNNEST时,会触发笛卡尔积,导致元素被重复配对。要让associate和manager数组的对应元素一一展开,可采用以下两种方法:
方法1:通过偏移量关联元素位置
利用WITH OFFSET为每个数组元素标记位置,确保相同位置的元素配对:
SELECT id, associate, manager FROM `your_table`, UNNEST(associate) AS associate WITH OFFSET pos JOIN UNNEST(manager) AS manager WITH OFFSET pos USING(pos)
方法2:先组合STRUCT数组再展开
将两个数组的对应元素打包成STRUCT数组后统一展开:
SELECT id, item.associate, item.manager FROM `your_table`, UNNEST( ARRAY( SELECT STRUCT(a AS associate, m AS manager) FROM UNNEST(associate) a WITH OFFSET JOIN UNNEST(manager) m WITH OFFSET USING(OFFSET) ) ) AS item
这两种方法都能精准关联两个数组的对应元素,得到你期望的结果,不会产生多余的重复行。
内容的提问来源于stack exchange,提问作者Saravana Kumar
相关产品推荐
相关产品推荐

