Ssas 使用元组向MDX查询添加列
我在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]
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];
结果:
交叉连接
现在仅由星号*
表示,感谢您的格式化。但还是不行。我的初始查询中的行已经填充了对于行查询,我得到的度量值层次结构已出现在Axis0轴中。错误我已尝试清理原始帖子的格式,以帮助更好地说明我的问题。基本上,在您有“所有产品”列的地方,我需要有目标代码值交叉连接的乘积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]
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];