計算されたメンバーを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歳をそれぞれ2つのバンドに保管したことに注意してください。計算されるメンバーの各定義は他の定義から独立しているため、MDXでこれを行うことができます。したがって、計算されるメンバー間に交差があることは禁止されていません。しかし、おそらく表現を調整して、1つのバンドに各年齢のみを含めることを選択します。
MDXのセットはタプルで構成されているため、試した方法は機能しませんが、IIF
式から文字列を配信します。
試す
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]