我正在使用类似this的东西来创建 Dataframe 。然后,我使用类似下面的方法将其保存在delta表中。
diamonds_with_schema.write.format("delta").saveAsTable(saveLocation)
字符串我的问题是如何使列作为主键。另外,如何使一个具有两个或多个列的聚集主键。
yvt65v4c1#
如果你使用的是Databricks,有一个部分解决方案。Public Preview中有primary key支持声明主键和外键关系主键和外键约束在Databricks Runtime 11.1及更高版本中可用。主键和外键约束需要Unity Catalog和Delta Lake。您可以对Unity目录表中的字段使用主键和外键关系。主键和外键仅供参考,不强制使用。外键必须引用另一个表中的主键。可以在创建表的过程中将主键和外键声明为表规范子句的一部分。在CTAS报表中不允许使用此条款。还可以向现有表添加约束。
Databricks
primary key
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL, CONSTRAINT t_pk PRIMARY KEY(pk1, pk2)); CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY, fk1 INTEGER, fk2 INTEGER, CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
字符串您可以查询information_schema或使用DESCRIBE来获取有关如何跨给定目录应用约束的详细信息。https://docs.databricks.com/tables/constraints.html信息性主键和外键约束对表中字段之间的关系进行编码,并且不强制执行。
1条答案
按热度按时间yvt65v4c1#
如果你使用的是
Databricks
,有一个部分解决方案。Public Preview中有primary key
支持声明主键和外键关系主键和外键约束在Databricks Runtime 11.1及更高版本中可用。
主键和外键约束需要Unity Catalog和Delta Lake。
您可以对Unity目录表中的字段使用主键和外键关系。主键和外键仅供参考,不强制使用。外键必须引用另一个表中的主键。
可以在创建表的过程中将主键和外键声明为表规范子句的一部分。在CTAS报表中不允许使用此条款。还可以向现有表添加约束。
字符串
您可以查询information_schema或使用DESCRIBE来获取有关如何跨给定目录应用约束的详细信息。
https://docs.databricks.com/tables/constraints.html
信息性主键和外键约束对表中字段之间的关系进行编码,并且不强制执行。