cancel
Showing results for 
Search instead for 
Did you mean: 
Data Engineering
cancel
Showing results for 
Search instead for 
Did you mean: 

Update data type of a column within a table that has a GENERATED ALWAYS AS IDENTITY-column

Abbe
New Contributor II

I want to cast the data type of a column "X" in a table "A" where column "ID" is defined as GENERATED ALWAYS AS IDENTITY.

Databricks refer to overwrite to achieve this: https://docs.databricks.com/delta/update-schema.html

The following operation:

(spark.read.table('A')

 .withColumn("X", col("X").cast("string"))

 .write

 .mode("overwrite")

 .option("overwriteSchema", "true")

 .saveAsTable('A')

)

Returns this error message:

AnalysisException: Providing values for GENERATED ALWAYS AS IDENTITY column ID is not supported.

How can I cast columns for tables with GENERATED ALWAYS AS IDENTITY-columns? The same applies to renaming columns.

1 REPLY 1

Abbe
New Contributor II

Looks like it works when using GENERATED BY DEFAULT AS IDENTITY instead. There's no way of updating the schema from GENERATED ALWAYS AS IDENTITY to GENERATED BY DEFAULT AS IDENTITY, right? I have to create a new table (and then insert it with data from old table)?

Welcome to Databricks Community: Lets learn, network and celebrate together

Join our fast-growing data practitioner and expert community of 80K+ members, ready to discover, help and collaborate together while making meaningful connections. 

Click here to register and join today! 

Engage in exciting technical discussions, join a group with your peers and meet our Featured Members.