我试图通过另外指定表的主键在redshift中使用CTAS子句复制表。
尝试下面的语法,但没有运气。但是,我能够使用相同的语法指定DISTKEY / SORTKEY
create table date_dim
PRIMARY KEY(date_key)
--DISTKEY ( date_key )
as
select date_key,
calendar_date,.....;
我想使用主键作为我在流程中设计的合并逻辑的一部分。
TIA!
很多人认为Redshift中的主键和外键是反模式的(因为它们没有被强制执行),但我的团队构建了一个支持这种情况的小工具(Python脚本)。
您在正常的SQL文件中编写select
语句,在YAML配置文件中定义主键,外键,distkey等,然后使用该脚本生成(并可选地执行)SQL以创建和填充表。
我们还包括一个Airflow运算符,使其易于安排和自动化。
回购是here,我们写了更多关于它on our team blog
Redshift不支持主键和外键约束:http://docs.aws.amazon.com/redshift/latest/dg/t_Defining_constraints.html
您只能在CTAS中指定distkey和sortkey。以下链接描述了您可以指定Redshift CTAS的所有选项