篩選器

Pydoc Pydoc




給定一個述詞,篩選出所有不滿足該述詞的元素。也可以用於根據元素的比較順序,根據與給定值的不等式進行篩選。

範例

在以下範例中,我們建立一個具有農產品 PCollection 的管線,其中包含它們的圖示、名稱和持續時間。然後,我們以多種方式套用 Filter,根據其持續時間值篩選農產品。

Filter 接受一個函式,該函式保留傳回 True 的元素,並篩選掉其餘元素。

範例 1:使用函式篩選

我們定義一個函式 is_perennial,如果元素的持續時間等於 'perennial',則傳回 True,否則傳回 False

範例 2:使用 lambda 函式篩選

我們也可以使用 lambda 函式來簡化範例 1

範例 3:使用多個引數篩選

您可以將具有多個引數的函式傳遞給 Filter。它們會作為額外的位置引數或關鍵字引數傳遞給函式。

在此範例中,has_duration 會將 plantduration 作為引數。

範例 4:將側輸入作為單例篩選

如果 PCollection 具有單一值,例如來自另一個計算的平均值,則將 PCollection 作為單例傳遞會存取該值。

在此範例中,我們將值 'perennial'PCollection 作為單例傳遞。然後,我們使用該值來篩選多年生植物。

範例 5:將側輸入作為迭代器篩選

如果 PCollection 具有多個值,請將 PCollection 作為迭代器傳遞。這會在需要時延遲存取元素,因此可以迭代不適合記憶體的大型 PCollection

注意:您可以使用 beam.pvalue.AsList(pcollection)PCollection 作為清單傳遞,但這需要所有元素都適合記憶體。

範例 6:將側輸入作為字典篩選

如果 PCollection 小到足以放入記憶體,則可以將該 PCollection 作為字典傳遞。每個元素都必須是 (key, value) 配對。請注意,PCollection 的所有元素都必須適合記憶體才能執行此操作。如果 PCollection 不適合記憶體,請改用 beam.pvalue.AsIter(pcollection)

Pydoc Pydoc