数据仓库设计 - 多个查找值

时间:2018-02-07 21:26:00

标签: sql-server data-warehouse star-schema schema-design

寻找数据仓库架构设计的输入。这是场景:

我有一个基于UserId加入的操作表和用户表,以获取有关执行操作的用户的详细信息。

Action Table:
    UserId   Action
    123      Test001

User Table:
    UserId    UserName
    123       Adam

现在,我们必须将用户迁移到新的用户管理系统(UMS),以下是它的工作原理:

  1. 现有用户将迁移到UMS,新的UserId(我们将其称为现代UserId,现有UserId称为Legacy UserId)将被分配。因此,新操作的新记录将带有新的UserId。
  2. 在UMS中创建的新用户只会运行Modern UserId和Legacy UserId。
  3. 迁移的用户将同时拥有Legacy UserId和Modern UserId。
  4. 现在,当我们进行报告时,我们必须公开历史和新的行动数据。想知道什么应该是理想的架构设计,以便我们可以报告历史和&新操作并将它们映射到正确的用户。

    平台:SQL Server 2016,Analysis Services

    如果您需要更多详细信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

您尚未向我们提供有关如何完成此操作的详细信息,因此sql-server标记对我们没有任何帮助。这更像是一个建模问题。

当您谈到列的新ID时,必须在创建所述密钥期间采取某种方式来确保完整性,该过程将在某种程度上决定您必须提供解决方案的方法。

User表看起来是一个唯一值表,并且创建了“Modern Key”,如果您可以编辑此表,则应在此处添加“legacy key”。这成为您的映射表,映射表不必是单独的对象。

答案 1 :(得分:0)

同意之前的回答。当您的上游团队执行向UMS的迁移时,他们应该以某种方式保留旧版用户ID和现代用户ID之间的映射。在仓库的下游,我建议您将两个ID保存在用户维度表中,但在此表中生成一个代理键,该代理键将用作主键(它可以只是一个增量整数)。这样,您可以将代理键用作Action事实表中的外键,无论用户是现代用户还是旧用户。

以下是我的表格数据模型设计建议:

DIM_USER
- USER_KEY (pk)
- USER_ID
- USER_ID_LEGACY
- USERNAME
- ....

DIM_ACTION
- ACTION_KEY (pk)
- ACTION
- ....

FACT_ACTION
- USER_KEY
- ACTION_KEY
- ....