web-dev-qa-db-ja.com

Databricksで列の名前を変更する方法

Databricksの列の名前をどのように変更しますか?

以下は機能しません。

ALTER TABLE mySchema.myTable change COLUMN old_name new_name int

それはエラーを返します:

ALTER TABLE CHANGE COLUMNは、タイプ 'IntegerType>(nullable = true)'の列 'old_name'をタイプ 'IntegerType(nullable = true)'の 'new_name'に変更することはサポートされていません。

違いがある場合、このテーブルはDelta Lakeを使用しており、この「old_name」列によってパーティション化またはzオーダーされていません。

3
David Maddox

Databricksで列のデータ型の名前を変更または変更することはできません。新しい列を追加したり、列を並べ替えたり、列のコメントを追加したりするだけです。これを行うには、overwriteSchemaオプションを使用してテーブルを書き換える必要があります。

以下の例を このドキュメント から取得します。

spark.read.table(...)
  .withColumnRenamed("date", "date_created")
  .write
  .mode("overwrite")
  .option("overwriteSchema", "true")
  .table(...)
5
LeandroHumb