CREATE BLOOM FILTER INDEX
適用於:Databricks SQL Databricks Runtime
建立新數據或重寫數據的 Bloom 篩選索引;它 不會 為現有數據建立 Bloom 篩選。 如果 table 名稱或其中一個 columns 不存在,命令就會失敗。 如果已啟用 column的 Bloom 篩選,現有的 Bloom 篩選選項會由新的選項取代。
語法
CREATE BLOOMFILTER INDEX
ON [TABLE] table_name
FOR COLUMNS( { columnName1 [ options ] } [, ...] )
[ options ]
options
OPTIONS ( { key1 [ = ] val1 } [, ...] )
Parameters
-
識別現有的 Delta table。 名稱不得包含 時態規格或選項規格。
雖然無法針對已寫入的數據建置 Bloom 篩選索引,但 OPTIMIZE 命令會針對重新組織的數據更新 Bloom 篩選條件。 因此,您可以在 table上執行 OPTIMIZE
,以回填 Bloom 篩選:
- 如果您先前尚未優化 table。
- 使用不同的檔案大小,需要重新寫入數據檔。
-
ZORDER
使用 (或不同的ZORDER
,如果已經有 ,則為 ),要求重新寫入數據檔。
您可以在 column 層級或 table 層級定義選項,以微調 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(已停用)。
只有在寫入數據時,這些選項才會扮演角色。 您可以在各種階層層級設定這些屬性:寫入作業、table 層級,以及 column 層級。 column 層級優先於 table 和作業層級,而 table 層級的優先順序高於作業層級。
請參閱 Bloom 篩選索引。