我有一个带有层次结构的Product维度 - product_id,initial_price,product_name和Measures - units_sold,cost_per_unit,revenue_per_unit。对于每个product_id,我需要将initial_price与revenue_per_unit进行比较,然后根据比较将其分配给存储桶。
请考虑以下示例:
输入:
product_id initial_price revenue_per_unit
1 10 12
2 20 18
3 30 30
输出:
product_id bucket_name
1利润
2损失
3相同的
如何使用MDX实现这一目标?
答案 0 :(得分:0)
WITH Member [Measures].[Bucket] AS
CASE
WHEN [Measures].[initial_price] < [Measures].[revenue_per_unit] THEN
"Profit"
WHEN [Measures].[initial_price] > [Measures].[revenue_per_unit] THEN
"Loss"
ELSE
"Same"
END
SELECT {[Measures].[Bucket]}
ON COLUMNS,
[Product].[Product Name].Members
ON ROWS
FROM [yourcube]
应该提供你想要的东西。请注意,计算出的度量不需要返回数字,它们也可以在MDX中返回字符串(它们甚至可以为某些单元格返回字符串,为其他单元格返回一个数字)。
如果您没有e的价格。 G。聚合产品级别的平均价格,并希望在产品级别上进行分级,最好的解决方案根本不是在MDX中做到这一点,而是在多维数据集设计中:只需计算关系方面的桶,然后添加它作为产品维度的属性。
你没有说明其他方面,特别是时间。如果某些其他维度对于确定存储桶也很重要,则可能需要为存储桶添加单独的维度。