【问题标题】:Adding complex measures in MDX在 MDX 中添加复杂度量
【发布时间】:2026-02-03 04:30:01
【问题描述】:

我已经成功添加了基本的 sum/count/etc.. 简单的措施,但不知道如何添加更复杂的。

假设数据结构表示有货物的轨道并具有下一个结构:

  • 日期
  • id_track
  • id_articte
  • 金额
  • 费用

并想计算下一个度量:

  1. 平均商品价格,计算方式为 sum(cost) / sum(amount)
  2. 平均轨道成本。它是整个轨道总和(成本)之间的平均值。 Sql 表达式看起来像 sum(cost) / count(distinct id_track)

将这些度量添加到我的多维数据集的正确方法是什么,以防我需要在 Excel 中而不是 XMLA 中使用它们?

【问题讨论】:

    标签: mdx iccube


    【解决方案1】:

    使用我们在 MDX 'calculated measure' 中所说的解决复杂计算。

    计算度量支持 MDX 语言的全部功能。您可以查看有关计算度量的更多信息here。它们非常强大,支持超过 100 种功能 (function list)。

    如果您想为每个架构定义一次计算度量,我建议您在 Builder UI 选项卡的高级/脚本中定义它们。您可以先在 MDX IDE 中检查有效性,并在验证后将其移至脚本。

    【讨论】:

    • 感谢您的帮助。我已成功添加其中一个并坚持第二个。我找不到如何编写又大又好的 cmets,所以我用更多细节更新了我的问题
    【解决方案2】:

    平均商品价格,计算方式为 sum(cost) / sum(amount)

    这看起来像下面这样:

    WITH MEMBER [Measures].[AvgPrice] AS
      AVG(
        EXISTING([Item].[Item].MEMBERS)
       ,[Measures].[COST]
      )
    ...
    

    或者

    WITH MEMBER [Measures].[AvgPrice] AS
      [Measures].[COST] 
      / 
      [Measures].[AMOUNT] 
    ...
    

    平均轨道成本。它是整个轨道的总和(成本)之间的平均值。 Sql 表达式看起来像 sum(cost) / count(distinct id_track)

    WITH MEMBER [Measures].[AvgTrackCost] AS
      AVG(
        EXISTING([TrackItem].[TrackItem].MEMBERS)
       ,[Measures].[COST]
      )
    ...
    

    我不得不猜测您的多维数据集中存在以下内容:

    [Measures].[COST]
    [Measures].[AMOUNT] 
    [Item].[Item].MEMBERS
    [TrackItem].[TrackItem].MEMBERS
    

    【讨论】:

    • 感谢您的帮助。我已成功添加其中一个并坚持第二个。我找不到如何编写又大又好的 cmets,所以我用更多细节更新了我的问题