mdx交叉连接维度和度量

时间:2014-05-19 14:12:43

标签: mdx

我是MDX的新手,查看此查询,为什么[Top Product Sales]中交叉联接中的item(0)仅返回Internet Sales Amount?交叉连接是否应该返回一组(产品,互联网销售额)?那么为什么item(0)会返回互联网销售额而不是产品?

    WITH
    MEMBER [Measures].[Top Product Sales] AS
    {
    EXISTING
    TopCount(
    [Product].[Product].[Product].Members,
    1,
    ([Measures].[Internet Sales Amount])
    ) *
    {[Measures].[Internet Sales Amount]}
    }.Item(0)
    ,FORMAT_STRING="Currency"

    SELECT
    {
    ([Measures].[Internet Sales Amount]),
    ([Measures].[Top Product Sales])
    } ON COLUMNS,
    {
    ([Date].[Calendar Year].[CY 2005]),
    ([Date].[Calendar Year].[CY 2006]),
    ([Date].[Calendar Year].[CY 2007]),
    ([Date].[Calendar Year].[CY 2008])
    } ON ROWS
    FROM [Adventure Works]

enter image description here

如果我运行以下查询,我从两个维度(产品和互联网销售额)得到一个集合,这对我来说很有意义,但为什么上面的交叉加入只返回互联网销售额?

    WITH
    set x AS
    { 
    TopCount(
    [Product].[Product].[Product].Members,
    1,
    ([Measures].[Internet Sales Amount])
    ) *
    {[Measures].[Internet Sales Amount]}
    }

    SELECT
    {} ON COLUMNS,
    x ON ROWS
    FROM [Adventure Works]

enter image description here

1 个答案:

答案 0 :(得分:0)

实际上,查询中的Item(0)会返回一个由产品和度量组成的元组。但是您的第一个SELECT语句不使用该元组,而是[Measures].[Top Product Sales],它不是元组,而是单个层次结构的成员,即度量层次结构。您在WITH子句中定义了它,以便在每次评估元组时提供元组的值,但不是元组的别名。使用WITH MEMBER子句中的任何表达式将其转换为简单成员。

在Analysis Services中,您只能在WITH子句中创建成员和集,而不能创建元组。