web-dev-qa-db-ja.com

MDXで先月のメジャーを取得するにはどうすればよいですか?

前月の施策の価値を知りたい。

それが私が持っているものです:

SELECT
   [Measures].[Recuent distinct] ON ROWS,
   TAIL(NonEmptyCrossJoin([Dim Date].[Calendar].[Month Name].Members,1),1) ON     COLUMNS
  FROM [BDID]
  WHERE [Dim Canal].[Canal].&[Data]

結果:

October 2015
    Recuent Customers 10344

それが私が欲しいものです:

September 2015
Recuent Customers 20754

私のMDXは現在の月の値を取得しますが、先月の値を取得したいのです。それは毎月有効である必要があります。つまり、Power BIで使用するための自動クエリが必要です。つまり、今月は、毎月のクエリの変更を回避するために、前月(9月)の値と次月の10月の値を取得する必要があります。

さらに情報が必要な場合はお知らせください。

4
Miguel

サンプルデータまたは構造がなければ、正確なコードを提供することは困難ですが、ここで説明します。

PARALLELPERIOD 関数を調べる必要があります。その関数は階層からレベルを取得し、そのレベルのいくつかのステップに戻ります。

また、ここでは、TAIL()関数を使用して、メジャーの実際の値でディメンションの先月を取得するという前提を使用しています

希望どおりの結果が得られると考えているAdventureWorksデータベースの例を作成しました(まだ完全には明確ではありません)。

WITH MEMBER [Measures].[LastmonhtValue]
as
sum(PARALLELPERIOD([Date].[Calendar].[Month],1),[Measures].[Customer Count])

SELECT
    [Measures].[LastmonhtValue] ON 0,
 TAIL(NonEmptyCrossJoin([Date].[Calendar].[Month].Members,[Measures].[Customer Count],1),1) on 1 
  FROM [Adventure Works]

これが機能する方法:
-parallelperiod関数は1か月前に戻ります
-tail関数は通常のメジャーを使用して、最後の空でない月を取得します
-結果は1か月前のデータです

これは、「月」と「顧客数」を使用してキューブを参照したときのデータの外観です

enter image description here

これはコードの結果です:

enter image description here

あなたの側からの追加情報がない限り、それが私ができる最善の方法だと思います。

attribute relationships を時間ディメンションで使用して、このコードが許容可能なパフォーマンスであることを確認してください