【问题标题】:Parent child relationship where a child can belong to different parent: design approach一个孩子可以属于不同父母的父子关系:设计方法
【发布时间】:2019-02-01 14:32:35
【问题描述】:

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

2) 如果我将此数据存储在列式数据库中,例如 redshift 或 AZUER 数据仓库。将 2 键作为记录的标识符或唯一标识符会有任何性能问题

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

谢谢 阿图尔

【问题讨论】:

  • 我在您的数据或描述中没有看到任何关于父母和孩子的信息。我错过了什么吗?
  • 对不起,如果我无法澄清自己。但是所有的源表都作为父表,处理后的输出表是具有多个源表的子表

标签: database database-design amazon-redshift rdbms azure-sqldw


【解决方案1】:

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

您的暂存表(可能是您称为 commonoutput 的表)有一个由两部分组成的业务键,包括 SOURCE 和 ID。

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

您的目标表将如下所示:

  • surrogate_key(给它一个更好的名称,以反映表的公司名称)
  • source_id
  • source_unique_id
  • col1
  • col2
  • col3

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

【讨论】:

    【解决方案2】:

    就像罗恩上面说的,

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

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

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

    Design a dimension with multiple data sources

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2015-02-23
      • 2018-01-15
      相关资源
      最近更新 更多