筛选器

Pydoc Pydoc




给定一个谓词,筛选出所有不满足该谓词的元素。也可以用于根据元素的比较顺序与给定值的比较结果进行筛选。

示例

在以下示例中,我们创建了一个具有 PCollection 的管道,其中包含农产品及其图标、名称和持续时间。然后,我们以多种方式应用 Filter 来根据持续时间值筛选出农产品。

Filter 接受一个函数,该函数保留返回 True 的元素,并筛选掉其余元素。

示例 1:使用函数进行筛选

我们定义了一个函数 is_perennial,如果元素的持续时间等于 'perennial',则返回 True,否则返回 False

示例 2:使用 lambda 函数进行筛选

我们也可以使用 lambda 函数来简化 **示例 1**。

示例 3:使用多个参数进行筛选

您可以将具有多个参数的函数传递给 Filter。它们将作为附加的位置参数或关键字参数传递给该函数。

在此示例中,has_duration 接受 plantduration 作为参数。

示例 4:使用侧输入作为单例进行筛选

如果 PCollection 具有单个值,例如来自另一个计算的平均值,则将 PCollection 作为单例传递将访问该值。

在此示例中,我们将 PCollection 的值 'perennial' 作为单例传递。然后,我们使用该值来筛选出多年生植物。

示例 5:使用侧输入作为迭代器进行筛选

如果 PCollection 具有多个值,则将 PCollection 作为迭代器传递。这将根据需要延迟访问元素,因此可以迭代不适合内存的大型 PCollection

注意:您可以使用 beam.pvalue.AsList(pcollection)PCollection 作为列表传递,但这要求所有元素都适合内存。

示例 6:使用侧输入作为字典进行筛选

如果 PCollection 足够小以适合内存,则可以将该 PCollection 作为字典传递。每个元素都必须是 (key, value) 对。请注意,所有 PCollection 元素都必须适合内存。如果 PCollection 不适合内存,请改用 beam.pvalue.AsIter(pcollection)

Pydoc Pydoc