2

日付ディメンション階層 (年、学期、四半期、月、日) を持つキューブがあります。

データ ウェアハウスで使用できるメジャーは 2 つあります。

[AUD DLY] : Daily numbers
[AUD YTD] : Daily incremental YTD numbers

階層は次のとおりです

Date - Dimension 
Financial - Hierarchy 

Year - [Date].[Financial].[Year]
Semester - [Date].[Financial].[Semester]
Quarter - [Date].[Financial].[Quarter] 
Month - [Date].[Financial].[Month] 
Day - [Date].[Financial].[Day]

Measures [AUD DLY]
Measures [AUD YTD]

2016 年 3 月 3 日など、ビジネスが Excel のスライサーで特定の日付を選択したときに、MTD が次のいずれかの方法で計算されるように、メジャーに MTD フィールドを追加する必要があります。

1) [AUD MTD] should be calculated by subtracting [AUD YTD] on 
last day of  previous month from the current selected date. 
So if we select 3 March 2016 then

[AUD MTD] = [AUD YTD] on 3 March 2016 - [AUD YTD] on 29 Feb 2016

OR

2) [AUD MTD] should be calculated by adding the [AUD DLY] from first day
of the current month until the selected date in that month. 
So if we select 3 March 2016 then

[AUD MTD] = SUM ([AUD DLY] from 1 March 2016 to 3 March 2016)

BIDS 2010 のキューブ デザイナーの [計算] タブから新しい計算メンバーを作成しました。MDX クエリは次のとおりです。しかし、キューブを参照しようとすると、[AUD MTD] の値は null しか返されません。

誰かが私が間違っていることを助けてもらえますか?

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS Aggregate
(
    PeriodsToDate
        (
        [Date].[Financial].[Month]
        ,[Date].[Financial].CurrentMember
        )
        ,[Measures].[AUD DLY]
), 
FORMAT_STRING = "Currency", 
NON_EMPTY_BEHAVIOR = { [AUD DLY] }, 
VISIBLE = 1 ,  DISPLAY_FOLDER = 'AUD Values' ,  ASSOCIATED_MEASURE_GROUP = 'Measures'  ; 

また、ビジネスはスライサーを使用して Excel で新しい計算メジャーを使用し、任意の日付を選択して、その月の MTD 値を表示できるようにしたいと考えています。

また、誰かが方法(1)と(2)の両方のMDX​​クエリを手伝ってもらえますか?

あなたの助けに感謝します。

4

2 に答える 2

1

引用されたコード (方法 2) の問題は、[Date].[Financial].CurrentMember が [Date].[Financial].[Month] レベル以下のレベルでなければならないことだと思います。それ以外の場合、PeriodsToDate は空のセットを返します。

したがって、問題は計算されたメンバーの定義ではなく、それが使用されているクエリのどこかにあります。そのクエリでは、[Date].[Financial].CurrentMember が Months より上のレベルのメンバーを返す場合があります。クエリ自体を見ないとわかりにくい。

方法 (1) はより手間がかかります。前月の最終日を取得するには、

Ancestor([Date].[Financial].CurrentMember,[Date].[Financial].[Month]).PrevMember.LastChild

ただし、会計年度の最初の月の日数について何らかのロジックを組み込む必要があります。そうしないと、今年の YTD 値から前の最終年度の値が差し引かれます。ですので、(2)の方法をお勧めします。

私の知る限り、Excel スライサーで日付 (月ではなく日付) を選択すると、その日付が .CurrentMember になります。Excel は非常に奇妙な MDX を生成することがあるため、少し躊躇しています。

編集:別の考えられる問題は、階層の不一致です。日付階層で完全に適切な Day を選択できますが、計算されるメンバーの定義で指定した階層に正確に含まれていない場合、奇妙な結果が得られる可能性があります。SSASの最近のバージョンでは、属性階層と複数の「実際の」階層の急増が促進されており、これが実際の問題になっています。

于 2016-05-04T09:55:53.823 に答える