您能否帮助了解如何使用维度中的代理键填充事实表。
我有以下事实数据表和维度:
索赔事实
ContractDim_SK ClaimDim_SK AccountingDim_SK 索赔Nbr 索赔金额
合同暗淡
ContractDim_SK (PK) ContractNbr(BK) 报告期(BK) 法典 名字
会计昏暗
TransactionNbr(BK) 报告期(PK) 交易代码 货币代码 (我应该在这里添加ContractNbr吗??OLTP中的原始表有它)
索赔暗淡
CalimsDim_Sk(PK) 卡利姆· (BK) 报告期(BK) 索赔描述 声明名称 (我应该在这里添加ContractNbr吗??OLTP中的原始表有它)
我将数据加载到事实数据表中的逻辑如下:
- 首先,我将数据加载到维度中(代理键创建为标识列)
-
从事务模型 (OLTP) 中,事实数据表将填充度量值(ClaimNbr 和 ClaimAmount)
-
我不知道如何使用维度的 SK 填充事实表,如何知道将我从维度中提取的键放在哪里到事实表中的哪一行(哪个键属于此声明NBR? 我是否应该在所有维度中添加合约 Nbr,并在将键加载到事实时将它们连接在一起?
正确的方法是什么? 请帮忙, 谢谢
它通常的工作方式:
- 在您的维度中,您将拥有"自然密钥"(又名"业务密钥")- 来自外部系统的密钥。例如,合同编号。然后,为表创建合成(代理项)键。
- 在事实数据表中,所有键最初也必须是"自然键"。例如,合同编号。要连接到事实数据表的每个维度都必须存在此类键。有时,一个维度可能需要多个自然键(它们共同表示维度表"粒度"级别)。例如,如果在州-城市级别建模,则位置可能需要州和城市键。 将 dim 表连接到自然键
- 上的事实表,并从结果中省略事实中的自然键,并从 dim 中选择代理键。我通常执行左联接(事实左联接暗淡),以控制不匹配的记录。我还一个接一个地加入调光(以更好地控制正在发生的事情)。
基本示例(使用 T-SQL)。假设您有以下 2 个表:
Table Source.Sales
( Contract_BK,
Amount,
Quantity)
Table Dim.Contract
( Contract_SK,
Contract_BK,
Contract Type)
要交换密钥:
SELECT
c.Contract_SK
,s.Amount
,s.Quantity
INTO
Fact.Sales
FROM
Source.Sales s LEFT JOIN Dim.Contract c ON s.Contract_BK = c.Contract_BK
-- Test for missing keys
SELECT
*
FROM
Fact.Sale
WHERE
Contract_SK IS NULL