google-bigquery - 尝试将日期时间值从 Dataflow 插入 BigQuery 时出现无效的日期时间错误

标签 google-bigquery google-cloud-dataflow

我们编写了一个谷歌数据流代码,将一个值插入到一个 bigquery 中
列类型为 DateTime 的表。
大多数时候逻辑运行良好。
但是突然我们遇到了无效的日期时间问题。

Exception: java.lang.RuntimeException: java.io.IOException: Insert failed: [{"errors":[{"debugInfo":"generic::out_of_range: Invalid datetime string \"2017-09-26T21:16\"

目前尚不清楚上述值如何以及为何无效。
我们看到它遵循 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types 中提到的 DateTime 数据类型

此外,目前还不清楚为什么它只是偶尔抛出这个错误。

我们编写了扩展 DoFn 的自定义转换代码
ProcessElement 代码是这样的
 public void processElement(ProcessContext c) throws Exception {

    TableRow tableRow = c.element();
    try {
       // do some processing then 
      tableRow.set("PredictedDate",**LocalDateTime.now().toString()**);
      c.output(tableRow);
    }catch(Exception exc){
        LOG.error("Exception while processing and hence not attempting to write to bigquery");
    }
} 

enter code here

它工作正常,但在夜间(美国中部时区)偶尔会失败。
你能帮我们找到根本原因吗?

最佳答案

DateTime 描述的格式表示需要秒字段。
YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.DDDDDD]]
具体来说,注意第二个 S没有用方括号括起来,使其成为可选的。

关于google-bigquery - 尝试将日期时间值从 Dataflow 插入 BigQuery 时出现无效的日期时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558675/

相关文章:

sql - 如何在 BigQuery 中显示数据样本?

javascript - 超出了 Google 应用脚本的最长执行时间

google-cloud-dataflow - 使用 Google DataFlow 将数据直接流式传输到 Cloud SQL 的简单查询

google-cloud-dataflow - 在 apache beam 中创建自定义 Sink

python - TensorFlow 数据验证和 BigQuery

java - 根据 BigQuery 中多个表的数据生成 CSV 文件

mysql - BigQuery 为子查询返回 null

google-cloud-dataflow - 从 Dataflow 中的压缩文件中读取

error-handling - 如何接收管道数据流作业失败的根本原因

google-analytics - 无法构建有效的 BigQuery CASE 语句