2016-05-25 9 views
2

問題は、NULL値を持つGBQからデータを読み込んだときに、NULL値の列で関数をマップしようとするとエラーが発生することです。Google Cloud Dataflow PythonでBigQueryのヌル値を扱う

input_dataをGBQからtextに書き出すと、json出力ファイルにはnull値のキーがありません。これは修正する必要がある問題だと私は信じています。例えば

: - 入力 key_1,key_2,key_3 value_1,,value_3

  • 予想される出力: {"key_1":"value_1","key_2":null,"key_3":"value_3"}

  • データフロー 今の {"key_1":"value_1","key_3":"value_3"}

答えて

3

からの出力は、我々はできる多くはありませんデータフローレベルで行う。あなたが指摘しているように、BigQueryから出てくるJSONにはnull値はありません。輸出の仲介フォーマットとしてAVROに切り替えると、これは改善されます(次の即時リリースでは改善されません)。 1行の関数を挿入して、欠落しているnull可能フィールドを追加してデータを「クリーンアップ」することができます。以下の例を参照してください。

def add_null_field(row, field): 
    row.update({field: row.get(field, None)}) 
    return row 

(p 
    | df.io.Read(df.io.BigQuerySource('PROJECT:DATASET.TABLE')) 
    | df.Map(add_null_field, field='value') 
    | df.io.Write(df.io.TextFileSink('gs://BUCKET/FILES))) 

関連する問題