两个不同维度的衡量标准

时间:2011-11-26 18:54:34

标签: sql-server ssas olap

我有两个日期列的事实表:StartDate和FinishDate:

enter image description here

我有时间表,它与事实表有两种不同的关系。

我已根据时间表创建时间维度,并将此维度包含在我的多维数据集中:

enter image description here

因此,在结果中,我有两个不同的维度(Created_On和Updated_On),基于时间表。

现在我正在尝试浏览我的立方体,我想得到两个计数:在一段时间内创建的事实的数量和在同一时间段内更新的事实的数量。

我可以分别获得每一个,但不能同时:

enter image description here

我怎样才能得到它?我需要更改仓库结构吗?我需要更改我的立方体吗?或者在这种情况下我需要使用MDX吗?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:

  • 我在Facts表中有两个记录,一个是事实的开头,另一个是事实的结尾
  • 我在Facts表中有一个Time字段
  • 我在Facts表(A和B)中添加了两个int字段。这些字段的值对于起始记录是(1,0),对于完成记录是(0,1)。

所以,我有以下记录:

fact1 01.10.2011 1 0
fact1 04.10.2011 0 1
fact2 02.10.2011 1 0
fact2 10.10.2011 0 1

因此,总和(A)给出了每个日期的起始事实的计数。总和(B)给出了每个日期的结束事实的计数。

答案 1 :(得分:0)

MDX Calculated members是您正在寻找的。我们需要的是改变'来自'开始'的维度到达'完成'日期。如何将开始日期转换为完成日期?

我们可以使用字符串操作并手动更改'维度的名称:

StrToMember(  REPLACE( [StartDate].currentmember.uniqueName, "StartDate", "FinishDate" )

如果这两个日期维度共享其结构,则会将成员从“开始日期”更改为'完成约会'尺寸。

现在我们可以通过创建一个元组来创建我们的度量:

WITH MEMBER [MyMeasureOnFinishDate] AS ([Measure].[MyMeasure], [StartDate].defaultmember,StrToMember(REPLACE([StartDate].currentmember.uniqueName, "StartDate", "FinishDate" )

它没有经过测试,但你知道如何解决这个问题