1

Invoice Date2 つの日付とを持つファクト テーブルがありAccounting Current Dateます。要求された収益値を取得するには、これら 2 つの日付の組み合わせを使用する必要があります。たとえば、YTD 収益が必要な場合は、次のように選択する必要があります。

(注: 私は SQL クエリに慣れているので、SQL クエリを書いています)

SELECT Revenue
FROM
Fact_Revenue
WHERE
Invoice_Date <= '2011-10-22'
and AccountingCurrent >= '2011-01'
and AccountingCurrent <= '2011-10'

このファクト テーブルには、Revenue 以外にも必要な情報が含まれていますが、この他のデータの計算には必要ありませんAccounting Current Date。したがって、私の考えは、メインの MDX クエリで 1 つの日付 ( ) のみを使用して ( Invoice Date1 つのクエリでできるだけ多くのデータを取得できるようにするため)、収益を計算するために計算メンバーを使用し、そこで関連付けたいと考えています。Accounting Current Date選択しInvoice Date

例えば

SELECT {[Measure].[RevenueYTD], 
[Measure].[RevenueMTD], 
[Measure].[NumberOfInvoices], 
[Measure].[NumberOfPolicies]} 
ON COLUMNS, 
{[People].Members} ON ROWS 
FROM [Cube]
WHERE
[Invoice Date].[Date Hierarchy].[Date].&[2011-10-22]

この場合、[Measure].[RevenueYTD]andはクエリの日付よりも低く、制限する必要があります[Measure].[RevenueMTD]。一方、部分的な請求日 (または MTD 日付など) が必要ですが、Accounting Current DateInvoice Date[Measure].[NumberOfInvoices][Measure].[NumberOfPolicies]Accounting Current Date

計算メンバー クエリは次のようにする必要があります (これはアルゴリズムに似ています)。

ROUND(
    SUM(
        YTD([Accounting Current Date].[Date Hierarchy].CurrentMember), 
        [Measures].[Revenue]
        ),
    2)
WHERE [Invoice Current Date].[Date Hierarchy] < [Invoice Current Date].[Date Hierarchy].CurrentMember
4

1 に答える 1

1

ある次元から別の次元への移動は、MDX では簡単なことではありません。理論上、次元は独立しているため、標準言語にはこれを行うための関数がありません。StrToMember MDX 関数を使用できますが、遅くて少し奇妙です。

フィルターについては、最初のものから始めましょう。

Invoice_Date <= '2011-10-22'

MDX では、式に一致するメンバーでセットを作成する必要があります。これは、Range セット演算子を使用して実行できます。

NULL:[Invoice Date].[Date Hierarchy].[Date].&[2011-10-22]

もう 1 つのフィルターは簡単に推測できます。

AccountingCurrent >= '2011-01' and AccountingCurrent <= '2011-10'

MDX バージョン :

[Accounting Date].[Date Hierarchy].[Date].&[2011-01-31]:[Accounting Date].[Date Hierarchy].[Date].&[2011-10-30]

異なるタイプのフィルターが必要な場合は、フィルター MDX 関数を使用することもできます。

次に、断片を取り出してクエリを作成する必要があります。考えられる解決策の 1 つは、セット スライサーを使用し、フィルターを適用したくない場合に値を上書きすることです。

 WITH 
   // here we're changing the 'selection' from the where clause
   MEMBER [Measure].[NumberOfInvoices II] AS ([Accounting Date].[Date Hierarchy].defaultmember,[Measure].[NumberOfInvoices])
 SELECT
   .. axis here [Measure].[RevenueYTD] will be applying the filters defined in the where clause
 FROM MyCube
 WHERE {[Accounting Date].[Date Hierarchy].[Date].&[2011-01-31]:[Accounting Date].[Date Hierarchy].[Date].&[2011-10-30]}
于 2011-12-23T11:24:59.040 に答える