2016-09-22 79 views
0

我想了解這個MDX查詢背後的數學。試圖理解mdx計算

TL; DR:這個查詢如何運行? (如何將 「格」 來計算?)

WITH 
member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France], [measures].[sum sales])) 
member [measures].[div] as ([Measures].[Sum Sales]/[Measures].[Sum Cost]) 

SELECT 
{ [measures].[div] } 
ON COLUMNS, 
{ [Customer].[Country].[x] } 
ON ROWS 

長的故事:

我的[客戶]層次[國家]和措施,銷售和成本。

對於此查詢:

SELECT 
{ [Measures].[Sum Sales], [Measures].[Sum Cost] } 
ON COLUMNS, 
{ [Customer].[Country].[Australia] , [Customer].[Country].[France] } 
ON ROWS 

我得到的結果是:

Australia: cost = 8266005, sales = 18005422 
France: cost = 4478131, sales = 9610041 

我創建這個成員:

// substract france from australia 
member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France])) 

,並用它運行查詢,而不是2成員:

WITH 
member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France])) 

SELECT 
{ [Measures].[Sum Sales], [Measures].[Sum Cost] } 
ON COLUMNS, 
{ [Customer].[Country].[x] } 
ON ROWS 

,並得到的結果是:

x: cost = 3787874, sales = 8395381 

這是有道理的。然後我改變法國使用的銷售中成員,如:

WITH 
member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France], [measures].[sum sales])) 

SELECT 
{ [Measures].[Sum Sales], [Measures].[Sum Cost] } 
ON COLUMNS, 
{ [Customer].[Country].[x] } 
ON ROWS 

這引起了這樣的結果:

x: cost = -1344036, sales = 8395381 

,我可以看到,澳大利亞,正在使用從列措施,對於法國來說,元組的銷量是「強勢」的,並且對成本保持着高度的關注。這意味着「成本」減免實際上是(AU,成本) - (FR,銷售)。

因此,我想這(這是問題所在!)

我設置了自定義測量:

member [measures].[div] as ([Measures].[Sum Sales]/[Measures].[Sum Cost]) 

,並把它列與其他措施:

WITH 
member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France], [measures].[sum sales])) 
member [measures].[div] as ([Measures].[Sum Sales]/[Measures].[Sum Cost]) 

SELECT 
{ [Measures].[Sum Sales], [Measures].[Sum Cost], [measures].[div] } 
ON COLUMNS, 
{ [Customer].[Country].[x] } 
ON ROWS 

x銷售額和成本的結果是相同的。 「div」= -6.2463950147143。 它是如何計算的? 我猜應該是:

(AU,sales)/(AU,cost) - (FR,sales) = 18005422/8266005 - 9610041 = -9610038.82175 

但是,這是錯誤的...

我來自法國

member [Customer].[Country].[x] as (([Customer].[Country].[Australia]) - ([Customer].[Country].[France]])) 

拿出銷售,並​​得到了預期的結果:

div = ((AU,sales) - (FR,sales))/((AU,cost) - (FR,cost)) = (18005422 - 9610041)/(8266005 - 4478131) = 2.216383 

感謝您的任何和所有幫助

回答

0

終於找到了我!

我得到的數字是:

div = ((AU,sales) - (FR,sales))/((AU,cost) - (FR,sales)) = (18005422 - 9610041)/(8266005 - 9610041) = -6.2463959 

當過法國需要在計算中使用的措施,它得到了銷售。這是規則。

希望這將有助於未來的人,雖然似乎沒有人對此感興趣...... :(