バリアント分割では、一般的に発生するフィールドを基になる Parquet ファイルに個別の列として格納することで、 VARIANT 列のクエリ パフォーマンスが向上します。 細断すると、フィールドの読み取りに必要な I/O が減り、バイナリ BLOB ではなく列形式を使用して圧縮が向上します。
VARIANT型、Apache Iceberg と Delta Lake のバリアント型のサポート、およびクエリバリアント データを参照してください。
必要条件
Databricks Runtime 17.3 以降は、細断された VARIANT テーブルの読み取りと書き込みを行うために必要です。 バリアント統計の収集とデータのスキップによる最適なクエリ パフォーマンスを実現するために、Databricks では Databricks Runtime 18.1 以降をお勧めします。
細断を有効にする
Databricks Runtime 17.3 以降では、VARIANTを使用して 1 つ以上のCREATE TABLE列を含む新しいテーブルを作成すると、シュレッディングが自動的に有効になります。
CREATE OR REPLACE TABLE と ALTER TABLE は自動的に細断を有効にしません。 これにより、既存のテーブルとワークロードの細断動作の変更を回避できます。
既存のテーブルの場合は、 enableVariantShredding テーブルプロパティを TRUE に設定し、プロパティを FALSEに設定してオプトアウトすることで、手動で細分化を選択できます。
デルタ湖
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');
氷山テーブル
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');
テーブルプロパティ enableVariantShredding が trueに設定されていることを確認して、シュレッディングが有効になっていることを確認します。
特定のテーブルの細断をオプトアウトする
将来の書き込み時に特定のテーブルを細断から除外するには、 enableVariantShredding table プロパティを FALSE に設定します。
デルタ湖
ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');
氷山テーブル
ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');
既存のテーブルから細断を削除する
既存のテーブルのシュレッディングを削除するには、 ALTER TABLE コマンドを使用してフィーチャーを削除します。 また、この操作では、細断された VARIANT データを、変更されていない VARIANT 形式に書き換え、 enableVariantShredding table プロパティを false に設定します。
ALTER TABLE my_table DROP FEATURE "variantShredding";
制限事項
- データを細断すると、書き込みにいくつかのオーバーヘッドが発生します。
- シュレッディングを有効にしても、テーブル内の既存の
VARIANTデータは自動的に変換されません。 これは、機能が有効になった後に書き込まれたデータにのみ適用されます。 既存のVARIANTデータを書き換える場合は、REORG TABLE my_table APPLY (SHRED VARIANT)を使用します。 - シュレッディングは、配列またはマップ内に格納
VARIANTデータを除き、構造体の最上位VARIANT列またはVARIANTフィールドに適用されます。