在Redshift维度表中创建默认值行以防止报告中出现空值

时间:2016-06-22 17:02:43

标签: data-warehouse amazon-redshift

我正在移植数据仓库架构和MySQL的默认数据加载,用于初始开发到Redshift进行生产。初始默认数据在维度表中创建为一行,并在自动增量列中按http://www.kimballgroup.com/2010/10/design-tip-128-selecting-default-values-for-nulls/设置-1值。

将架构移动到Redshift后,应将该列更改为auto_increment中的标识,以保留数据库主键生成,但这不再允许插入标识列返回

ERROR: cannot set an identity column to a value
SQL state: 0A000

ETL加载作业是否应该负责在此实例中自动递增维度键,还是有另一个用于创建插入值?

1 个答案:

答案 0 :(得分:0)

据我所知,覆盖自动生成的值不适用于INSERT。如果您可以将数据上传到S3,则可以使用Redshift的COPY命令将S3中的数据加载到表中。它让你指定选项EXPLICIT_IDS,例如:

COPY your_table from 's3://path_to_your/data.csv' CREDENTIALS '' EXPLICIT_IDS;

来自documentation

  

如果要使用表的源数据文件中的显式值覆盖自动生成的值,请将EXPLICIT_IDS与具有IDENTITY列的表一起使用。如果该命令包含列列表,则该列表必须包含IDENTITY列才能使用此参数。 EXPLICIT_IDS值的数据格式必须与CREATE TABLE定义指定的IDENTITY格式匹配。