次の方法で共有


型の拡大

重要

この機能は、Databricks Runtime 15.2 以上でのパブリック プレビュー段階にあります。

型拡大を有効にした Tables を使用すると、基になるデータ ファイルを書き換えることなく、column データ型をより広い型に変更できます。 column 型を手動で変更するか、schema 進化を使用して column 型を進化させることができます。

型の拡大には Delta Lake が必要です。 すべての Unity Catalog マネージド tables は、既定で Delta Lake を使用します。

サポートされている型の変更

以下の規則に従って、型を拡大することができます。

ソースの種類 サポートされるより拡大された型
byte shortintlongdecimaldouble
short intlongdecimaldouble
int long, decimal, double
long decimal
float double
decimal decimal より高い精度と規模で
date timestampNTZ

整数 values を小数点に誤って昇格しないようにするには、byteshortint、または long から decimal または doubleに型の変更を手動でコミットする必要があります。

Note

何らかの数値型を decimal に変更する場合、合計の有効桁数は元の有効桁数以上となる必要があります。 スケールも大きくする場合は、合計有効桁数を対応する分だけ増やす必要があります。

byteshortint 型の最小のターゲットは、decimal(10,0) です。 long の最小ターゲットは decimal(20,0) です。

decimal(10,1) を持つフィールドに 2 個の桁を追加したい場合、最小のターゲットは decimal(12,3) になります。

型の変更は、トップレベルのcolumnsや、構造体、マップ、配列の中で入れ子になっているフィールドでサポートされています。

型の拡大を有効にする

既存の table で型拡大を有効にするには、delta.enableTypeWideningtable プロパティを trueに設定します。

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

table の作成時に、型拡大を有効にすることもできます。

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

重要

型拡大を有効にすると、リーダープロトコルとライタープロトコルをアップグレードする table 機能 typeWidening-previewが設定されます。 型拡大が有効になっている tables を操作するには、Databricks Runtime 15.2 以降を使用する必要があります。 外部クライアントも tableと対話する場合は、この table 機能がサポートされていることを確認します。 「Azure Databricks で Delta Lake 機能の互換性を管理する方法は?」を参照してください。

型の変更を手動で適用する

以下のように、ALTER COLUMN コマンドを使用して、型を手動で変更します。

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

この操作では、基になるデータ ファイルを書き換えずに tableschema を更新します。

schemaの自動進化を使用して型を拡大する

Schema進化は、型の拡大と連携して、入力データの種類と一致するようにターゲット tables内のデータ型をupdateします。

Note

型拡大が有効になっていない場合、schema 進化は常に、ターゲット table内の column 型と一致するようにデータを安全にダウンキャストしようとします。 ターゲット tablesのデータ型を自動的に拡大しない場合は、schema 進化が有効になっているワークロードを実行する前に、型の拡大を無効にします。

schema 進化を使用して columnのデータ型を拡大するには、次の条件を満たす必要があります。

  • コマンドが INSERT または MERGE INTO を使用する。
  • このコマンドは、自動 schema エボリューションが有効な状態で実行されます。
  • ターゲット table では、型拡大が有効になっています。
  • ソース column 型は、ターゲットの column 型よりも広くなっています。
  • 型の拡大が型の変更をサポートしている。

条件をすべて満たしていない型不一致は、通常の schema 適用規則に従います。 「Schemaの適用」を参照してください。

タイプ拡大 table 機能を無効にする

tables が有効なときに誤って型拡大が起こらないようにするには、プロパティを falseに設定してください。

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

この設定により、tableに対する将来の型の変更は防止されますが、型の拡大 table 機能や変更された型を元に戻すことは remove されません。

タイプ拡大 table フィーチャを完全に remove する必要がある場合は、次の例に示すように DROP FEATURE コマンドを使用できます。

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

型の拡大/縮小を削除すると、現在の tableschema に準拠していないすべてのデータ ファイルが書き換えられます。 「Delta table機能の削除」を参照してください。