【问题标题】:MDX expression where dimension members become column totals维度成员变为列总计的 MDX 表达式
【发布时间】:2016-08-26 00:11:24
【问题描述】:

我的多维数据集 (SSAS 2014) 中有如下所示的数据:

Dim1    Dim2    Dim3        Meas1
Alpha   Marco   Chicago     10
Alpha   Polo    Atlanta     15
Alpha   Marco   Chicago     17
Beta    Polo    New York    21
Beta    Marco   Atlanta     31
Beta    Polo    Chicago     41

如何编写 MDX 查询以获得这样的结果?

Dim1    Dim2    ChicagoTotl/AtlantaTotl/NewYorkTotl
Alpha   Marco       27     /    0      /    0
Alpha   Polo        0      /    15     /    0
Beta    Marco       0      /    31     /    0
Beta    Polo        41     /    0      /    21
                                            ---
                                            135

在报告中 Dim1 和 Dim2 将成为用户可选择的过滤器。

但是如何将 Dim3 串成单独的列?

这个 MDX 是什么样子的?这种风格的列有名字吗?你叫我什么?

感谢您的帮助。

【问题讨论】:

    标签: ssas mdx cube


    【解决方案1】:

    你可以这样做:

    WITH 
      MEMBER [Measures].[ChicagoTotal] AS 
        (
          [Measures].[Meas1]
         ,[Dim3].[Hierarchy].[Chicago]
        ) 
      MEMBER [Measures].[NewYorkTotal] AS 
        (
          [Measures].[Meas1]
         ,[Dim3].[Hierarchy].[New York]
        ) 
      MEMBER [Measures].[AtlantaTotal] AS 
        (
          [Measures].[Meas1]
         ,[Dim3].[Hierarchy].[Atlanta]
        ) 
    SELECT 
      NON EMPTY 
        {
          [Measures].[ChicagoTotal]
         ,[Measures].[NewYorkTotal]
         ,[Measures].[AtlantaTotal]
        } ON 0
     ,NON EMPTY 
        [Dim1].[Hierarchy].MEMBERS * [Dim2].[Hierarchy].MEMBERS ON 1
    FROM [YourCube];
    

    【讨论】:

    • 这是有道理的。所以我将不得不使用我想要的度量的文字列表作为列?我将不得不在 SQL 查询中做几乎相同的事情,所以我并不感到惊讶。但是 MSX 无法根据一个成员的值计算出我的列的值?谢谢。这个周末我会试试,然后回复你。
    • @Steve 如果你想命名一个度量 ChicagoTotal,那么你需要创建一个名为 ChicagoTotal 的度量......如果你想要一个名为 ThisColumn 的列,那么你需要命名一个名为 ThisColumn 的列。是的,在 sql 中可以使用动态 sql 等来使列的命名动态化:如果您对链接服务器使用 OPENQUERY,那么您也可以使您的 mdx 字符串动态化。
    • @SouravA 你去度假了吗?
    • 没有伙伴。我希望。一直忙于项目工作......截止日期......会议......错过了 StackOverflow!
    • @SouravA 我想念你,伙计——很高兴你回来了!不过,您并没有错过太多 - mdx 明智的做法就是:我如何订购这一套?如何在 sql-server proc 中使用这个 mdx?都是一样的东西。
    【解决方案2】:

    假设 Meas1 的聚合类型是 Sum。那么查询将是这样的:

    SELECT [Dim3].[Hier3].MEMBERS on 0,  
    [Dim1].[Hier1].MEMBERS * [Dim2].[Hier2].MEMBERS on 1 
    FROM [Cube] WHERE ([Measures].[Meas1])  
    

    此查询将根据 Dim3.Hier3 中的成员自动创建列。

    【讨论】:

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