0

如果度量值不存在于该维度上,我想过滤掉维度,但我有一些包含一些原始数据的度量,即 Infinity、1.#NN。我正在使用NON EMPTY(),但它没有正确过滤数据,因为如果所有指标都为空,它会过滤维度,但在我的情况下,它也会获取“无限”维度:

Mdx 查询:

SELECT
{ 
 [Measures].[1],
 [Measures].[2],
 [Measures].[3]
} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS

, NON EMPTY Hierarchize (
 {
  DrilldownLevel ( { [Roles].[Dimension].[All] } )
 }
) DIMENSION PROPERTIES PARENT_UNIQUE_NAME
, [Roles].[Roster Role].[Roster Role].[Roster Role - Enterprise]
, [Roles].[Roster Role].[Roster Role].[Roster Role - Group] ON ROWS
FROM [Cuve]
WHERE ( [Dates].[Calendar].[Calendar Year].&[2013], [Markets].[Market].&[1], [Areas].  [Area].&[8], [Roles].[Enterprise Role].&[2] )

如果任何指标为空,我不能NONEMPTY()删除维度,而如果所有指标都为空,我想删除。

我希望我可以过滤掉维度,即如果度量值不是整数(例如,“Infinity”或其他数据),或者通过NOT IN()某种函数过滤掉它。

谢谢

4

1 回答 1

2

首先,听起来您在度量的计算中除以 0。如果可以的话,我会重写它们以在分母为 0 的地方返回 null。这看起来像:

IIF([Measures].[denominator] = 0, Null, [Measures].[Numerator/[Measures].[Denominator])

然后你可以使用过滤器。我不太确定我对你的多维数据集的结构有足够的了解来编写你的查询,但试试这样的事情:

Select {
[Measures].[1], 
[Measures].[2], 
[Measures].3]} on COLUMNS, 
{ Filter([Roles].[Dimension].[Dimension].members, CoalesceEmpty([Measures].[1],[Measures].[2],[Measures].[3], 0) <> 0)
* ({[Roles].[Roster Role].[Roster Role].[Roster Role - Enterprise], [Roles].[Roster Role].[Roster Role].[Roster Role - Group]})} on ROWS
FROM [Cuve]
WHERE ( [Dates].[Calendar].[Calendar Year].&[2013], [Markets].[Market].&[1], [Areas].  [Area].&[8], [Roles].[Enterprise Role].&[2] )
于 2013-07-11T22:25:43.537 回答