我有一个定义了组织结构层次结构的简单数据立方体。在多维数据集内的计算中,我希望根据MDX 查询的WHERE子句中当前使用的组织项目级别进行不同的计算。
因此,假设我有 5 个级别的组织结构,对于最后一个级别(商店级别),我想更改使用表达式进行计算的方式,例如:
IIF([Organization Structure].[Parent Id].LEVEL IS
[Organization Structure].[Parent Id].[Level 05], 'THIS IS STORE', 'THIS IS NOT')
这在 Visual Studio 浏览器中会产生我们真正想要的东西:
和使用 MDX 查询一样:
SELECT { [Measures].[TEST] } ON COLUMNS
FROM [DataCubeName]
WHERE
{
[Organization Structure].[Parent Id].&[123]
}
当我们想在WHERE子句中使用多个组织结构项时,问题就开始了。这个子句中只允许有来自同一级别的项目,我仍然想知道它是哪个级别,但是当然当我们将第二个项目添加到WHERE时,如下所示:
SELECT { [Measures].[TEST] } ON COLUMNS
FROM [DataCubeName]
WHERE
{
[Organization Structure].[Parent Id].&[123],
[Organization Structure].[Parent Id].&[124]
}
我收到“当前成员失败,因为属性的坐标包含一个集合”的错误。
这就是为什么在我的表达中我尝试在许多不同的配置中使用 ITEM(0) 函数,但我只是找不到在WHERE子句中当前使用的一组项目上使用它的方法......所以大问题是:
如何获取当前正在执行的 WHERE 子句中列出的一组项目,以便我可以在该集合上使用 Item(0),或者是否有任何其他方法可以检索当前选定项目的级别,知道它们必须是同一水平?