建立 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 } [, ...] )
參數
-
識別現有的 Delta 資料表。 名稱不得包含 時態規格。
雖然無法針對已寫入的資料建置 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 篩選索引。