从表中读取 BigQuery 数值数据类型

Posted

技术标签:

【中文标题】从表中读取 BigQuery 数值数据类型【英文标题】:Reading BigQuery Numeric Data Type From Table 【发布时间】:2018-05-30 17:30:23 【问题描述】:

虽然从 BQ 表 NUMERIC 读取数据,但在 Apache Beam 中仍然不支持,但使用 API 我可以在 BQ 中使用 NUMERIC 数据类型。

因此,在使用以下 Snippet 从 BQ 读取数据时:

BigQueryIO.readTablerow().from(options.valueprovider);

我得到一个异常数值 尚不支持

如果 NUMERIC 字段存在,除了 RestAPI 调用,我还有其他方法可以从 BQ 读取数据吗?

【问题讨论】:

我认为现在不可能。不过你可以follow the relevant feature request for Beam。 嗨,@ElliottBrossard 我已经看到了这个请求,但到目前为止,Apache 方面没有任何响应。任何替代方法因此,我可以在 Dataflow 中测试 Numeric Datatype 的行为,而不是 RestAPI 调用。如果它可能有帮助或任何替代/建议,我也尝试使用用户定义的编码器。 github.com/apache/beam/pull/5755 @ElliottBrossard 谢谢 感谢您的提醒。我会考虑解决这个问题。 【参考方案1】:

Dataflow 现在支持使用 Java 库的reading NUMERIC from BigQuery。在撰写本文时,您需要download a snapshot release 或等到下一个official Beam release 才能使用此功能。

编辑:如果你想下载当前版本的 Beam,你可以这样做:

~$ git clone https://github.com/apache/beam.git

然后就可以使用 Gradle build 任务了,例如:

~$ cd beam
~/beam$ ./gradlew build

或者为 Eclipse 生成文件,如果您使用它作为您的开发环境:

~/beam$ ./gradlew -p sdks/java/build-tools/ eclipse

您可以找到有关使用 Gradle 的更多信息in the Gradle user documentation。

【讨论】:

感谢您提供信息,但是您能否分享构建 gradle 的命令,因为我面临问题,现在由于缺少 pom.xml,无法使用 master 分支进行 maven 构建。 我更新了答案以显示几个您可以执行的 Gradle 任务。

以上是关于从表中读取 BigQuery 数值数据类型的主要内容,如果未能解决你的问题,请参考以下文章

从表中检索混合数据类型的模板化 get 方法

如何更新 Bigquery 表中的数据类型?

赛普拉斯:如何比较与从表中读出的字符串/文本连接的不同数据类型

PL/SQL:如何从表中选择数据并输入到包接受数组类型?

数据流 BigQuery 读取未返回正确的数据类型

BigQuery:查找 ID 类型为 RECORD 的数组并使用 SQL 连接辅助表中的数据