篩選器
從 Bigtable 讀取資料時,可以讀取特定資料列或資料列範圍。不過,您不一定需要所有資料列中的所有資料。您可能只需要資料列鍵中含有特定值的資料列,或是特定資料欄系列中的儲存格。
如要限制讀取要求的結果,請在要求中加入篩選器。系統會在傳送回應前套用篩選器至資料,減少傳回的資料量。因此,使用篩選器可降低網路費用並加快輸送量。本頁面提供 Bigtable 篩選器的運作方式總覽,以及可用篩選器的清單。
如需各項篩選器的詳細資料和程式碼範例,請參閱「篩選器範例」。
篩選器如何運作
如果讀取要求包含篩選器,Bigtable 會從資料表擷取資料列或資料列範圍。Bigtable 會針對擷取的每個輸入資料列,使用篩選器評估資料列,然後根據篩選器結果產生輸出資料列。
Bigtable 提供多種篩選器,詳情請參閱以下各節。基本篩選器分為兩類:限制和修改。您可以將基本篩選器合併為撰寫篩選器。
在大多數情況下,篩選器會套用至所有資料列,除非您指定篩選器應套用的資料列鍵、資料列範圍或資料列數。但資料列鍵規則運算式篩選器是例外,如果規則運算式是固定前置字串,則在特定情況下可限制資料列範圍。一般來說,為避免完整掃描資料表時速度緩慢,請務必為篩選器指定資料列。
限制篩選器
限制篩選器會根據特定條件,控管回應中包含哪些資料列或儲存格。舉例來說,您可以指定回應中只包含資料列鍵符合規則運算式的資料列,或是只包含特定欄位系列的儲存格。
許多限制性篩選器可以從輸出列中排除儲存格。如果輸出資料列中的所有儲存格都遭到排除,該資料列就不會納入回應。
如需限制篩選器的完整清單,請參閱「篩選器摘要」。
修改篩選器
修改篩選器會影響個別儲存格的資料或中繼資料。
Bigtable 提供下列修改篩選器:
移除值篩選器,可將每個儲存格的值替換為空白字串。如果您只需要符合條件的資料列數或資料列鍵清單,而非這些資料列的資料,這個篩選器就非常實用。
套用標籤篩選器:為每個儲存格套用標籤,識別回應中每個儲存格的產生篩選器。您的應用程式可以使用這些標籤,在用戶端執行額外篩選作業。
撰寫篩選器
組合篩選器可將多個基本篩選器合併為一,因此您可以在單一讀取要求中套用多個篩選器。舉例來說,如要取得伺服器的 CPU 使用率資料,您可以先使用一個篩選器,只納入資料列鍵開頭為 SERVER
的資料列,然後再使用第二個篩選器,只納入 CPU
欄系列中的儲存格。
Bigtable 提供下列組合篩選器:
- 鏈結:將一連串篩選器套用至每個輸入資料列,並傳回輸出資料列。鏈結篩選器就像使用邏輯 AND。
- 交錯:將每個輸入資料列透過多個篩選器傳送,然後將輸入資料列的所有篩選器結果合併為單一輸出資料列。交錯篩選器就像使用邏輯 OR。
- 條件:將兩種可能的篩選器之一套用至輸入資料列,藉此產生輸出資料列。方法是將述詞篩選器套用至輸入資料列,然後檢查述詞篩選器的輸出資料列是否包含任何儲存格。
篩選器和效能
篩選條件可讓您只擷取實際需要的資料。因此,篩選器可減少傳送至應用程式的資料量,進而提升效能。
不過,篩選器並非解決所有效能問題的萬用方案。一般來說,篩選器應是用來控制總處理量效率,而非縮短傳送要求和接收回應之間的延遲時間。如果使用得當,篩選器可以成為策略的有效一環,提升讀取效能。
尤其是條件篩選器,因為條件比其他篩選器慢得多,可能會增加延遲時間。如果讀取要求對效能極為敏感,請勿在要求中使用條件。
篩選器摘要
下表列出 Bigtable 提供的篩選器,並附上各篩選器的詳細資料和程式碼範例連結。
限制篩選器 | |
---|---|
全部封鎖 | 請勿發出任何儲存格。主要用於偵錯。 |
每個資料欄的儲存格數量上限 | 只納入資料列中資料欄的 N 個最新版本。 |
每個資料列的儲存格數量上限 | 只納入資料列中的前 N 個儲存格。 |
每個資料列的偏移儲存格數量 | 省略資料列中的前 N 個儲存格。 |
資料欄 系列 regex | 只納入資料欄系列符合 RE2 規則運算式的儲存格。 |
資料欄 限定符規則運算式 | 僅納入欄位限定符符合規則運算式的儲存格。 |
欄範圍 | 僅納入特定資料欄系列中的儲存格,且這些儲存格的資料欄限定詞位於特定範圍內。 |
通過所有測試 | 發出所有輸入儲存格。主要用於偵錯。 |
資料列索引鍵規則運算式 | 只納入資料列索引鍵符合規則運算式的儲存格。 |
列範例 | 擷取隨機資料列樣本。 |
Sink | 將儲存格納入最終輸出資料列,並防止後續篩選器修改或移除這些儲存格。 |
時間戳記範圍 | 僅納入時間戳記落在特定範圍內的儲存格。 |
值範圍 | 只納入值在特定範圍內的儲存格。 |
值 regex | 只納入值符合規則運算式的儲存格。 |
修改篩選器 | |
---|---|
套用標籤 | 為所有儲存格新增標籤。 |
Strip value | 針對每個儲存格值傳回空字串。 |
撰寫篩選器 | |
---|---|
鏈結 | 依序套用多個篩選器。 |
條件 | 對資料列套用兩種可能的篩選器之一。 |
交錯 | 將多個篩選器的輸出資料列合併成單一輸出資料列。 |