ili*_*ica 14 mdx member filter dimension
我想创建一个计算成员并按维度过滤它.这是工作示例:
(
[Policy].[Policy Status].&[Void],
[Policy].[Tran Type].&[Renewal],
[Measures].[FK Policy Distinct Count]
)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想像这样过滤它
(
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy],
[Measures].[FK Policy Distinct Count]
)
Run Code Online (Sandbox Code Playgroud)
比它不工作.它表示在元组中多次显示相同的层次结构.
另一件事是,如何排除行?这是个主意......
(
![Policy].[Policy Status].&[Void],
![Policy].[Policy Status].&[Policy],
[Measures].[FK Policy Distinct Count]
)
Run Code Online (Sandbox Code Playgroud)
Tul*_*x86 47
首先,理解MDX语法以及它如何与元组,成员和集合的概念相关是很重要的.
使用括号表示元组:
(
[Policy].[Policy Status].&[Void],
[Policy].[Tran Type].&[Renewal],
[Measures].[FK Policy Distinct Count]
)
Run Code Online (Sandbox Code Playgroud)
元组只能包含任何层次结构中的单个成员.
要从同一层次结构中的多个成员检索结果,您必须查询一个集合.MDX集由大括号表示:
{
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy]
}
Run Code Online (Sandbox Code Playgroud)
根据定义,一套是
零,一个或多个元组的有序集合.
因此,如果您希望[FK Policy Distinct Count]针对这两个成员查询度量,则集合的元组必须包含度量:
{
( [Policy].[Policy Status].&[Void], [Measures].[FK Policy Distinct Count] ),
( [Policy].[Policy Status].&[Policy], [Measures].[FK Policy Distinct Count] )
}
Run Code Online (Sandbox Code Playgroud)
为简化此表达式,可以交叉连接两组不同的维度:
{
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy],
[Policy].[Policy Status].&[Something],
[Policy].[Policy Status].&[Something else],
[Policy].[Policy Status].&[Yet another member]
}
*
{
[Measures].[FK Policy Distinct Count]
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以定义集合了,是时候从一个成员中删除一些成员了.在你的榜样,这听起来像你想的水平(其中,在MDX的发动机,是包括在层次结构的该级别的每个成员的立方体只是一组预定义)开始,并排除某些成员.MDX有很多在集合上运行的功能,我们将继续使用EXCEPT.
该EXCEPT函数有两个参数,第一个是要删除的集合,第二个是应该从第一个中删除的集合.它返回一组.
在这个例子中,我将假设[Policy].[Policy Status]是一个属性层次结构,并且它的唯一级别具有唯一名称[Policy].[Policy Status].[Policy Status].
EXCEPT(
[Policy].[Policy Status].[Policy Status],
{
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy]
}
)
Run Code Online (Sandbox Code Playgroud)
这将返回该[Policy].[Policy Status].[Policy Status]级别的每个成员,除了[Policy].[Policy Status].&[Void]和[Policy].[Policy Status].&[Policy].
为了获得有用的结果,我们可以通过度量交叉加入结果:
EXCEPT(
[Policy].[Policy Status].[Policy Status],
{
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy]
}
)
*
{
[Measures].[FK Policy Distinct Count]
}
Run Code Online (Sandbox Code Playgroud)
集合很好,但有时我们想要的就是将它们视为单个成员,就像计算出的成员要求一样.为此,我们需要使用聚合函数.聚合函数接受一个集合并返回表示整个集合的成员.
有许多的这些,并使用存储在您的立方体正确的取决于数据:MIN,MAX,COUNT,和SUM是其中的一些(见"数字函数" 的MDX函数引用了一个更完整的列表).在此示例中,我将假设您使用SUM聚合维度:
SUM(
EXCEPT(
[Policy].[Policy Status].[Policy Status],
{
[Policy].[Policy Status].&[Void],
[Policy].[Policy Status].&[Policy]
}
),
[Measures].[FK Policy Distinct Count]
)
Run Code Online (Sandbox Code Playgroud)
在这里,我已经将要聚合的度量作为第二个参数传递给SUM.
MDX是一种复杂的语言,支持许多常见和不常见的设置操作.如果你还没有,我建议花时间阅读在线提供的文档,或者给自己拿一本好的MDX书.有很多要知道的:)
<3
| 归档时间: |
|
| 查看次数: |
52221 次 |
| 最近记录: |