2016-11-10 111 views
0

我正在嘗試編寫MDX查詢以返回有關調查問題的一些信息。我希望在我的結果中獲得平均回覆和總回覆。我有兩種類型的問題。一類問題只有一個答案。另一類問題可以有多個答案(選擇所有適用的答案)。每個問題都與問題ID和答覆者ID相關聯。下面的查詢工作(有點)如何獲得SSAS MDX查詢中的不同維度值的計數

Select NON EMPTY 
    { 
    [Measures].[Average Response], [Measures].[Total Count] 
    } ON 0 
, NON EMPTY 
    { 
    ([Question].[Question ID].[Question ID].ALLMEMBERS) 
    } ON 1 
From [Cube] 

平均響應是從單反應和多個響應(兩個不同的事實表)的組合。總數也是這兩個表的組合。問題是,對於單個回答問題,我只能計算回答者的數量。對於多重回答問題,由於我的答案比我參加問卷調查的人多,因此這些問題會下降。我真的很想知道有多少人提供了答案。要做到這一點,我認爲我需要不同數量的受訪者ID。所以我試着改變我的第一軸。

[Measures].[Average Response], [Measures].[Total Count], DISTINCTCOUNT([Respondent].[Respondent ID]) 

那麼,這是行不通的,我真的沒有想到它。我得到了「該函數需要3個參數的元組表達式,使用了字符串或數字表達式。」這正在迅速成爲我最喜歡的SSAS錯誤消息。我仍然是綠色的,我想我仍然在思考SQL。如何在同一查詢中獲得平均響應和不同維度值的計數。順便說一句,我的查詢確實有一個切片機,如果需要,我可以提供,但我不認爲它是相關的,因爲我在切片機或不切片機的情況下得到相同的問題。

回答

0

使用MDX DistinctCount函數時,它返回給定數據集中不同的非空元組的數量。也許嘗試做這樣

DistinctCount({[Respondent].[Respondent ID].members * [Measures].[Total Count]})

這樣的東西你與數據集(例如{...})工作的方式。

如果您使用的是較大的一組數據,那麼您可能需要考慮創建一個Distinct Count度量。 DistinctCount函數本身是SSAS公式引擎查詢,而使用Distinct Count measure則允許Analysis Services同時使用存儲引擎和公式引擎。欲瞭解更多信息,請參閱Analysis Services Distinct Count Optimization

+0

我嘗試了你所說的,並且得到了我最喜歡的消息_「該函數需要1個參數的元組集合表達式,使用了一個字符串或數字表達式。」_另外,如果我嘗試將它與平均值一起使用我得到_「成員,元組或集合必須在函數中使用相同的層次結構。」令人沮喪的部分是我確切知道如何在SQL中執行此操作。 –

+0

我可以同情 - 我對MDX本人仍然很不好,現在已經在做SSAS了;-)。說到這一點,當你運行'distinctcount'函數時,當你手動創建一個集合時會發生什麼,例如'答覆者] [答卷人ID],[Q1],[答辯人]。[答辯人身份證號碼]。[Q2],[答辯人]。[答辯人身份證號碼]。[Q3]}' '(根據情況更新問題成員)並查看是否可以收到回覆? –