Ssis 将具有重复值的DIM表与事实关联

Ssis 将具有重复值的DIM表与事实关联,ssis,ssas,row-number,Ssis,Ssas,Row Number,我有一个带两列的DIM(DIM.ReceiptType): ReceiptID和ReceiptType ReceiptType有2个值:1或0,因此ReceiptID在列中至少重复2次。 事实表中存在具有相同值的相同列 在SSIS或SSAS中,是否有一种优雅的方式将ReceiptType从DIM连接到ReceiptType? 我一直在考虑这个解决方案:如果这两个表具有相同的列和#个值,也许我会指定一个行号作为连接键。 这是一个好的解决方案吗?如果是这样的话,请帮助我们正确地完成它。我认为我们在这

我有一个带两列的DIM(DIM.ReceiptType): ReceiptID和ReceiptType ReceiptType有2个值:1或0,因此ReceiptID在列中至少重复2次。 事实表中存在具有相同值的相同列

在SSIS或SSAS中,是否有一种优雅的方式将ReceiptType从DIM连接到ReceiptType? 我一直在考虑这个解决方案:如果这两个表具有相同的列和#个值,也许我会指定一个行号作为连接键。
这是一个好的解决方案吗?如果是这样的话,请帮助我们正确地完成它。

我认为我们在这里面临一个设计问题。基本上有两种方法可以解决这种情况:

一,。 数据仓库中的所有维度都应该有“代理”(人工)键,这样您就可以避免类似的情况,例如,当您获得具有不同属性集的自然键(随事实而来的)的副本时

代理键通常是这样工作的:在接收事实数据时,隔离维度属性的各种组合(在本例中为
ReceiptID
ReceiptType
对),并将它们放入一个带有
标识
列的表中。完成此操作后,您将执行一个或一个
连接
(取决于您是通过ETL层还是直接在SQL中工作),以将事实中的值与您刚才添加的特定维度成员相匹配

其中一个例子对此进行了更深入的解释。如果你不是金球迷,你可以在互联网上的任何地方查看“代理键”的概念

二,。 (并在上面进行了一些扩展)
可能是您试图移动到专用维度中的值的粒度与事实的粒度相似,即您通常会有一个ReceiptID正好匹配一个事实行。在这种情况下,创建专用维度没有多大好处,您可能只想分离ReceiptType,将事实表中的ReceiptID保留为,或者将其与其他不相关的属性一起移出事实表。此外,SSAS还支持退化维度,因此您可以选择避免对ETL逻辑进行重大更改。

您是否尝试过使用缓慢变化的维度转换来加载维度表。事实表也是一系列代理键查找。您的查找将有一系列的查找转换,其中传入备用键并返回代理键使用针对维度表的查找转换标识列对我来说是最好的解决方案,因为事实和Dim表使用公共源。