筛选器
Pydoc |
给定一个谓词,筛选出所有不满足该谓词的元素。也可以用于根据元素的比较顺序与给定值的比较结果进行筛选。
示例
在以下示例中,我们创建了一个具有 PCollection
的管道,其中包含农产品及其图标、名称和持续时间。然后,我们以多种方式应用 Filter
来根据持续时间值筛选出农产品。
Filter
接受一个函数,该函数保留返回 True
的元素,并筛选掉其余元素。
示例 1:使用函数进行筛选
我们定义了一个函数 is_perennial
,如果元素的持续时间等于 'perennial'
,则返回 True
,否则返回 False
。
示例 2:使用 lambda 函数进行筛选
我们也可以使用 lambda 函数来简化 **示例 1**。
示例 3:使用多个参数进行筛选
您可以将具有多个参数的函数传递给 Filter
。它们将作为附加的位置参数或关键字参数传递给该函数。
在此示例中,has_duration
接受 plant
和 duration
作为参数。
示例 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 |
上次更新时间:2024/10/31
您找到所有您要找的东西了吗?
它是否都有用且清晰?您想更改什么吗?请告诉我们!