MDX问题将维度分组与事实表

时间:2015-09-22 12:22:45

标签: ssas mdx

我是SSAS和MDX的新成员。我们的数据结构如下:

FactTable(医疗案例):

ID | Date | Result Test A | Result Test B | Patient ID

1 | 1.9.15 | 1 | -1 | Patient_1

2 | 1.9.15 | -1 | 1 | Patient_1

3 | 1.9.15 | 1 | -1 | Patient_2

4 | 1.9.15 | 0 | -1 | Patient_2

5 | 1.9.15 | -1 | 0 | Patient_2

每个案例的结果都是测试a或测试b。案例可能包含测试a和测试b的结果,但在大多数情况下,测试a的结果被填充,测试b的结果为空或反转。

患者维度:

ID | Firstname | Lastname | Date of Birth

1 | Max | Mustermann | 1.9.1989

2 | Tina | Mustermann | 1.9.1989

已更新

我已添加结果维度

结果测试维度:

ID | Name

-1 | Undefined

 0 | Negative

 1 | Positive

 2 | Suspect

结果测试B维度:

ID | Name

-1 | Undefined

 0 | Negative

 1 | Positive

我们之间有一个外键关系

  1. [FactTable]。[患者ID]和[患者]。[ID]
  2. [FactTable]。[结果测试A]和[结果测试A] .ID
  3. [FactTable]。[结果测试B]和[结果测试B] .ID
  4. 除了这个结构,我们还有列日期的维度。

    我们的测量结果:

    1. [测量]。[案例数](依据[FactTable]。[ID])
    2. [测量]。[患者人数](依据[FactTable]。[患者ID])
    3. 我们的问题是我们想要为患者数量创建一个度量,并将其与结果相结合。因此,当我们过滤结果测试A和结果测试B时,我们得到以下结果。

      Number of Patients (Filter: [Result Test A].Positive, [Result Test B].Positive) -> 1 
      
      Number of Patients (Filter: [Result Test A].Negative, [Result Test B].Negative) -> 1
      
      Number of Patients (Filter: [Result Test A].Positive) -> 2
      
      Number of Patients (Filter: [Result Test B].Positive) -> 1
      

      我不知道如何实现这项测量。这甚至是可能的,还是我必须为患者创建另一个FactTable?

1 个答案:

答案 0 :(得分:1)

我对您的FactTable感到困惑,结果测试是否有措施?你如何处理FactTables中的字符串?

此代码未经过测试,但您可以尝试:创建查询成员

编辑:添加了未经测试的代码,我对您的多维数据集结构一无所知,所以我猜了一下。

WITH MEMBER [Measures].[Patients Results A] AS
  Sum
  (
    [Patient].[PatientID].[PatientID]
    , IIf
    (
      ( [Measures].[Medical Case Ms], [Result A].[Name].CurrentMember ) = NULL
      , NULL
      , 1
    )
  )
MEMBER [Measures].[Patients Results B] AS
  Sum
  (
    [Patient].[PatientID].[PatientID]
    , IIf
    (
      ( [Measures].[Medical Case Ms], [Result B].[Name].CurrentMember ) = NULL
      , NULL
      , 1
    )
  )
MEMBER [Positive A] AS
  ( [Measures].[Patients Results A], [Result A].[Name].&[1] )
MEMBER [Positive B] AS
  ( [Measures].[Patients Results B], [Result B].[Name].&[1] )
MEMBER [Positive A&B] AS
  ( [Positive A] + [Positive B] )
SELECT
{ [Positive A], [Positive B], [Positive A&B] } ON COLUMNS
FROM [Cube]

在上面的代码中创建了积极A和积极B度量的成员,您必须为您在问题中指定的度量创建缺少的成员。如果这有用,请告诉我