如何在BigQuery中依据表内counter字段迭代记录并生成指定格式输出?
如何在BigQuery中依据表内counter字段迭代记录并生成指定格式输出?
嗨,我来帮你搞定这个需求!你想要根据表中的counter字段值,重复对应记录生成指定格式的输出对吧?在BigQuery里,我们可以借助GENERATE_ARRAY和UNNEST这两个函数轻松实现,具体方案如下:
首先假设你的输入表名为your_table,结构和数据如下:
| Parent | child | counter |
|---|---|---|
| raju | naveen | 1 |
| raju | ravi | 2 |
| raju | ram | 3 |
接下来是实现需求的BigQuery查询语句:
WITH repeated_records AS ( SELECT Parent AS `header 1`, child AS `header 2`, -- 根据counter值生成对应长度的数组,展开后实现记录重复 UNNEST(GENERATE_ARRAY(1, counter)) AS temp_index FROM your_table ) SELECT `header 1`, `header 2` FROM repeated_records ORDER BY `header 1`, `header 2`;
逻辑解释:
- 生成重复数组:
GENERATE_ARRAY(1, counter)会为每一行生成一个从1到counter数值的数组,比如counter=2时生成数组[1,2],counter=3时生成[1,2,3]; - 展开数组:
UNNEST会把数组的每个元素拆分成单独的行,这样原来的一行数据就会被拆分成counter行; - 筛选排序:最后只保留需要的
header 1和header 2字段,排序后就得到了你想要的输出格式。
执行这个查询后,输出结果会和你要求的完全一致:
| header 1 | header 2 |
|---|---|
| raju | naveen |
| raju | ravi |
| raju | ravi |
| raju | ram |
| raju | ram |
| raju | ram |
备注:内容来源于stack exchange,提问作者naveen
相关产品推荐
相关产品推荐

