建立 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 篩選索引