Ssas
MDX 計算成員以帶度量
我正在嘗試將計算成員添加到 MDX 查詢中,該查詢將為我的數據庫中的人員創建一組“年齡範圍”。我有一個包含每個人年齡的度量。
我已經開始使用這個 MDX
SELECT NON EMPTY {[Measures].[Count of People]} ON COLUMNS, NON EMPTY { ( [People].[Gender].[Gender], [People].[Some].[Other Attributes] ) } ON ROWS FROM [MyCube] WHERE ( ... slicer here .... )
我有另一個度量 (
[Measures].[Age]
),我想將其組合起來並與行一起返回,例如 0-25 歲、26-50 歲等的任何人這是我嘗試過的
WITH SET [Age Band] AS IIF([Measures].[Age]<26,"0-26",IIF([Measures].[Age]<51,"26-51","Over 50")) SELECT NON EMPTY {[Measures].[Count of People]} ON COLUMNS, NON EMPTY { ( [People].[Gender].[Gender], [People].[Some].[Other Attributes], [Age Band] ) } ON ROWS FROM [MyCube] WHERE ( ... slicer here .... )
但是我得到的錯誤是
該函式需要參數的元組集表達式。使用了字元串或數字表達式。
我究竟做錯了什麼?有沒有更簡單/更好的方法可以在不連結
IIF
命令的情況下做到這一點?
如果除了將年齡作為
People
度量之外,您還可以將年齡作為維度中的一個屬性,您可以將您的波段定義為此屬性層次結構的計算成員(計算成員不需要是計算度量,它們可以是任何層次結構的成員!):WITH Member [People].[Age].[0-26] AS Aggregate([People].[Age].[0] : [People].[Age].[26]) Member [People].[Age].[26-51] AS Aggregate([People].[Age].[26] : [People].[Age].[51]) Member [People].[Age].[Over 50] AS Aggregate([People].[Age].[51] : null) SELECT NON EMPTY {[Measures].[Count of People]} ON COLUMNS, NON EMPTY [People].[Gender].[Gender] * [People].[Some].[Other Attributes] * { [People].[Age].[0-26], [People].[Age].[26-51], [People].[Age].[Over 50] } ON ROWS FROM [MyCube] WHERE ( ... slicer here .... )
請注意,我將 26 歲和 51 歲的邊界分別保留在兩個樂隊中,因為你們樂隊的名稱似乎建議這樣做。您可以在 MDX 中執行此操作,因為計算成員的每個定義都獨立於其他定義,因此不禁止計算成員之間存在交集。但是您可能會選擇調整表達式,並且只將每個年齡包含在一個波段中。
您嘗試的方式不起作用,因為 MDX 中的集合由元組組成,而您從
IIF
表達式中傳遞字元串。
嘗試
WITH會員[年齡段]
代替
WITH set[年齡段]
由於您正在根據
[Measures].[Age]
嘗試以下操作,看看您是否可以使用WITH MEMBER
with member [Age Band] AS IIF([Measures].[Age]<26,"0-26",IIF([Measures].[Age]<51,"26-51","Over 50")) SELECT {[Age Band] } DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS, { ( [People].[Gender].[Gender] ) } DIMENSION PROPERTIES member_caption ON ROWS FROM [MyCube]