【问题标题】:MDX Calculated member with filter带过滤器的 MDX 计算成员
【发布时间】:2018-05-17 11:40:42
【问题描述】:

对 MDX 很陌生,所以这可能是一个菜鸟问题。但无法“翻译”任何解决方案的答案!

我有一个 Measure 可以计算我的行数,称为 [Measures].[Fact Count]

我还有一个名为 [Document] 的维度,其中有一个名为 [Is Completed] 的字段。

[Document].[Is Completed] 可以具有以下两个值之一:[Yes] 或 [No]。

[Document] 维度确实有几个其他字段,例如 [Document Type]

我想问一个问题,例如“我的不同文档类型有多大比例已完成”。

我尝试过像这样进行 [已完成计数]:

([Measures].[Fact Count],
[Document].[Is Completed].&[Yes])

然后像这样使用它:

[Measures].[Completed Count]/[Measures].[Fact Count]*100

但是(当然)[Completed Count] 然后会获取我所有已完成的文档,而不仅仅是每个例如[文档类型]

希望这对某人有意义!

【问题讨论】:

  • 您是在多维数据集中进行开发,还是在创建查询多维数据集的脚本,即您是在创建多维数据集吗?
  • 我正在我的多维立方体中创建我的计算成员。 Na 来自 SSMS 的查询。

标签: ssas mdx calculated-field cube-script


【解决方案1】:

啊,找到答案了!

由于我的 Dimension 包含“是”或“否”值,我可以将它们转换为 1 和 0,并将它们作为 [Measures].[Is Completed Sum] 添加到我的 [Measures]。顾名思义:我会对这些值求和。

那么计算就很直接了:

[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100

或者如果我确保不除以 0:

iif(
[Measures].[Fact Count] = 0,
null,
[Measures].[Is Completed Sum]/
[Measures].[Fact Count]*100
)

我仍然会在维度中保留“是/否”,因为我可以在需要时将它们用作过滤器。

whytheq,非常感谢您的所有意见!它非常有价值,让我的大脑朝着正确的方向旋转:-)

【讨论】:

    【解决方案2】:

    也许是对方需要更明确些?

    (
     ([Measures].[Fact Count],
      [Document].[Is Completed].&[Yes])
    /
     ([Measures].[Fact Count],
      [Document].[Is Completed].[All])
    )
    *100
    

    如果您有 Is Completed 的属性层次结构,请尝试使用它 - 可能像这样...

    (
     ([Measures].[Fact Count],
      [Is Completed].[Is Completed].[Is Completed].&[Yes])
    /
     ([Measures].[Fact Count],
      [Is Completed].[Is Completed].[All])
    )
    *100
    

    或者这个

    (
     ([Measures].[Fact Count],
      [Is Completed].[Is Completed].&[Yes])
    /
     ([Measures].[Fact Count],
      [Is Completed].[All])
    )
    *100
    

    如果您将度量更改为以下并输入 Yes | No ON COLUMNS 你开始得到正确的结果了吗?

    (
     ([Measures].[Fact Count])
    /
     ([Measures].[Fact Count],
      [Document].[Is Completed].[All])
    )
    *100
    

    【讨论】:

    • 几乎 - 但不在那里。我得到的号码是一个“固定”号码。这意味着我所有的文档类型都具有相同的百分比(即已完成文档的总数与文档总数的比较)。我应该提到我在我的多维数据集中进行计算,但我从连接到多维数据集的 Excel 进行查询。
    • 啊 - 我想我有个主意 - 你有 [Is Completed] 的属性层次结构吗?尝试交换它而不是使用多级用户层次结构文档
    • 不——没有层次结构。
    • 我认为这不可能:用户层次结构是从属性层次结构创建的:docs.microsoft.com/en-us/sql/analysis-services/…
    【解决方案3】:

    也许SCOPE 它。 (偷了whytheq的代码,我认为他得到了正确的答案)

    SCOPE ([Document].[Is Completed].&[Yes])
    THIS = (
     ([Measures].[Fact Count],
      [Document].[Is Completed].&[Yes])
    /
     ([Measures].[Fact Count],
      [Document].[Is Completed].[All])
    )
    *100
    END SCOPE
    

    关于

    由于我的维度包含“是”或“否”值,我可以将它们转换为 1 和 0 您可以改进您的模型并为您的维度添加一个新的列值。

    实际上只用 得到 1 和 0。VALUE

    【讨论】:

      猜你喜欢
      • 2014-06-24
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多