数据仓库事实表外键生成

Posted

技术标签:

【中文标题】数据仓库事实表外键生成【英文标题】:Data warehouse Fact table foreign key Generation 【发布时间】:2021-12-28 04:59:29 【问题描述】:

我是数据仓库设计的新手。 我有一个如下所示的数据库。

https://webpages.charlotte.edu/mirsad/itcs6265/group1/domain.html

我打算创建一个如下所示的简单数据仓库。

但我现在面临的问题是 Fact 表中没有 ClientId 和 LoanId。因为在原始数据库中,它是通过 Account 表连接的。 我正在尝试通过 SQL 服务器来实现这一点。有人可以告诉我如何解决这个问题。

【问题讨论】:

所以你只需要通过Account表加入就可以得到你需要的ID 【参考方案1】:

如果您想创建 FactTransaction 事实表,则不需要 Loan,因为它代表一个事实,因此 Transaction 和 Loan 是两个不同的操作,就像数据字典中提到的那样:

TRANSACTIONS (TRANS) 每条记录描述一个事务 帐号

LOANS 每条记录都描述了为给定帐户授予的贷款

如果我们为每个设计遵循单独的上下文,则设计可能如下所示:

数据集市交易:

数据集市贷款:

填充 FactTransaction 的查询如下所示:

SELECT T.account_id AS TransactionID, C.client_id AS ClientID,
A.account_id AS AccountID
FROM Transactions AS T
LEFT JOIN Account AS A ON A.account_id=T.account_id
LEFT JOIN Disposition AS D ON A.account_id=D.account_id
LEFT JOIN Client AS C ON C.client_id=D.client_id

AccountID、TransactionID、ClientID 表示复合键,用于唯一标识事实表中的元组事务。

填充 FactLoan 的查询如下所示:

 SELECT L.account_id AS LoanID, C.client_id AS ClientID,
A.account_id AS AccountID
    FROM Loan AS L
    LEFT JOIN Account AS A ON A.account_id=A.account_id
    LEFT JOIN Disposition AS D ON A.account_id=D.account_id
    LEFT JOIN Client AS C ON C.client_id=D.client_id

AccountID、LoanID、ClientID 表示复合键,用于唯一标识事实表中的元组事务。

不要忘记实现 DimDate。

【讨论】:

Amira:您是如何得出这些交易不适用于贷款,因此不需要 Loans Dim 的结论的?你似乎对这个问题做了一些没有根据的假设,然后花了很多精力回答一个没有被问到的问题 @NickW 我查看了他提供的链接并试图了解业务需求。 @AmiraBedhiafi 感谢您的回复。您能否确认您提出的上述设计是否达到以下要求。 ?webpages.charlotte.edu/mirsad/itcs6265/group1/next_steps.html @suresh_chinthy 是的,有一些改进

以上是关于数据仓库事实表外键生成的主要内容,如果未能解决你的问题,请参考以下文章

hive建立数据仓库 事实表的外键和维度表主键怎么关联 啥命令

BI:事实表设计/数据仓库建模

关于数据仓库的基本问题

数据仓库星型模式事实表?你怎么知道里面有啥

识别数据仓库设计中的事实表

在数据仓库(关系)中有外键是一种好习惯吗?