在我从OLTP数据库构建的全新数据仓库中,我删除了所有IDENTITY列并将其更改为INT列。
关于以下内容的最佳做法是什么,特别是因为仓库是非规范化的:
答案 0 :(得分:1)
对于您的主键,请考虑使用代理键或备用键;你需要迎合缓慢变化的尺寸,例如:如果您在过去5年内对已婚/未婚销售人员的平均销售情况进行报告,您需要注册一个事实,即某人未婚2年,然后结婚3年。这意味着您的数据仓库将为同一个人提供两个维度表行。遵循OLTP结构将很难:)
约束不是问题; DW针对读取进行了大量优化(假设您作为批处理填充),并且约束并不真正考虑读取操作。您通常可以解决DW填充作业的任何约束问题,并在必要时在报告工具处理空值等。确保默认值适合您的概念数据模型更重要,并且不会在DW客户端工具中引入问题。
答案 1 :(得分:1)
对于尺寸表:
WHERE
子句中有函数,则在维度表中添加一列并预先计算值。对于事实表:
考虑使用代理自动增量(标识)PK以允许轻松分区,如果使用复合PK,则可以使复合唯一非群集代替。
将外键的脚本放在安全的地方,通常的做法是在加载事实表之前删除键以加快加载速度。有些人使用外键运行DW是“仅逻辑”,他们在加载后使用“查找孤立”查询。
<强> ETL 强>
答案 2 :(得分:0)
我会说约2: 位列 - &gt;像bool cols一样工作 - &gt;仅允许1/0(真/假) - &gt;约束好的