匹配[DimTime]表和事实表?

时间:2014-10-13 21:56:55

标签: sql-server-2008 ssas data-warehouse business-intelligence bids

我是BI初学者,所以请耐心等待。

我有一个事实表[Fact15MinData],如下所示:

Cell      Date      Hour  Minute   Counter1   Counter2
Cell1_1   20141001  2     15       2.4        4.5
Cell1_1   20141001  2     30       4.5        39.2
Cell1_1   20141001  3     45       1.5        3.2   
Cell1_1   20141001  5     00       3.5        9.2   

我的[DimTime]表格如下:

ID      Time        Hour    Minute  Second  AmPm
1       00:00:00    0       0       0       AM
901     00:15:00    0       15      0       AM
1801    00:30:00    0       30      0       AM
2701    00:45:00    0       45      0       AM
3601    01:00:00    1       0       0       AM
4501    01:15:00    1       15      0       AM

如何将我的[DimTime]表格与我的[FactData]表格相匹配?

3 个答案:

答案 0 :(得分:0)

在DataSourceView中创建复合键关系(小时和分钟),这两列应显示在多维数据集的“维度用法”选项卡中。

ssas compound dimension key

答案 1 :(得分:0)

你的事实表上不应该有小时和分钟,而只是DimTime的密钥ID。

在您的ETL上,您需要通过匹配小时和分钟来查找行并返回ID,或者将其重命名为time_id。

任何ETL工具都应该提供一种在维度中查找值的方法。例如,在Pentaho数据集成中,您可以使用数据库查找或组合查找/更新步骤。

答案 2 :(得分:0)

因为你想在Fact15MinData(具有计数器数据)和DimTime之间建立链接,DimTime是ID,时间,小时,分钟,秒,AmPm的组合。因此,您可以通过计算小时和分钟来建立两者之间的关系,但是当您将AmPm作为cloumn时,您将在DimTime中为小时和分钟的特定组合创建2条记录。所以要解决此问题,您可以添加12到当AmPm的值为Pm时,表示两个表之间的关系为1-1。

但是正如nsousa和Tab Alleman所建议的那样,你不应该将dimention表中的值存储到事实表中,所以你应该为你的两个表都有以下结构:

  • Fact15MinData:Cell-Date-DimTime_ID-Counter1-Counter2
  • DimTime:ID-时间小时 - 分 - 秒 - AMPM