【发布时间】:2010-06-10 12:29:57
【问题描述】:
最近我一直在做一个项目,需要从 EDW 表填充 Dim 表。
EDW 表属于 II 类,可维护历史数据。加载 Dim Table 时,其来源可能是多个 EDW 表,也可能是具有多级透视(在属性上)的单个表。
平均值:将有 10 条记录 - 每个属性一个,需要在 domain_code 上进行旋转以在 Dim 中形成单行。在这 10 条记录中,会有一些属性具有相同的 domain_code 但具有不同的 sub_domain_code,这需要进一步针对子域代码进行透视。
例如:
如果我得到域代码:01,02, 03 => 它们是域代码的直接支点 我还会有域代码:10,子域代码/版本为 2006,2007,2008,2009
这意味着我需要将具有上述属性的源表拆分为两个 => 一个用于域代码,另一个用于域代码 + 版本。
到目前为止一切顺利。
在加载 Dim Table 时:
根据Dimensions的设计规范(最初由第三方编写),他们想要的是:
对于 EDW(属性)中的每一次更改,它应该组合所有相关记录(对于该 NK)意味着新记录与其他当前属性值 => 处理它们以创建新的暗记录并插入它。
这意味着如果单个数据提取包含更新的 100 条记录(每个 NK 一条),它应该组合 100 + (100*9) 条记录来插入/更新暗表。这种方法有多好。
我尝试做的其他方法是查找该 NK 的暗表,获取最近记录的值(未更改的属性)并将其插入并更新当前记录。
在源端为一个属性更改组装记录或查看暗表的最近记录并处理它的更好方法是什么。
如果这没有意义,想进一步阐述。
谢谢
这是表格的模型
【问题讨论】:
-
抱歉,我很难理解这里发生了什么。也许你可以详细说明一些。在我的书中,dimTable 是一个维度表,它是 EDW(企业数据仓库)的一部分。也许您可以发布某种模型并使用示例来解释问题。
-
我同意,如果您可以发布带有示例数据和输出的源和目标表模式的相对简单版本(实际上可能是维度人们所期望的中间模式),我认为我们可以提供帮助更容易。
-
对不起,当我说 edw table 时,它意味着我暂存了构建数据集市的表。是的,我会尽快发布模型。谢谢
标签: sql-server data-warehouse dimensions datamart