2017-10-04 2 views
0

Googleのデータフローコードを書き込んで、カラムがDateTime型のbigquery テーブルに値を挿入しました。 ほとんどの場合、ロジックは正常に動作していました。 突然、無効なDateTimeの問題が発生します。DataflowからDatetime値をBigQueryに挿入しようとしたときにDateTimeのエラーが発生しました

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

上記の値が無効である理由と理由が不明です。 DateTimeのデータ型がhttps://cloud.google.com/bigquery/docs/reference/standard-sql/data-types

に準拠していることが確認されています。このエラーが発生するのはなぜか分かりません。

は、我々は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 

(米国中部タイムゾーン)のようになりDoFn を拡張するカスタム変換コードを書きました。 根本的な原因を見つけるお手伝いをしていただけますか?

+1

「2017-09-26T21:16」の代わりに、「2017-09-26T21:16:00」にする必要があります。 –

答えて

4

DateTimeの形式では、秒フィールドが必要であることを示しています。

YYYY-[M]M-[D]D[(|T)[H]H:[M]M:[S]S[.DDDDDD]]

具体的には、第二Sは、それが任意作る角括弧で囲まれていないことに注意してください。

+0

ありがとうございます。また、LocalDateTime.now()。toString()を使用していました。これは秒がゼロのときに秒を捨てるようですが、ISOフォーマッタを使用してright.Thanksを設定しました –

関連する問題