2013-12-16 34 views
0

對於奇怪的問題標題,我很抱歉對於我正在嘗試完成的任務設置單詞。MDX在不使用選擇集的情況下設置的最大值總和

我有一個OrderLine Fact表。每行都有一個產品(類別/子類別/產品)。我需要一個度量來返回在ProductCategory中有一個或多個Orderlines的Orders(而不是OrderLines)的數量。由於訂單事實表沒有鏈接到產品,我必須從OrderLine事實表中獲取這些數據。

我對MDX的認識是相當有限的,從我能想到的角度來看,我發現的就是將每個OrderLine的「Number of Orders」(1或-1)度量值並在OrderNumber中放入一個退化維數OrderLine表。有了這個,我想我可以通過OrderLine Fact Table中的OrderNumber獲得MIN的「訂單數」的SUM。它的工作原理:

WITH MEMBER [Measures].[Test] AS 
    SUM([Order Number].[Order Hierarchy].CURRENTMEMBER, MIN([Order Number].[Order Hierarchy].CURRENTMEMBER.CHILDREN, [Measures].[Number of Orders])) 
    SELECT 
     {[Measures].[Number of Orders],[Measures].[Test]} ON 0, 
     {[Order Number].[Order Number].&[110100000030-BLA-01745892],[Order Number].[Order Number].&[110100000031-BLA-0]} ON 1 
    FROM SalesCube 

有關訂單有3條線路,它將返回給我3 [Measures].[Number of Orders]和1 [Measures].[Test]。現在

我的問題是,如果我想按產品類別來執行這個查詢:

WITH MEMBER [Measures].[Test] AS 
     SUM([Order Number].[Order Hierarchy].CURRENTMEMBER, MIN([Order Number].[Order Hierarchy].CURRENTMEMBER.CHILDREN, [Measures].[Number of Orders])) 
     SELECT 
      {[Measures].[Number of Orders],[Measures].[Test]} ON 0, 
      {[Products].[Category Hierarchy].MEMBERS} ON 1 
     FROM SalesCube 

它給我的MIN所有OrderLines這是(-1),並將其歸納爲-1。我需要的是查詢返回分鐘「訂單數」的總和,包含產品類別,而無需對行軸使用「訂單號」,每個「訂單號」。

這是否有意義?

回答

1

據我所知,建模的最好方法是在訂單行事實表中輸入「訂單ID」,並將其作爲度量[Measures].[Order Count]的唯一計數。那麼應該不需要複雜的MDX。

如果您需要用-1減去訂單,也許可以將-11轉換爲具有用戶可讀值(如「置入」和「反轉」)的屬性。然後「訂單計數」的措施會得到無形的,計算的措施被證明這將是實現爲用戶如下:

([Measures].[Order Count], [Order].[Order Status].[placed]) - 
([Measures].[Order Count], [Order].[Order Status].[reversed]) 
+0

如果訂單無法取消,這將是它,它會很容易但可悲的是,訂單可以取消或撤銷。這就是爲什麼我說「訂單數量」字段可能是1或-1(-1 =顛倒)。我必須使用SUM來獲得正確數量的訂單。 – Nick

+0

@尼克我編輯了我的答案。 – FrankPl

+0

太棒了!這正是我需要的,它乾淨而簡單!謝謝! – Nick

相關問題