【问题标题】:Counting the number of facts in a cell in MDX在 MDX 中计算单元格中的事实数
【发布时间】:2020-02-28 14:45:20
【问题描述】:

这是一个包含两个维度和一个带有度量的事实的简单架构。

CREATE TABLE DimThingType (
    ThingTypeID          int        NOT NULL PRIMARY KEY,
    ThingTypeDescription varchar(8) NOT NULL
)

CREATE TABLE DimThing (
    ThingID   int        NOT NULL PRIMARY KEY,
    ThingName varchar(8) NOT NULL
)

CREATE FactFacts (
    FactID      int NOT NULL PRIMARY KEY,
    ThingID     int NOT NULL,
    ThingTypeID int NOT NULL,
    Turnips     int NOT NULL
)

现在在 MDX 中,我们可以对每个 事物类型芜菁 的数量求和。

SELECT 
    NON EMPTY { [Measures].[Trunips] } ON COLUMNS, 
    NON EMPTY { ([ThingType].MEMBERS) } ON ROWS 
FROM [Things]

现在,如果在这个度量值组中我创建一个名为 [Count of Facts] 的新度量值,其中属性 Source.[Binding Type] 设置为 [Row binding]AggregateFunction 设置为 Count,那么我还可以计算 事物的数量事物类型的/em>。

SELECT 
    NON EMPTY { [Measures].[Trunips], [Measures].[Count of Facts] } ON COLUMNS, 
    NON EMPTY { ([ThingType].MEMBERS) } ON ROWS 
FROM [Incidents] 

我真的必须添加这个新措施吗? 该数字是用于计算结果单元格中值的事实数,所以我不能通过查询获得吗? (如果我们在 SQL 中进行分组,那么它就是COUNT(*)。)

我绝对什么都做不了!

【问题讨论】:

    标签: ssas mdx mdx-query


    【解决方案1】:

    是的,您需要添加一个新措施(尽管它们也是一种替代方法)。多维数据集在处理时将事实值存储在 N 维单元中。因此,在查询时,您只能检索存储的内容。与 sql 不同,多维数据集不会在运行时对其求和。它只会获取该单元格中的值。

    有关如何解决您的查询的详细信息,请继续阅读。

    SELECT 
        NON EMPTY { [Measures].[Trunips] } ON COLUMNS, 
        NON EMPTY { ([ThingType].MEMBERS) } ON ROWS  FROM [Things]
    

    MDX 查询在 N 维平面的地址中解析。在上面的例子中,你有两个维度,所以它是一个二维平面的地址。

    现在您已经忽略了一个维度,而对于第二个维度,您已经使用了它所有可能的值。

    所以地址是({d1:dn},{All},{Turnips})。它读作 “未分组列出的第一维的所有值”,“分组的第二维的所有值”,该单元格返回“测量萝卜”。现在在这个单元格上没有计数度量。

    【讨论】:

    • @Richard Barraclough 有帮助吗?
    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2017-10-19
    • 2020-03-04
    • 2016-03-22
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多