父子关系,其中孩子可以属于不同的父母:设计方法

问题描述 投票:0回答:2

我有一种情况,我从SourceA,SourceB,SourceC ...... SourceN等多个来源获取数据。数据格式或每个源的内容可以不同。现在我需要处理来自多个源的这些数据,并为每个源示例“Col1,Col3,Col3,SourceIdentifier,sourceUniqueID”生成公共输出。现在我需要将此输出添加到某个表中,我们将此表称为processedoutput。现在我的问题是1)你可以看到我需要在Processedoutput表中确定哪一行属于哪个源,每个源的唯一ID(每个源有一个标识列作为主键)通过这两列我可以得到唯一的行,但我不想让2个键作为标识符,我只想要一个键,通过它我可以得到相同的答案。我也不想使用GUID列

2)如果我将这些数据存储在柱状数据库中,如redshift vs AZURE数据仓库。将2密钥作为记录的标识符或唯一标识符将具有任何性能问题

3)由于有一些BI工具,如功率BI不支持多个密钥作为连接条件,如何在powerBI中显示相同的数据(注意 - 我可以在powerBI中创建计算列并使连接成为单个键但我不想这样做)

谢谢Atul

database database-design amazon-redshift rdbms azure-sqldw
2个回答
0
投票

这是典型的维度构建问题,您希望将业务键转换为代理键。

您的临时表(可能是您正在调用的通用输出表)具有由两部分组成的业务键,包括SOURCE和ID。

您的目标表(我认为这是您的已处理输出)需要持有代理键和您的业务键。代理键是您将用于连接到其他表的ID,仍然需要业务键,以便您可以查找代理键。

您的目标表将如下所示:

  • surrogate_key(给它一个更好的名称,反映表的业务名称)
  • SOURCE_ID
  • source_unique_id
  • COL1
  • COL2
  • 产品

您可以使用IDENTITY列来创建新的surrogate_key值。 Redshift和Azure SQL数据仓库都支持身份。


0
投票

就像罗恩上面说的,

  1. 来源:1..n:来源A,B,C ...... N.
  2. 每种来源的来源格式都不同。
  3. 固定目标架构,即Dimension的表架构
  4. DW中的典型维度构建
  5. 如果维度类似于Customer,Product,那么我也称之为Master数据问题。
  6. 您可能需要外部参照表,然后是尺寸表。

除了Ron解决方案,检查文章或谷歌类似:

https://www.tek-tips.com/viewthread.cfm?qid=1636261

Design a dimension with multiple data sources

© www.soinside.com 2019 - 2024. All rights reserved.