2015-09-22 34 views
0

我是SSAS和MDX的新成員。我們有數據的結構如下: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 

每個案件有任何的測試或測試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

除此結構外,我們還有列日期的維數。

我們的測量,我們有:

  1. [測定] [例數](在[FactTable]計算[ID])
  2. [測量] [患者的數量](計數上。 [FactTable]。[病人ID])

我們的問題是,我們想創建一個患者人數測量值並將其與結果結合起來。所以,我們得到當我們過濾VOR結果測試一淘測試結果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?

+0

我從你的問題的理解是你正在尋找結果集維度的行數,這就是爲什麼你沒有一個數字度量。我建議你在事實表中添加兩個數字字段(每個維度一個),如果結果集爲正值,則插入值1,否則爲0。當您瀏覽某個維度的多維數據集時,此值的總和會爲您提供結果。 – Niraj

+0

我已經爲結果添加了我們的維度結構。你能舉個例子嗎? – nop

回答

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措施的成員,你必須爲你創造你的問題規定的措施缺少的成員。讓我知道這是否有幫助

+0

感謝您的建議。 FactTable在我們真正的解決方案中不包含字符串。 「結果」列包含維度的鍵,其中包含結果的可能值。 我們有兩種測量方式: 1.結果數量 2.患者數 – nop

+0

對不起我的意思如下測量: 1例(計數上FactTable.ID) 2.患者數數(計對患者.ID) – nop

+1

你如何衡量結果?分享結果尺寸結構 –