私は MDX を初めて使用するので、助けが必要です。SSRS には、SSAS キューブからプルするデータセットがあります。データセットには常に 6 か月分のデータが含まれます。私ができる必要があるのは、max(timeID) の値を 2 番目の max(timeID) の値と比較し、max(timeID) の値 > 2 番目の max(timeID) の値がインジケーターで矢印が上がるなど...
したがって、以下のデータセットでは、20130301 の値 10 から 20130201 の値 8 を引きます。結果は正の数になり、インジケーターは上向きの緑色の矢印になります。0 の場合は直線になり、負の場合は矢印が赤く下向きになります。インジケーターの扱い方は理解しています - それは問題ではありません。それは私が助けを必要としている MDX です。
20130201 8 20130301 10 20121201 4
私はそれをSQLで書くことができ、それはこのようになります。
Select Item, case when sum(Time1ContentCount) > sum(Time2ContentCount) then 3 when sum(Time1ContentCount) = sum(Time2ContentCount) then 2 when sum(Time1ContentCount) sum(Time2ContentCount) then 1 end as Indicator, sum(Time1ContentCount) as Time1Count, sum(Time2ContentCount) as Time2Count from (Select timeID, dc.Item, Case when timeID = (Select max(timeID) from FactUsage) then count(fu.Contentid) else 0 END as Time1ContentCount, Case when timeID = (Select max(timeID) from FactUsage where timeID <>(Select max(timeID) from FactUsage)) then count(fu.Contentid) else 0 END as Time2ContentCount from factUsage fu INNER JOIN dimContent dC on dc.ContentID = fu.ContentID WHERE TimeID in (Select distinct top 6 timeid from factUsage order by timeID desc) Group by timeID, Item) a group by Item
助けてくれてどうもありがとう!
編集: インジケーターのステートメントを次のように変更しました。
WITH Member MEASURES.Indicator AS (
IIF(( [Measures].[Activity], [Time].[Time ID].LastChild ) >
( [Measures].[Activity], [Time].[Time ID].LastChild.PrevMember),3,
(IIF(([Measures].[Activity], [Time].[Time ID].LastChild ) =
([Measures].[Activity], [Time].[Time ID].LastChild.PrevMember), 2,1))))
SELECT {Measures.Indicator} on 0
FROM [DW]
SSMS のキューブに対してクエリとして実行すると機能しますが、インジケーターに入れようとしましたが、機能しません。IIF ステートメントを追加するだけでは機能しません。クエリまたはキューブ自体に追加しようとすると、そこからプルできるようになり、メモリ不足エラーが発生します。