スキーマ強制
Databricks は、スキーマを書き込みに適用することでデータ品質を検証します。
注記
この記事では、 によってサポートされる 上のテーブルのデフォルトの動作について説明します。DatabricksDelta Lakeスキーマ強制は、外部データに基づくテーブルには適用されません。
スキーマ強制 for insert operations
Databricks では、テーブルにデータを挿入するときに次のルールが適用されます。
- 挿入されたすべての列は、ターゲット表に存在している必要があります。
- すべての列データ型は、ターゲット表の列データ型と一致する必要があります。
注記
Databricks は、ターゲット テーブルに一致するように列のデータ型を安全にキャストしようとします。
MERGE
操作中のスキーマ検証
Databricks では、 MERGE
操作の一部としてデータを挿入または更新するときに、次のルールが適用されます。
- ソース ステートメントのデータ・タイプがターゲット・カラムと一致しない場合、
MERGE
はカラム・データ・タイプをターゲット・テーブルと一致するように安全にキャストしようとします。 UPDATE
またはINSERT
アクションのターゲットとなる列は、ターゲット表に存在する必要があります。INSERT *
構文またはUPDATE SET *
構文を使用する場合:- ソースデータセットの列のうち、ターゲットテーブルに存在しない列は無視されます。
- ソース データセットには、ターゲット テーブルに存在するすべての列が含まれている必要があります。
テーブル スキーマの変更
テーブルのスキーマは、明示的な ALTER TABLE
ステートメントまたは自動スキーマ進化を使用して更新できます。 「Delta Lake テーブル スキーマの更新」を参照してください。
スキーマ進化には、 MERGE
操作のための特別なセマンティクスがあります。 「Delta Lake マージの自動スキーマ進化」を参照してください。