2

私はSSASにかなり慣れていないので、この問題を解決する方法に完全に困惑しています。しきい値というディメンションがあります。しきい値ディメンション内には、次のメンバーがあります:

[閾値年]、[閾値1額]、[閾値2額]、[閾値3額]

【資格コミッション】、【Tier1金額】、【Tier2金額】、【Tier3金額】という手段も持っています。

その上に、[Statement Dates] と呼ばれる時間ディメンションもあります。

だから基本的にここに私がやろうとしていることがあります。エンド ユーザーが [明細書の日付] から時間枠を選択したときに [適格コミッション] を合計し、対応する年のしきい値額と照合する計算メンバーを作成したいと考えています。[Threshold1 Amount] より大きい場合は、[Tier1 Amount] メジャーを返し、同じロジックをしきい値 2 と 3 に適用します。

誰かが私が何をする必要があるかについてのロードマップをくれますか? これを機能させるために基礎となるデータベースのデータを再構築する必要がある場合は、それを知っておくと非常に役立ちます。助けてくれてありがとう。

4

2 に答える 2

2

では、これが加法的尺度であると仮定しましょう[Qualifying Commission]。つまり、合計は SSAS によって処理されます。

[Statement Dates]基本的に、しきい値を取得するには、下にある年を見つける必要があります.

では、いくつかのチャンクに分割してみましょう。私たちが最初にすることは、私たちの権利を見つけることです[Threshold Year]:

create set [Current Threshold] as
    iif([Statement Dates].[YQM].CurrentMember IS [All]
        ,[Threshold Year].[All]
        ,StrToSet("[Threshold Year].[" + 
            Ancestor([Statement Dates].[YQM].CurrentMember
            , [Statement Dates].[YQM].[Year]).Name +  
        "]"))

次に、このしきい値を適用して適切な数を取得します。

create member currentcube.[Measures].[Threshold Amount] as
    case
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold1 Amount") then
            [Measures].[Tier1 Amount]
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold2 Amount") then
            [Measures].[Tier2 Amount]
        when [Qualifying Commission] > 
                 [Current Threshold].Item(0).Properties("Threshold3 Amount") then
            [Measures].[Tier3 Amount]
        else 0
    end

そして出来上がり、あなたはガスで調理しています。

于 2009-08-20T12:35:55.080 に答える
0

スコープ演算子の使用も検討する必要があります。条件付き合計を実装する必要がある場合、パフォーマンスを向上させることができます。

Scope operator MSDN から

于 2009-08-28T00:27:21.940 に答える