这里是 MDX 新手。 我正在尝试定义和聚合包含 IIF 条件的自定义度量。 假设对于这个数据模型:
类别 | 姓名 | 项目类型 | 价格 |
---|---|---|---|
A类 | 项目1 | 正常 | 4.0 |
A类 | 项目2 | 珍贵 | 5.0 |
我这样定义度量:
WITH Member [Measures].[WeightedMeasure] AS IIF(
[ItemType].CurrentMember IS [ItemType].[Precious],
2 * [Measures].[Price],
[Measures].[Price]
)
这在叶级别上计算正确,所以如果我在维度中有 ItemType,一切都很好。 但是,如果我尝试按类别聚合,IIF 条件不再匹配(因为它位于“叶子”上) 成员)。我无法添加具有预先缩放价格的列,因为因子(示例中为 2)可能是动态的。我还需要将其保留为度量(而不是查询的一部分),因为我需要稍后将其插入 TopCount(例如显示最昂贵的类别)。
这些问题似乎试图实现类似的目标: MDX IIF 语句聚合 (未回答)
MDX IIF 语句根据度量和层次结构叶子计算新成员 (需要自定义列,因此无法进行动态权重)
我曾尝试操纵 IIF 以对“后代”设置条件 - 但不确定是否可能。 另请阅读有关“范围”/过滤查询的内容 - 但我无法使示例适应我的简单模式。
我的方法假设您正在计算类别成员具有可迭代的 ItemType 子级的级别,如果 ItemType 不是当前上下文或多维数据集中切片的一部分,则可能无法直接解决更高级别的聚合问题。
WITH
Member [Measures].[WeightedPrice] AS
SUM(
[Category].CurrentMember.Children,
CASE WHEN [ItemType].CurrentMember IS [ItemType].[Precious]
THEN 2 * [Measures].[Price]
ELSE [Measures].[Price]
END
)