我正在 SQL 2008/SSIS 中构建我的第一个数据仓库,并且正在寻找一些关于加载事实表的最佳实践。
目前在我的 DW 中,我有大约 20 个属于 1 类 SCD 的维度(办公室、员工、产品、客户等)。在我的 dw 结构中,我已经应用了一些东西:
- 无 Nulls(在暂存期间替换为文本的空白或数字的 0)
- 每个维度中填充的未知关键成员(SK ID 0)
- UPSERT 用于从舞台到生产台的 SCD 类型 1 装载
- SELECT DISTINCT 加载我的维度
在我的事实加载 SSIS 项目中,我加载维度的当前方法是对每个 DIM 进行多次查找 (20+),然后用数据填充 FACT 表。
对于我的查找,我设置:
- 全缓存
- 忽略“没有匹配条目”的失败
- 每个 SK 使用“ISNULL(surrogate_idkey) ? 0 : surrogate_idkey”派生转换,这样如果查找失败,它们将默认为 SK ID 0(未知成员)。
- 我的一些维度查找有多个业务键
这是最好的方法吗?附上的图片有助于我上面的描述。