Ssas

MDX 計算成員以帶度量

  • July 9, 2014

我正在嘗試將計算成員添加到 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]

引用自:https://dba.stackexchange.com/questions/70042