ALTER TABLE COLUMN 句
適用対象: Databricks SQL Databricks Runtime
テーブル内の列、または Delta Lake テーブルの列のフィールドを追加、変更、または削除します。
必要なアクセス許可
Unity カタログを使用する場合、次の MODIFY
アクセス許可が必要です。
- ALTER COLUMN
- ADD COLUMN
- DROP COLUMN
その他すべての操作では、テーブルの所有権が必要です。
構文
ALTER TABLE table_name
{ ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause }
ADD COLUMN 句
この句は、JDBC
データ ソースではサポートされていません。
1 つ以上の列をテーブルに追加するか、Delta Lake テーブル内の既存の列にフィールドを追加します。
Note
既存の Delta テーブルに列を追加する場合、DEFAULT
値を定義することはできません。 Delta テーブルに追加されたすべての列は、既存の行の NULL
として扱われます。 列を追加した後、必要に応じて列の既定値を定義できますが、これはテーブルに挿入される新しい行にのみ適用されます。 次の構文を使用します。
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
構文
{ ADD [ COLUMN | COLUMNS ]
( { { column_identifier | field_name } data_type
[ DEFAULT clause ] [ COMMENT comment ] [ FIRST | AFTER identifier ]
[ MASK clause ] } [, ...] ) }
パラメーター
-
追加する列の名前です。 名前はテーブル内で一意にする必要があります。
FIRST
またはAFTER name
が指定されていない限り、列またはフィールドは末尾に追加されます。 -
既存の列に追加するフィールドの完全修飾名。 入れ子になったフィールドに対するパスのコンポーネントがすべて存在し、フィールド名自体が一意である必要があります。
DEFAULT default_expression
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以上
列が指定されていない場合に
INSERT
とMERGE ... INSERT
で使われる列のDEFAULT
値を定義します。既定値が指定されていない場合、Null 許容列には
DEFAULT NULL
が暗黙的に使用されます。default_expression
は、リテラル、および組み込みの SQL 関数か演算子で構成することができます。ただし、次のものは除きます。default_expression
には、サブクエリを含めることはできません。DEFAULT
はCSV
、JSON
、PARQUET
、とORC
ソースでサポートされています。-
列かフィールドのデータ型を指定します。 Azure Databricks でサポートされているすべてのデータ型が、すべてのデータ ソースでサポートされているわけではありません。
COMMENT comment
追加された列またはフィールドを記述する省略可能な
STRING
リテラル。Unity Catalog で管理されているテーブルまたはテーブル列に AI が生成したコメントを追加する場合は、「AI が生成したコメントを Unity Catalog オブジェクトに追加する」を参照してください。
FIRST
指定した場合、列はテーブルの最初の列として追加されます。または、フィールドが、含まれている構造体の最初のフィールドとして追加されます。
AFTER
識別子指定した場合、フィールドまたは列
identifier
の直後に列またはフィールドが追加されます。-
適用対象: Databricks SQL Databricks Runtime 12.2 LTS 以降 Unity Catalog のみ
重要
この機能はパブリック プレビュー段階にあります。
列マスク関数を追加して、機密データを匿名化します。 その列からの後続のすべてのクエリは、列の元の値の代わりに、その列に対してその関数を評価した結果を受け取ります。 これは、関数が呼び出し元ユーザーの ID またはグループ メンバーシップを検査して、値を編集するかどうかを決定できる、きめ細かいアクセス制御に役立ちます。
ALTER COLUMN 句
適用対象: Databricks SQL Databricks Runtime
プロパティまたは列の場所を変更します。
構文
{ { ALTER | CHANGE } [ COLUMN ] { column_identifier | field_name }
{ COMMENT comment |
{ FIRST | AFTER column_identifier } |
{ SET | DROP } NOT NULL |
TYPE data_type |
SET DEFAULT clause |
DROP DEFAULT |
SYNC IDENTITY |
SET { MASK clause } |
DROP MASK |
SET TAGS clause |
UNSET TAGS clause } }
パラメーター
-
変更する列の名前。
-
変更するフィールドの完全修飾名。 入れ子になったフィールドへのパスのすべてのコンポーネントが存在する必要があります。
COMMENT comment
column_name
列の説明を変更します。comment
は、STRING
リテラルを指定する必要があります。FIRST
またはAFTER
識別子列を現在の位置から前 (
FIRST
) またはidentifier
のすぐAFTER
に移動します。 この句は、table_name
が Delta テーブルの場合にのみサポートされます。TYPE
data_type適用対象: Databricks SQL Databricks Runtime 15.2 以上
column_name
列のデータ型を変更します。この句は、
table_name
が Delta テーブルの場合にのみサポートされます。以下の型の変更はすべての Delta テーブルでサポートされています。
VARCHAR
列のサイズを増加させます。例:VARCHAR(5)
からVARCHAR(10)
CHAR
列の型をVARCHAR
に変更します。例:CHAR(5)
からVARCHAR(5)
CHAR
またはVARCHAR
列の型をSTRING
に変更します。例:VARCHAR(10)
からSTRING
。
以下の型の変更は、
delta.enableTypeWidening
がtrue
に設定されている Delta テーブルでサポートされています。重要
この機能は、Databricks Runtime 15.2 以上でのパブリック プレビュー段階にあります。
変換元の型 サポートされるより拡大された型 BYTE
SHORT
、INT
、BIGINT
、DECIMAL
、DOUBLE
SHORT
INT
、BIGINT
、DECIMAL
、DOUBLE
INT
BIGINT
、DECIMAL
、DOUBLE
BIGINT
DECIMAL
,DOUBLE
FLOAT
DOUBLE
DECIMAL
より高い精度とスケールの DECIMAL
DATE
TIMESTAMP_NTZ
型の拡大の詳細については、「型の拡大」を参照してください。
SET NOT NULL
またはDROP NOT NULL
有効な列値のドメインを変更して null を除外 (
SET NOT NULL
) するか、null を含め (DROP NOT NULL
) ます。 このオプションは、Delta Lake テーブルでのみサポートされます。 Delta Lake では、制約が既存のすべてのデータと新しいデータに対して有効になります。SYNC IDENTITY
適用対象: Databricks SQL Databricks Runtime 10.4 LTS 以上
ID 列のメタデータを実際のデータと同期します。 ID 列に独自の値を書き込む場合、メタデータに準拠していない可能性があります。 このオプションでは、状態が評価され、実際のデータと一致するようにメタデータが更新されます。 このコマンドの後、次に自動的に割り当てられる ID 値は
start + (n + 1) * step
から開始されます。ここで、n
はstart + n * step >= max()
を満たす最小の値です (正の手順の場合)。このオプションは、Delta Lake テーブルの ID 列でのみサポートされます。
DROP DEFAULT
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以上
列から既定の式を削除します。 Null 許容列の場合、これは
SET DEFAULT NULL
と同じになります。NOT NULL
で定義された列の場合、今後すべてのINSERT
操作で値を指定する必要がありますSET DEFAULT default_expression
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以上
列が指定されていない場合に
INSERT
とMERGE ... INSERT
で使われる列のDEFAULT
値を定義します。既定値が指定されていない場合、Null 許容列には
DEFAULT NULL
が暗黙的に使用されます。default_expression
は、リテラル、組み込みの SQL 関数か演算子で構成することができます。ただし、次のものは除きます。default_expression
には、サブクエリを含めることはできません。DEFAULT
はCSV
、JSON
、ORC
、とPARQUET
ソースでサポートされています。新しく追加された列の既定値を定義すると、その既定値はすべての既存の行に適用されます。 既定値に
rand
やcurrent_timestamp
のような非決定論的関数が含まれている場合、その値はALTER TABLE
が実行されたときに一度だけ計算され、既存の行に定数として適用されます。 新しく挿入された行では、既定の式は行ごとに 1 回実行されます。ALTER COLUMN
を使って既定値を設定した場合、既存の行はその変更の影響を受けません。SET
MASK 句適用対象: Databricks SQL Databricks Runtime 12.2 LTS 以降 Unity Catalog のみ
重要
この機能はパブリック プレビュー段階にあります。
列マスク関数を追加して、機密データを匿名化します。 その列からの後続のすべてのクエリは、列の元の値の代わりに、その列に対してその関数を評価した結果を受け取ります。 これは、関数が呼び出し元ユーザーの ID またはグループ メンバーシップを検査して、値を編集するかどうかを決定できる、きめ細かいアクセス制御に役立ちます。
DROP MASK
適用対象: Unity Catalog のみ
重要
この機能はパブリック プレビュー段階にあります。
この列の列マスク (存在する場合) を削除します。 今後この列からのクエリは、列の元の値を受け取ります。
SET TAGS ( { tag_name = tag_value } [, ...] )
適用対象: Databricks SQL Databricks Runtime 13.3 LTS 以上
列にタグを適用します。 列にタグを追加するには、
APPLY TAG
アクセス許可が必要です。tag_name
リテラル
STRING
。tag_name
はテーブル内または列内で一意にする必要があります。tag_value
リテラル
STRING
。
UNSET TAGS ( tag_name [, ...] )
適用対象: Databricks SQL Databricks Runtime 13.3 LTS 以降
列からタグを削除します。 列からタグを削除するには、
APPLY TAG
アクセス許可が必要です。tag_name
リテラル
STRING
。tag_name
はテーブル内または列内で一意にする必要があります。
DROP COLUMN 句
重要
この機能はパブリック プレビュー段階にあります。
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以上
Delta Lake テーブルに 1 つ以上の列またはフィールドを削除します。
列またはフィールドを削除する場合は、依存 Check 制約と生成された列を削除する必要があります。
要件については、「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。
構文
DROP [COLUMN | COLUMNS] [ IF EXISTS ] ( { {column_identifier | field_name} [, ...] )
パラメーター
IF EXISTS
IF EXISTS
を指定すると、Azure Databricks は、存在しない列を削除しようとしても無視します。 それ以外の場合、存在しない列の削除によってエラーが発生します。-
既存の列の名前。
-
既存のフィールドの完全修飾名。
RENAME COLUMN 句
重要
この機能はパブリック プレビュー段階にあります。
適用対象: Databricks SQL Databricks Runtime 10.4 LTS 以降
列マッピングが有効になっている Delta Lake テーブルの列またはフィールドの名前を変更します。
列またはフィールドの名前を変更する場合は、依存 Check 制約と生成された列も変更する必要があります。 当該の列を使用する主キーと外部キーはすべて削除されます。 外部キーの場合は、外部キーが定義されているテーブルを所有している必要があります。
要件と列マッピングを有効にする方法については、「Delta Lake 列マッピングを使用した列の 名前と削除を参照してください。
構文
RENAME COLUMN { column_identifier TO to_column_identifier|
field_name TO to_field_identifier }
パラメーター
-
列の既存の名前。
-
新しい列識別子。 識別子はテーブル内で一意である必要があります。
-
フィールドの既存の完全修飾名。
-
新しいフィールド識別子。 識別子は、ローカル構造体内で一意である必要があります。
例
「ALTER TABLE」の「例」を参照してください。