首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用元组将列添加到MDX查询中

使用元组将列添加到MDX查询中
EN

Stack Overflow用户
提问于 2016-01-28 16:42:48
回答 1查看 392关注 0票数 0

我在SSAS多维数据集上运行了一个MDX查询,它返回大量的对象代码以及它们的周期余额。通过在行上使用交联接,我能够添加多个期间余额,但是我希望在上一个财政期间的期间结束余额中再添加一行,但似乎无法找到一种方法。

最初的查询是

代码语言:javascript
复制
  select 
    non empty 
        {
            [Object Code].[Object Code Number].[Object Code Number]
            *
            [Object Code].[Object Code Description].[Object Code Description]
            *
            [Object Code Pathing 1E 1R].[1E_R1 Value].[1E_R1 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R2 Value].[1E_R2 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R3 Value].[1E_R3 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R4 Value].[1E_R4 Value]
        }
  on rows,
        {
            [Measures].[Current Period Balance]
        }
        *
        {
        [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7]
        }
     on columns
  from [Finance]

当我试图再增加一列时

代码语言:javascript
复制
 select 
    non empty 
        {
            [Object Code].[Object Code Number].[Object Code Number]
            *
            [Object Code].[Object Code Description].[Object Code Description]
            *
            [Object Code Pathing 1E 1R].[1E_R1 Value].[1E_R1 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R2 Value].[1E_R2 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R3 Value].[1E_R3 Value]
            *
            [Object Code Pathing 1E 1R].[1E_R4 Value].[1E_R4 Value]
    }
 on rows,
        {
        [Measures].[Balance At Period End]
        *
        [Date].[Fiscal].[Fiscal Period]&[2016]&[7]
        },
        {
            [Measures].[Current Period Balance]
        }
        *
        {
        [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7]
        }
     on columns
 from [Finance]

我明白了:这句话由于含糊不清而无法解决。错误

如果我把它加进去

代码语言:javascript
复制
        {
            [Measures].[Current Period Balance],
            [Measures].[Balance At Period End]
        }
        *
        {
        [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7]
        }
     on columns

我得到所有期间的期末余额,而这在报告中不需要,我只需要最后一个期间的期末余额。

EN

回答 1

Stack Overflow用户

发布于 2016-01-29 08:23:03

下面是您的第一段麻烦代码:

代码语言:javascript
复制
crossjoin (
[Measures].[Current Period Balance]
 ,{
  [Date].[Fiscal].[Fiscal Period].&[2016]&[1]
 ,[Date].[Fiscal].[Fiscal Period].&[2016]&[2]
   ,[Date].[Fiscal].[Fiscal Period].&[2016]&[3]
  }
), //<<1
 crossjoin(
   [Measures].[Balance At Period End]
  ,{[Date].[Fiscal].[Fiscal Period].&[2016]&[3]}
 ) on columns
from [Finance]

在第1点,您已经关闭了第一个交联接,然后放置了一个逗号--这是语法错误。

您可以尝试将大括号从1移到语句的末尾:

代码语言:javascript
复制
crossjoin (
   [Measures].[Current Period Balance]
  ,{
     [Date].[Fiscal].[Fiscal Period].&[2016]&[1]
    ,[Date].[Fiscal].[Fiscal Period].&[2016]&[2]
    ,[Date].[Fiscal].[Fiscal Period].&[2016]&[3]
   }
  , //<<1
  crossjoin(
     [Measures].[Balance At Period End]
   ,{[Date].[Fiscal].[Fiscal Period].&[2016]&[3]}
  ) 
 ) on columns  //<<now closing initial crossjoin here
from [Finance]

好的,我刚刚通过以下方法测试了上面的内容,这不是一种有效的方法:

代码语言:javascript
复制
SELECT 
  CrossJoin
  (
    [Measures].[Internet Sales Amount]
   ,{
      [Date].[Calendar].[Date].&[20060628]
     ,[Date].[Calendar].[Date].&[20060629]
    }
   ,CrossJoin
    (
      [Measures].[Internet Order Quantity]
     ,{[Date].[Calendar].[Date].&[20060629]}
    )
  ) ON COLUMNS
 ,[Product].[Product Categories].[All] ON ROWS
FROM [Adventure Works];

我们得到以下错误:

查询(2,3)跨连接函数中多次使用度量值层次结构。

您可以切换到以下结构,创建一组元组。这确实运行了:

代码语言:javascript
复制
SELECT 
  {
      [Measures].[Internet Sales Amount]
    * 
      {
        [Date].[Calendar].[Date].&[20060628]
       ,[Date].[Calendar].[Date].&[20060629]
      }
   ,(
      [Measures].[Internet Order Quantity]
     ,{[Date].[Calendar].[Date].&[20060629]}
    )
  } ON COLUMNS
 ,[Product].[Product Categories].[All] ON ROWS
FROM [Adventure Works];

结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35067114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档