如何计算 MDX 中组的总和?
Posted
技术标签:
【中文标题】如何计算 MDX 中组的总和?【英文标题】:How do I calculate the sum total of a group in MDX? 【发布时间】:2014-10-29 18:18:35 【问题描述】:我需要在 SQL Server Data Tools 中创建一个计算。
想象一下,在我的 OLAP 结构中,我有一个城市维度和一个卖家维度,以及一个事实。在城市维度中,我有一个城市、一个州和一个人口,这是一个维度中的度量。
我需要总结有销售的城市的人口。但我不能只总结有销售额的城市,我只能显示该州的总人口。一个卖家可以在许多城市销售。 示例:
我将按卖家 John 进行过滤,查询返回以下内容:
STATE | CITY | POPULATION
CA | Los Angeles | 10.000.000
CA | San Francisco | 1.000.000
CA | Sacramento | 1.000.000
CA | San Diego | 1.000.000
CA | Bakersfield | 500.000
Total 37.000.000
总和应该返回 13.500.000,但对我来说,总和返回 37.000.000,这是 CA 的人口。
我没有 MDX 方面的高级知识,无法使用此上下文创建计算成员,也无法提供示例。
简而言之,我只需要返回这个卖家有销售的城市的人口总和,但目前正在返回人口的总和,例如,如果我选择显示国家和城市,返回该国人口总数,如果我选择显示州和城市,则返回该州人口总数
【问题讨论】:
请添加您的试用版。 SUM(FILTER([Measures].[Population],[Sales Amount]>0)) 我用这个来计算人口的总和......但不起作用 【参考方案1】:如果您只想按卖家和城市显示人口总和,可以使用类似下面的查询。
SELECT Measures.Population
ON 0,
FILTER(Seller.SellerName.CHILDREN * City.City.CHILDREN, Measures.[Sales Amount] > 0)
ON 1
FROM [YourCube]
或
SELECT Measures.Population
ON 0,
(Seller.SellerName.CHILDREN * City.City.CHILDREN)
HAVING Measures.[Sales Amount] > 0
ON 1
FROM [YourCube]
显然,您必须用多维数据集中的实际维度名称替换。
编辑:
如果你只是想要卖家有销售的所有城市的人口总和,试试下面的代码
//Build a set of cities
with set CitiesForSeller as
exists(City.City.CHILDREN, strtoset('Seller.SellerName.&[SomeName]'), "<<Name of the measure group which has the population measure>>")
//Get the sum of population in all the cities combined
member measures.SumOfPopulation as
sum(CitiesForSeller,Measures.Population)
select measures.SumOfPopulation on 0,
CitiesForSeller
having measures.SumOfPopulation > 0
on 1
from [YourCube]
【讨论】:
是的,它有帮助,但我需要一个 MDX 计算,我在 SQL Server Data Tools 中制定它,我创建的示例没有显示每个城市的人口。以下示例: ____________________________________________________________________ SUM(([Measures].Population],FILTER([Sellers].Sellers].CHILDREN * [Geography].[City].CHILDREN,[Measures].[Sales Amount] > 0))) 不能正常工作...而且我不需要查询,我需要计算 好的,好的...我创建了这个计算 _______________________________________________________________________CREATE MEMBER CURRENTCUBE.[Measures].[Populacao Representante] AS SUM(NONEMPTY((Filter([Measures].[População],[Measures].[Valor Total] > 0),FILTER([CidadesRadiografia].[Cidade].[Cidade],[Measures].[Valor Total] > 0)))),
以上是关于如何计算 MDX 中组的总和?的主要内容,如果未能解决你的问题,请参考以下文章
如何将列添加到依赖于数据帧或外部数据帧中组的平均值的数据帧?