如何使用 Dataflow Python SDK 读取 BigQuery 嵌套表

How to read BigQuery nested tables using Dataflow Python SDK

如何使用 Apache Beam Python SDK 读取嵌套结构?

lines = p | io.Read(io.BigQuerySource('project:test.beam_in'))

结果

"reason": "invalidQuery",
"message": "Cannot output multiple independently repeated fields at the same time. Found classification_item_distribution and category_cat_name"

是否可以读取嵌套结构?

这是 BigQuery 的 属性。执行此类查询的两种方法是禁用结果扁平化(通过 BigQuery)或显式扁平化查询中的字段。

对于当前的 Python SDK,只有后者可用 - 请参阅“Flattening Google Analytics data (with repeated fields) not working anymore”以获取有关在何处以及如何调用 FLATTEN 函数的指南。

如果您想订阅更新或讨论,禁用扁平化的功能已归档为BEAM-877

您现在可以直接在 Beam Python 中读取嵌套结果,方法是在创建源时添加 flatten_results=False

lines = p | io.Read(io.BigQuerySource('project:test.beam_in', flatten_results=False))

查看来源 here