2016-05-25 5 views
2

Das Problem, das ich habe, ist, wenn ich Daten von GBQ mit Nullwerten lese, wenn ich versuche, eine Funktion mit der Spalte von Nullwerten abzubilden, wird es Fehler geben.Behandeln Sie Nullwerte von BigQuery in Google Cloud Dataflow. Python

Wenn ich die Input_Data von GBQ in Text schreiben, hat die JSON-Ausgabedatei nicht den Schlüssel mit Nullwerten. Ich glaube, das ist ein Problem, das behoben werden muss.

Zum Beispiel: - Eingang key_1,key_2,key_3 value_1,,value_3

  • Erwartete Ausgabe: {"key_1":"value_1","key_2":null,"key_3":"value_3"}

  • Ausgabe von Dataflow {"key_1":"value_1","key_3":"value_3"}

Antwort

3

Vorerst gibt es nicht viel können wir tun auf Datenfluss-Ebene . Sie haben darauf hingewiesen, dass der JSON, der aus BigQuery herauskommt, nicht über die Nullwerte verfügt. Dies wird verbessert (aber nicht in der nächsten sofortigen Veröffentlichung), wenn wir als Zwischenformat für Exporte zu AVRO wechseln. Sie können eine einzeilige Funktion einfügen, um die Daten zu bereinigen, indem Sie die fehlenden Nullwertfelder hinzufügen. Siehe das Beispiel unten:

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))) 

Hoffe, das hilft.

Verwandte Themen