如何使用维度中的代理键填充事实数据表



您能否帮助了解如何使用维度中的代理键填充事实表。

我有以下事实数据表和维度:

索赔事实

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中的原始表有它)

我将数据加载到事实数据表中的逻辑如下:

  1. 首先,我将数据加载到维度中(代理键创建为标识列)
  2. 从事务模型 (OLTP) 中,事实数据表将填充度量值(ClaimNbr 和 ClaimAmount)

  3. 我不知道如何使用维度的 SK 填充事实表,如何知道将我从维度中提取的键放在哪里到事实表中的哪一行(哪个键属于此声明NBR? 我是否应该在所有维度中添加合约 Nbr,并在将键加载到事实时将它们连接在一起?

正确的方法是什么? 请帮忙, 谢谢

它通常的工作方式:

  1. 在您的维度中,您将拥有"自然密钥"(又名"业务密钥")- 来自外部系统的密钥。例如,合同编号。然后,为表创建合成(代理项)键。
  2. 在事实数据表中,所有键最初也必须是"自然键"。例如,合同编号。要连接到事实数据表的每个维度都必须存在此类键。有时,一个维度可能需要多个自然键(它们共同表示维度表"粒度"级别)。例如,如果在州-城市级别建模,则位置可能需要州和城市键。
  3. 将 dim 表连接到自然键
  4. 上的事实表,并从结果中省略事实中的自然键,并从 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

相关内容

  • 没有找到相关文章

最新更新