Delta 默认列值
Delta 允许为 Delta 表中的列指定默认表达式。当用户在写入这些表时未明确提供某些列的值,或者当他们明确为某个列使用 DEFAULT SQL 关键字时,Delta 会自动为这些列生成默认值。
此信息存储在对应于相关列的StructField中。
如何启用 Delta Lake 默认列值
标题为“如何启用 Delta Lake 默认列值”的部分您可以通过将 delta.feature.allowColumnDefaults 设置为 enabled 来为表启用默认列值
ALTER TABLE <table_name> SET TBLPROPERTIES (  'delta.feature.allowColumnDefaults' = 'enabled')如何在 SQL 命令中使用默认列
标题为“如何在 SQL 命令中使用默认列”的部分- 
对于执行表写入的 SQL 命令,例如 INSERT、UPDATE和MERGE命令,DEFAULT关键字将解析为相应列最近分配的默认值(如果不存在默认值,则为 NULL)。例如,以下 SQL 命令将使用表中第二列的默认值:INSERT INTO t VALUES (16, DEFAULT);
- 
INSERT 命令还可以指定少于目标表的列列表,在这种情况下,引擎将为其余列分配默认值(对于尚不存在默认值的任何列,则为 NULL)。 
- 
将新列添加到现有表的 ALTER TABLE ... ADD COLUMN命令可能不会为新列指定默认值。例如,Delta Lake 不支持以下 SQL 命令:ALTER TABLE t ADD COLUMN c INT DEFAULT 16;
- 
但是,允许为在先前命令中创建的列分配或更新默认值。例如,以下 SQL 命令是有效的: ALTER TABLE t ALTER COLUMN c SET DEFAULT 16;