TableRow 对象未在 dataFlow 作业中返回记录类型列

Posted

技术标签:

【中文标题】TableRow 对象未在 dataFlow 作业中返回记录类型列【英文标题】:TableRow object not returning Record type columns in dataFlow Job 【发布时间】:2016-08-19 21:07:18 【问题描述】:

当我使用 DataFlow 作业执行 BigQuery 查询时,我得到的 TableRow 对象不会返回那些记录类型列(展平)

Java 代码:

p.apply(BigQueryIO.Read.fromQuery(getQuery()))

查询:

选择 BASM.,BAS. FROM (选择 user_ids.rmId AID, id, user_ids.regis, segment_id from(FLATTEN([data.base_audience_segment_map20160817], user_ids.rmId))) BASM 加入 (从 [data.base_audience_segments] 中选择类别、子类别、类型、名称、segment_id、last_compute_day、描述)BAS 在 BASM.segment_id=BAS。 segment_id order by BASM.AID,BASM.id limit 100

如果您在上面的查询中看到 user_ids.rmId 是一个可重复记录类型列。

提前致谢

【问题讨论】:

【参考方案1】:

我认为默认行为是,如果您的查询为某个列返回空值,那么该列在 TableRow 对象下将不可见

【讨论】:

【参考方案2】:

您可能想使用BigQueryIO without result flattening。

p.apply(BigQueryIO.Read
    .fromQuery(getQuery())
    .withoutResultFlattening())

【讨论】:

以上是关于TableRow 对象未在 dataFlow 作业中返回记录类型列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 插入错误时崩溃/停止 DataFlow Pub/Sub 摄取

从 REST API 更新 Dataflow 作业

通过 Dataflow Java API 返回客户端的不一致 BigQuery 数据类型

使用 DataFlow 作业加载分区表

收到 PubSub 通知后触发 Dataflow 作业

从 Dataflow 作业连接到 Cloud SQL