BigQuery中重复与非重复字段的字符串拼接问题
解决方案:BigQuery中拼接重复与非重复字段生成数组列
基础修正写法
你之前的SQL错误在于用GENERATE_ARRAY生成了数字数组,并没有关联Actions里的实际动作元素。正确的做法是直接UNNEST动作数组,在子查询中完成姓名与每个动作的拼接:
SELECT *, ARRAY( SELECT CONCAT(First_Name, " ", Last_Name, " ", action) FROM UNNEST(Actions) AS action ) AS Action_Descriptions FROM events
更简洁的实现方式
使用BigQuery内置的ARRAY_TRANSFORM函数可以直接对数组元素做转换,无需额外的子查询UNNEST操作,代码更简洁高效:
SELECT *, ARRAY_TRANSFORM(Actions, action => CONCAT(First_Name, " ", Last_Name, " ", action)) AS Action_Descriptions FROM events
效果说明
运行上述任意一段SQL,都会生成符合需求的Action_Descriptions列:
- 第一条记录结果:
["Jane Doe walks", "Jane Doe jumps", "Jane Doe sits"] - 第二条记录结果:
["Joe Smith walks", "Joe Smith sits"]
内容的提问来源于stack exchange,提问作者user3827694
相关产品推荐
相关产品推荐

