web-dev-qa-db-ja.com

メジャーをバンド化するための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コマンドをチェーンせずにこれを行う簡単で良い方法はありますか?

3
Jamiec

メジャーとしてだけでなく、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歳をそれぞれ2つのバンドに保管したことに注意してください。計算されるメンバーの各定義は他の定義から独立しているため、MDXでこれを行うことができます。したがって、計算されるメンバー間に交差があることは禁止されていません。しかし、おそらく表現を調整して、1つのバンドに各年齢のみを含めることを選択します。

MDXのセットはタプルで構成されているため、試した方法は機能しませんが、IIF式から文字列を配信します。

5
FrankPl

試す

 WITHメンバー[年齢バンド] 

の代わりに

 WITHセット[年齢バンド] 

あなたは[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]
4
Stephen Borg