2017-04-06 10 views
1

最近、Excelを使用して分析サービスに接続し、キューブのクエリに使用されたmdxコードを生成しました。コードを以下に示します。 SQLプロファイラを使用してコードも検証されました。しかし、私が分析サービスに行き、キューブをブラウズして管理スタジオのキューブに入れると、エラーが発生します。コードを修正できるかどうかお知らせください。このコードはまさに私の要求に必要なものなので、変更があった場合はキューブ内で置き換えてください。ピボットテーブルから生成されたmdxを使用する際の問題

コード

SELECT NON EMPTY Hierarchize(DrilldownMember(CrossJoin({ 
[ColorsDim].[PrimeColor].[All], [ColorsDim].[PrimeColor].[PrimeColor].AllMember}, 
{([ColorsDim].[SecondColor].[All]) }), [ColorsDim].[PrimeColor].[PrimeColor].AllMember, 
[ColorsDim].[SecondColor])) DIMENSION PROPERTIES PARENT_UNIQUE_NAME 
      ,HIERARCHY_UNIQUE_NAME ON COLUMNS 
      ,NON EMPTY Hierarchize({DrilldownMember({ 
[ColorsDim].[Color_id].[All] },,, INCLUDE_CALC_MEMBERS) }) DIMENSION PROPERTIES 
PARENT_UNIQUE_NAME 
        ,HIERARCHY_UNIQUE_NAME ON ROWS FROM [Model] 
       WHERE ([Measures].[Number of records in ColorDim]) CELL PROPERTIES VALUE 
        ,FORMAT_STRING 
        ,BACK_COLOR 
        ,FORE_COLOR 
        ,FONT_FLAGS 

エラー

Query Preparation failed. 

Additional information 
The query cannot be prepared: The query must have at least one axis. The first axis of the query should not have mulitple hierarchies, nor should it reference any dimension other than the measures dimension.. 
Parameter name: mdx (MDXQueryGenerator) 

所望の出力 enter image description here

次のクエリは、所望の出力を示しています。

をクエリ内の
Select non empty 
[ColorsDim].[PrimeColor].children * 
[ColorsDim].[SecondColor].children 
on 0 
, non empty 
[ColorsDim].[Color_id].children 
on 1 
from [model] 
where [Measures].[Number of records in ColorDim]; 

尺度は、ご提供いただいたエラーメッセージはSSRSのエラーメッセージのように私には見えるその特定の次元の行数

+0

「私は分析サービスに移動してキューブを参照し、管理のスタジオで、キューブに入れたときにしかし、私はエラーを取得します。」:SSRSは、あなたがこれを行うことが十分に満足しているが、そのそうなるように

明確にできますか? SSMSでMDXウィンドウを使用していますか? Reporting Servicesを使用していますか? SSMSのキューブに対してクエリウィンドウを開き、MDXを編集していますか? MDXウィンドウを試してください。 – GregGalloway

+0

あなたの権利はmdxが働いた。しかし、キューブをブラウズして同じコードを入力すると、同じmdxは機能しません。 – Mutai

+0

ああ。キューブブラウザは、基本的にReporting Services MDXクエリデザイナです。列の尺度のみをサポートします。ですから、キューブブラウザではなくMDXクエリウィンドウを使用します。 @whytheqは絶対に正しいです。 – GregGalloway

答えて

1

まあです。

キューブへの接続でSSMSを開いてからmdxクエリを開くと、クエリは正常に実行されます。私たちは何が起こっているかをより明確に見ることができるように、クエリを再フォーマット

はこれを与える:

SELECT 
    NON EMPTY 
    Hierarchize(
     DrilldownMember(
     CrossJoin(
      {[ColorsDim].[PrimeColor].[All] 
     , [ColorsDim].[PrimeColor].[PrimeColor].AllMember} 
     ,{([ColorsDim].[SecondColor].[All]) } 
     ) 
     , [ColorsDim].[PrimeColor].[PrimeColor].AllMember 
     , [ColorsDim].[SecondColor] 
    ) 
    ) DIMENSION PROPERTIES PARENT_UNIQUE_NAME 
     ,HIERARCHY_UNIQUE_NAME ON COLUMNS 
,NON EMPTY 
    Hierarchize(
     { 
     DrilldownMember(
      {[ColorsDim].[Color_id].[All] } 
      ,,, INCLUDE_CALC_MEMBERS 
     ) 
     } 
    ) 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME 
    ,HIERARCHY_UNIQUE_NAME ON ROWS 
FROM [Model] 
WHERE ([Measures].[Number of records in ColorDim]) 
CELL PROPERTIES VALUE 
        ,FORMAT_STRING 
        ,BACK_COLOR 
        ,FORE_COLOR 
        ,FONT_FLAGS 

Excelが、私は階層化ではない疑いがある、我々は、細胞とディメンションのプロパティを取り除くことができますので、定型コードの多くを追加しますそのようCOLUMNS(または0)それはあなたがSSRSでこれを使用する場合、あなたは再作成する必要があります

SELECT 
    NON EMPTY 
     DrilldownMember(
      [ColorsDim].[PrimeColor].[All] 
     * [ColorsDim].[PrimeColor].[PrimeColor].AllMember 
     ,{([ColorsDim].[SecondColor].[All])} 
     ) 
     , [ColorsDim].[PrimeColor].[PrimeColor].AllMember 
     , [ColorsDim].[SecondColor] 
    ) 
    ON 0 
,NON EMPTY 
    DrilldownMember(
     {[ColorsDim].[Color_id].[All] } 
     ,,, INCLUDE_CALC_MEMBERS 
    ) 
    ON 1 
FROM [Model] 
WHERE [Measures].[Number of records in ColorDim]; 

:必要に応じて、CROSSJOINはこれを与えるために、簡単な*オペレータに置き換えることができますMeasures!次元を使用します。

WITH 
MEMBER [Measures].[Green_YellowGreen] AS 
    (
    [ColorsDim].[PrimeColor].[PrimeColor].[Green], 
    [ColorsDim].[PrimeColor].[SecondColor].[Yellow-Green], 
    [Measures].[Number of records in ColorDim] 
) 
MEMBER [Measures].[Green_BlueGreen] AS 
    (
    [ColorsDim].[PrimeColor].[PrimeColor].[Green], 
    [ColorsDim].[PrimeColor].[SecondColor].[Blue-Green], 
    [Measures].[Number of records in ColorDim] 
) 
SELECT 
NON EMPTY 
{[Measures].[Green_YellowGreen], [Measures].[Green_BlueGreen] } 
ON 0 
, NON EMPTY 
    [ColorsDim].[Color_id].children 
ON 1 
FROM [model]; 
+0

SSRSで使用するために、ssrs – Mutai

+0

@Mutaiで使用できるように、書き直す方法の例を挙げることができますか?これは 'ON COLUMNS'節で' [Measures]。[...] 'しか使用できないと言っています。私たちがそれを書き直すためには、出力のアイデア(スクリーン印刷)を提供する必要があります。 – whytheq

+0

私はmdxでその出力を取得するために使用したクエリと同様に、望ましい出力を提供しました。それをssrsにどのように適用するかについてはっきりとは分かりません。混乱を解消するための例を気に入ってください。 – Mutai

関連する問題