0

次のようなデータキューブ階層があります。 ここに画像の説明を入力

強調表示されたノードに次のようにアクセスできます

SELECT  [Calendar].[Report Days].[All Members].[All].[WantInReport].[Yesterday].LastChild ON 0

このクエリを実行してExecute SQL task、出力を SSIS 変数に割り当てようとしました。しかし問題は、列名が変更されていることです。列名にもエイリアスを付けようとしました。どうすればこれを達成できますか?

4

1 に答える 1

3

クエリ スコープの計算メジャーを使用してエイリアスを作成できます。例として、AdventureWorks キューブを使用しています。次のクエリは、指定したメンバーのカレンダー階層の最後の子を取得します。

SELECT [Date].[Calendar].[All Periods].[CY 2014].[H1 CY 2014].lastchild on 0
FROM [Adventure Works]

あなたが述べたように、最後の子は時間の経過とともに変化するため、メンバー名が変化し、定数名を提供するためにエイリアスを作成する必要があります。これを行うには、計算メジャーを作成します。ロジックを WITH MEMBER ステートメントに移動し、メンバーの代わりにメンバー キャプションを取得してから、新しい計算メジャーを 0 軸で使用します。

WITH MEMBER [Measures].[MyLastChild] AS 
       [Date].[Calendar].[All Periods].[CY 2014].[H1 CY 2014].LASTCHILD.MEMBER_CAPTION
SELECT {Measures.MyLastChild} on 0
FROM [Adventure Works]

したがって、クエリは次のようになります

WITH MEMBER [Measures].[Last Day] AS
[Calendar].[Report Days].[All Members].[WantInReport].[Yesterday].LastChild.MEMBER_CAPTION
SELECT [Measures].[Last Day] ON 0
FROM [MyCube]

MDX クエリを実行してその結果を SSIS に返すのに問題がある場合は、いくつかのオプションがあります。

  1. ここに示すように、OLE DB ソースを使用します。
  2. リンク サーバーをセットアップし、OpenQuery を使用して MDX の結果を T-SQL の結果として返します(この状況ではお勧めしません)。
于 2015-03-16T14:30:22.617 に答える