Ssas 使用元组向MDX查询添加列

Ssas 使用元组向MDX查询添加列,ssas,mdx,business-intelligence,olap,data-analysis,Ssas,Mdx,Business Intelligence,Olap,Data Analysis,我在SSAS多维数据集上运行了一个MDX查询,该查询返回许多对象代码和它们的周期余额。我可以通过在行上使用交叉连接来添加多个期间余额,但是我想在上一个会计期间的期末余额中再添加一行,但似乎无法找到方法 最初的查询是 select non empty { [Object Code].[Object Code Number].[Object Code Number] * [Object Code]

我在SSAS多维数据集上运行了一个MDX查询,该查询返回许多对象代码和它们的周期余额。我可以通过在行上使用交叉连接来添加多个期间余额,但是我想在上一个会计期间的期末余额中再添加一行,但似乎无法找到方法

最初的查询是

  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]
当我试图再添加一列时

 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]
我明白了 解析器:由于歧义,无法解析语句方言。错误

如果我加上

        {
            [Measures].[Current Period Balance],
            [Measures].[Balance At Period End]
        }
        *
        {
        [Date].[Fiscal].[Fiscal Period].&[2016]&[1]:[Date].[Fiscal].[Fiscal Period].&[2016]&[7]
        }
     on columns

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

这是您的第一条麻烦代码:

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]
我们得到以下错误:

查询(2,3)度量层次结构在 交叉连接函数

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

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];
结果:


交叉连接
现在仅由星号
*
表示,感谢您的格式化。但还是不行。我的初始查询中的行已经填充了
select非空的{[Object code].[Object code Number].[Object code Number].[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值]*[目标代码路径1E 1R].[1E_R3值].[1E_R3值]*[目标代码路径1E 1R].[1E_R4值].[1E_R4值].[1E_R4值]}行上,当我尝试将交叉连接添加到[度量值].[期末余额].[日期].[会计期间].[会计期间].[2016]和[7]
对于行查询,我得到的度量值层次结构已出现在Axis0轴中。错误我已尝试清理原始帖子的格式,以帮助更好地说明我的问题。基本上,在您有“所有产品”列的地方,我需要有目标代码值交叉连接的乘积
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];
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];