gpt4 book ai didi

SQL/SSIS DataWareHouse 事实表加载,最佳实践?

转载 作者:行者123 更新时间:2023-12-02 13:29:38 24 4
gpt4 key购买 nike

我正在 SQL 2008/SSIS 中构建我的第一个数据仓库,并且正在寻找一些有关加载事实表的最佳实践。

目前,在我的 DW 中,我有大约 20 个属于 1 类 SCD 的维度(办公室、员工、产品、客户等)。在我的 dw 结构中,我已经应用了一些内容:

  • 无空值(在暂存期间替换为文本空白或数字 0)
  • 每个维度中填充的未知关键成员(SK ID 0)
  • UPSERT,用于从阶段到生产台的 SCD 类型 1 加载
  • 为我的尺寸加载选择 DISTINCT

在我的事实加载 SSIS 项目中,当前加载维度的方法是对每个 DIM 进行多次查找 (20+),然后用数据填充 FACT 表。

对于我设置的查找:

  • 完整缓存
  • 忽略“无匹配条目”的失败
  • 对每个 SK 使用“ISNULL(surrogate_idkey) ? 0 : surrogate_idkey”进行派生转换,这样,如果查找失败,它们将默认为 SK ID 0(未知成员)。
  • 我的一些维度查找具有多个业务键

这是最好的方法吗?所附图片有助于我上面的描述。

enter image description here enter image description here enter image description here

最佳答案

看起来不错。如果您开始遇到性能问题,有一些选择,但如果这是稳定的(在数据加载时间窗口内完成,源系统没有耗尽资源等),那么我认为没有理由进行更改。

需要关注的一些潜在问题...

  1. 如果您的维度大小增加,那么拥有 20 多个全缓存查找转换可能会出现问题...由于 SSIS 系统的内存限制...但由于它们是类型 1,我不会担心。
  2. 全缓存查找会在执行前“补充”...超过 20 个可能会减慢您的速度

一个常见的替代方案(上面的方案)是从源系统中提取事实表数据并将其放置在暂存区域中,然后再通过单个 SQL 语句进行维度键查找。有些甚至专门为此目的在暂存区中保留一组维度键映射表。这可以减少源系统上的锁定/阻塞...如果每次加载都有大量数据,并且在提取数据并通过 20 多个查找转换运行它时必须阻塞源系统。

当您拥有大量数据、大维度、复杂的键映射(通常由于多个源系统)以及较短的数据加载时间窗口时,制定良好的暂存区域策略就变得更加重要。

关于SQL/SSIS DataWareHouse 事实表加载,最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13169613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com