【问题标题】:How to read BigQuery nested tables using Dataflow Python SDK如何使用 Dataflow Python SDK 读取 BigQuery 嵌套表
【发布时间】:2016-11-29 10:40:30
【问题描述】:

如何使用 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"

是否可以读取嵌套结构?

【问题讨论】:

    标签: google-cloud-dataflow apache-beam


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。有趣的是,Java SDK 允许嵌套结构而无需任何额外配置。
    【解决方案2】:

    您现在可以通过在创建源代码时添加 flatten_results=False 直接在 Beam Python 中读取嵌套结果:

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

    查看来源here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      相关资源
      最近更新 更多