【问题标题】:Conditional records count with MDX, SQL Server BI使用 MDX、SQL Server BI 计算条件记录
【发布时间】:2011-06-28 15:12:07
【问题描述】:

这可能是一个简单的 MDX 问题,但我花了 2 天没有运气。

我有一个包含以下列的简单事实表:

ID        state        type        price

001        CA          TRUCK       50300
002        MA          BIKE        3010
003        MA          BOAT        0
004        CO          BOAT        20100
...        ...

我有一个具有 2 个维度、状态和类型的多维数据集。现在我想计算价格 > 0 的这两个维度的行数。我可以在不创建第三维度(id)的情况下做到这一点吗?我该怎么做呢?谢谢!

【问题讨论】:

    标签: count conditional ssas mdx


    【解决方案1】:

    您可以首先在事实表/视图中创建一个新列 -> CountRows 为 1,其中价格 > 0,否则为 NULL。例如。 (在 T-SQL 中):

    ...
    CASE
        WHEN Price > 0 THEN 1
        ELSE NULL
    END CountRows
    ...
    

    然后,在此列的顶部创建一个 Sum 聚合类型的新度量,您应该可以开始了。在上面的示例中,这个新度量将为 State.MA 和 Type.Boat 提供 1。

    【讨论】:

    • 是的,这就是我最终所做的——在 ID 上创建一个新维度也可以,但性能非常糟糕。我最终创建了一个与事实表平行的单独列表计数表。但我更喜欢你的方法。谢谢!
    • 我会使用计数聚合类型而不是总和,应该更快。
    • 不管是 Sum 还是列绑定的 Count。它们都是完全相加的,它们的性能应该没有差异。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2013-07-22
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    相关资源
    最近更新 更多