共用方式為


建立 BLOOM 篩選索引

適用於: 核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

建立新數據或重寫數據的 Bloom 篩選索引;它 不會 為現有數據建立 Bloom 篩選。 如果數據表名稱或其中一個數據行不存在,命令就會失敗。 如果已啟用數據行的 Bloom 篩選,現有的 Bloom 篩選選項會取代為新的選項。

語法

CREATE BLOOMFILTER INDEX
ON [TABLE] table_name
FOR COLUMNS( { columnName1 [ options ] } [, ...] )
[ options ]

options
  OPTIONS ( { key1 [ = ] val1 } [, ...] )

參數

雖然無法針對已寫入的數據建置 Bloom 篩選索引, 但 OPTIMIZE 命令會針對重新組織的數據更新 Bloom 篩選條件。 因此,您可以在數據表上執行 OPTIMIZE ,以回填 Bloom 篩選:

  • 如果您先前尚未優化數據表。
  • 使用不同的檔案大小,需要重新寫入數據檔。
  • ZORDER 使用 (或不同的 ZORDER,如果已經有 ,則為 ),要求重新寫入數據檔。

您可以在資料行層級或資料表層級定義選項,以微調 Bloom 篩選:

  • fpp:誤判機率。 每個寫入的 Bloom 篩選所需的誤判率。 這會影響將單一專案放在 Bloom 篩選中所需的位數,並影響 Bloom 篩選的大小。 值必須大於 0,且小於或等於 1。 默認值為 0.1,每個專案需要 5 位。
  • numItems:檔案可包含的不同項目數目。 此設定對於篩選品質很重要,因為它會影響 Bloom 篩選中使用的位總數(項目數目 - 每個專案的位數)。 如果此設定不正確,Bloom 篩選條件會非常疏鬆地填入、浪費磁碟空間和減緩必須下載此檔案的查詢,或是太完整且較不精確(FPP 較高)。 值必須大於 0。 預設值為1百萬個專案。
  • maxExpectedFpp:將 Bloom 篩選條件寫入磁碟的最大預期誤判機率。 如果預期的 FPP 大於此閾值,Bloom 篩選條件的選擇性太低:使用 Bloom 篩選所花費的時間和資源超過其實用性。 值長度必須介於 0 到 1 之間。 默認值為 1.0(已停用)。

只有在寫入數據時,這些選項才會扮演角色。 您可以在各種階層層級設定這些屬性:寫入作業、資料表層級和數據行層級。 數據行層級的優先順序高於數據表和作業層級,而數據表層級的優先順序高於作業層級。

請參閱 Bloom 篩選索引