2016-06-02 5 views
0

Ich arbeite an einer Pipeline, die eine PCollection von BigQuery PCollection<TableRow> nimmt und filtert es basierend auf einem Zellwert.Filter mit ParDo oder mit Transform?

Ist es besser, es mit einem ParDo wie in this example zu filtern oder sollte ich die Class Filter<T> verwenden?

Grundsätzlich möchte ich basierend auf personType filtern können. Zum Beispiel:

Was ist der Unterschied, wie gehe ich das falsch an und was sollte ich stattdessen versuchen?

Antwort

1

Sie sind ziemlich gleich. Alle Filter Transformationen werden mit einem ParDo mit einem DoFn ähnlich wie Sie erwähnt implementiert (siehe Filter.java).

Die Filter Umwandlung existiert, um eine bequeme Kurzhand für das Filtern zu sein. Wenn es funktioniert, ist es wahrscheinlich prägnanter. Der einzige große Unterschied ist, dass die Filter Transformation nur Filter basierend auf dem Eingabeelement kann. Wenn Sie beispielsweise eine Nebeneingabe verwenden möchten, die eine Liste von Elementen enthält, die übergeben werden sollen, müssen Sie eine ParDo verwenden. Wenn Sie nur filtern nach "Ist dieses Feld gleich 'customer'", dann ist die Filter wahrscheinlich in Ordnung.

+0

Danke für die Klarstellung, Ben! – chipoglesby