0
我有創造這個MDX計算問題增量更新:MDX計算與事實表
- 的產品隨着時間的推移知道我的事實表獲取價格更新增量平均價格;
爲了計算產品在某個時間點的平均價格,我必須查找所有產品的最新價格(並非所有產品都必須在此時間點獲得價格更新) 。
我的事實表看起來是這樣的:
F_Products
(Product_key,Date_Key,Price,flag_PriceChanged)
Dim_Products
(Product_key,ProductID,Price)
我有一個成功的解決這個用克里斯 - 韋伯的last ever non empty solution,但它極大地得到每當我將它應用於大集合時,速度會更慢的產品或在很長一段時間內。
,我用看起來像這樣計算:
CREATE MEMBER CURRENTCUBE.[Measures].DAYSTODATE AS
IIF([Measures].[Price]=NULL, NULL,
COUNT(NULL:[Date].[Date].CURRENTMEMBER)-1);
CREATE MEMBER CURRENTCUBE.[Measures].HADSALE AS
IIF([Measures].[Price]=NULL, NULL, MEASURES.DAYSTODATE);
SCOPE([Measures].MAXDATE, [Date].[Date].[Date].MEMBERS);
THIS = MAX(NULL:[Date].[Date].CURRENTMEMBER, MEASURES.HADSALE);
END SCOPE;
CREATE MEMBER CURRENTCUBE.[Measures].LASTSALE AS
IIF(ISEMPTY([Measures].MAXDATE), NULL,
([Measures].[Sales Price],
[Date].[Date].[Date].MEMBERS.ITEM(MEASURES.MAXDATE)));
CREATE MEMBER CURRENTCUBE.[Measures].[Average Price Incl. VAT]
AS
IIF([Measures].HADSALE = NULL,NULL,
AVG([Dim Products].[Product ID].[Product ID],MEASURES.LASTSALE*1.25));
任何幫助,將不勝感激。
1.恐怕使用過濾的結果:{NULL:[日期] [日期] [20160826]}將使查詢更慢我已經使用日期過濾器,但在一個較小的範圍;還是雖然結果很慢(14天 - 一個月的時間) 2.我已經保存了每日更新的專用事實表;該報告必須每天進行更新 請隨意扔任何其他建議。 –
1.您是否在過濾器中使用了LastNonEmpty價格?您必須使用LastNonEmpty聚合添加價格列中的度量。然後通過刪除LastNonEmpty邏輯來重寫MDX。這是一種更快的方式。 – user1464922