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 カタログで管理されているテーブルまたはテーブル列に AI によって生成されたコメントを追加する場合は、「AI によって生成されたコメントをテーブルに追加する」を参照してください。
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 |
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 テーブルの場合にのみサポートされます。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 11.3 LTS 以降
Delta Lake テーブルの列またはフィールドの名前を変更します。
列またはフィールドの名前を変更する場合は、依存 Check 制約と生成された列も変更する必要があります。 当該の列を使用する主キーと外部キーはすべて削除されます。 外部キーの場合は、外部キーが定義されているテーブルを所有している必要があります。
要件については、「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。
構文
RENAME COLUMN { column_identifier TO to_column_identifier|
field_name TO to_field_identifier }
パラメーター
-
列の既存の名前。
-
新しい列識別子。 識別子はテーブル内で一意である必要があります。
-
フィールドの既存の完全修飾名。
-
新しいフィールド識別子。 識別子は、ローカル構造体内で一意である必要があります。
例
「ALTER TABLE」の「例」を参照してください。