试图理解 mdx 计算
trying to understand mdx calculations
我正在尝试了解此 MDX 查询背后的数学原理。
TL;DR: 这个查询是怎么查询的运行? ("div"是怎么计算的?)
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
长话短说:
我有一个层次结构 [Customer].[Country] 并衡量销售额和成本。
对于这个查询:
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
这是有道理的。然后我将 f运行ce 更改为在会员中使用销售额,如下所示:
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
我可以看到,对于澳大利亚,正在使用列中的度量,对于 f运行ce,元组中的销售额是 "strong" 并且保留在成本之上。这意味着 "cost" 减法实际上是 (AU,cost) - (FR,sales)。
所以我试试这个(这就是问题所在!!!)
我设置了自定义度量:
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
但这是错误的...
我从 f运行ce
中取出销售额
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
感谢所有帮助
终于想到了!
我得到的号码是:
div = ((AU,sales) - (FR,sales)) / ((AU,cost) - (FR,sales)) = (18005422 - 9610041) / (8266005 - 9610041) = -6.2463959
每当法国需要在计算中使用一种衡量标准时,它就会获得销售额。这是规则。
希望这对以后的人有所帮助,尽管似乎没有人对此感兴趣...:(
我正在尝试了解此 MDX 查询背后的数学原理。
TL;DR: 这个查询是怎么查询的运行? ("div"是怎么计算的?)
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
长话短说:
我有一个层次结构 [Customer].[Country] 并衡量销售额和成本。
对于这个查询:
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
这是有道理的。然后我将 f运行ce 更改为在会员中使用销售额,如下所示:
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
我可以看到,对于澳大利亚,正在使用列中的度量,对于 f运行ce,元组中的销售额是 "strong" 并且保留在成本之上。这意味着 "cost" 减法实际上是 (AU,cost) - (FR,sales)。
所以我试试这个(这就是问题所在!!!)
我设置了自定义度量:
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
但这是错误的...
我从 f运行ce
中取出销售额 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
感谢所有帮助
终于想到了!
我得到的号码是:
div = ((AU,sales) - (FR,sales)) / ((AU,cost) - (FR,sales)) = (18005422 - 9610041) / (8266005 - 9610041) = -6.2463959
每当法国需要在计算中使用一种衡量标准时,它就会获得销售额。这是规则。
希望这对以后的人有所帮助,尽管似乎没有人对此感兴趣...:(