数据透视报表过滤器和相应的值:
预测版本为四月预报(因此只有1个值), Rev Sum Category是All(因此,没有过滤器),除了2个值之外,我该如何编写该表达式?
Rev Sum Product Summary是一个值, 区域为全部(因此,没有过滤器)
以下3个字段是应过滤除2个值以外的所有字段的,我该如何编写该表达式?
销售类型为多个项目(因此有多个值), 营销计划是多个项目(因此有很多价值), 产品族是多个项目(因此有很多值)
在数据透视表布局中,行标签为RevSumCategory
,列标签为小节,为否。通行证销售–实际。
我要创建的是最简单形式的MDX查询,该查询将生成与数据透视表中所示的结果相同的结果。对于具有权限的报告的任何用户,代码应足够简单,以便能够修改字段值。
请注意,在数据透视表报表过滤器中,有(4)个字段不是“全部”,而是被过滤了。
我的问题是:
(a)如何在MDX查询中包括数据透视报表过滤器?
(b)如何编写一个MDX查询表达式,该表达式对除2个值之外的所有值进行过滤。
当过滤器只有2个值时,就很容易了,我可以为该字段添加2个值,例如
[Business].[Business Summary].&[Field],[Business].[Business Summary].&
[Stores Field],
但是当过滤器是除2个值之外的所有(全部)过滤器时,我不能用相同的方式编写它,因为那样的话该字段的表达式将太长。
我的查询代码(进行中)在下面。
Select NON EMPTY [Measures].[Sell Thru Licenses - Actual] on Columns,
{[Product].[Rev Sum Category].&[value 1], [Product].[Rev Sum Category].&
[value 2]}) ON ROWS
From [Cube]
WHERE
([Forecast Version].[Forecast Version].&[April Forecast],
[Product].[Rev Sum Category].[All],
[Business].[Business Summary].&[Field],[Business].[Business Summary].&
[Stores Field],
[Product].[Rev Sum Product Summary].&[One Value],
[Geography].[Region].[All],
[Sale Type].[Sale Type].[this is the field that has multiple values]
希望有人可以帮助我为具有多个值的字段编写代码。谢谢。
答案 0 :(得分:0)
您的WHERE子句不起作用,因为您使用元组语法,该语法在每个层次结构中仅允许一个成员,而对于Business Summary
则不允许两个成员。稍后,我将首先讨论您关于否定/异常过滤器的主要问题:
您可以编写一个“负过滤器”,如下所示:
[Sale Type].[Sale Type].Members - { [Sale Type].[Sale Type].&[A], [Sale Type].[Sale Type].&[B] }
如果您要排除成员A
和B
。
但是,请注意,现在这是一个集合,而不是单个成员,因此WHERE子句中的表示法会稍微复杂一些,因为您无法使用简单的元组表示法,因此可以使用交叉联接运算符{{1} }:
*
最后,您可以使用集合交叉连接的相同方法来解决多选问题:您可以将过滤条件写为
...
WHERE
([Forecast Version].[Forecast Version].&[April Forecast],
[Product].[Rev Sum Category].[All],
[Business].[Business Summary].&[Field], // note there is only one member here
[Product].[Rev Sum Product Summary].&[One Value],
[Geography].[Region].[All])
*
([Sale Type].[Sale Type].Members - { [Sale Type].[Sale Type].&[A], [Sale Type].[Sale Type].&[B] })
我简化了它,假设您的多维数据集具有标准定义,即所有成员都是其层次结构的默认成员,因此可以在WHERE条件下将其省略。