我需要在SQL Server数据工具中创建一个计算。
想象一下,在我的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的高级知识,我无法使用此上下文创建计算成员,也无法提供示例。
简而言之,我只需要返回卖家销售的城市人口总和,但目前正在返回人口总数,例如,如果我选择显示国家和城市,返回该国人口的总和,如果我选择显示州和城市,则返回该州人口的总和
答案 0 :(得分:1)
如果您只想显示卖家和城市的人口总和,您可以使用类似下面的查询。
SELECT Measures.Population
ON 0,
FILTER(Seller.SellerName.CHILDREN * City.City.CHILDREN, Measures.[Sales Amount] > 0)
ON 1
FROM [YourCube]
OR
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]