Python将存储桶内列表转换为BigQuery每行一个product项的方法
实现BigQuery列表项单行展示的两种方案
方案1:Cloud Function 预处理后写入(推荐)
在写入BigQuery前直接将列表展开为多条结构,写入后即可直接得到每行对应一个product项的结果,无需后续额外处理。
转换代码示例:
# 从对象存储读取到的原始数据 origin_data = {"product": ["item1", "item2", "item3"]} # 将product列表展开为多行结构 processed_data = [{"product": item} for item in origin_data["product"]] # 后续直接将processed_data批量写入BigQuery即可
方案2:BigQuery 侧查询时展开
如果已经存在写入完成的嵌套结构存量数据,或不需要修改现有写入逻辑,可以直接用UNNEST函数在查询时展开数组字段:
查询示例:
SELECT -- 如需保留原表其他字段可直接加在此处 product_item FROM `your_project.your_dataset.your_table`, UNNEST(product) AS product_item
替换上述SQL中的项目ID、数据集名、表名为你实际对应的BigQuery资源即可。
执行后查询结果会自动将product数组的每一项拆分为单独行。
内容的提问来源于stack exchange,提问作者Simon Breton
相关产品推荐
相关产品推荐

