用 ParDo 还是用 Transform 过滤?

Filter with ParDo or with Transform?

我正在开发一个从 BigQuery PCollection<TableRow> 获取 PCollection 并根据单元格值对其进行过滤的管道。

this example or should I be using the Class Filter<T>那样用ParDo过滤更好吗?

基本上我希望能够根据 personType 进行过滤。例如:

if(personType == 'customer') {
  then c.output(outputTableRow);
 }

有什么区别,我是如何处理这个错误的,我应该尝试什么?

它们几乎相同。所有 Filter 转换都是使用 ParDoDoFn 实现的,就像您提到的(参见 Filter.java)。

Filter 变换的存在是为了方便过滤。如果有效,它可能更简洁。唯一的主要区别是 Filter 转换可以 基于输入元素的过滤。例如,如果您想使用包含应传递的元素列表的侧输入,则需要使用 ParDo。如果您只是过滤 "does this field equal 'customer'",那么 Filter 可能没问题。