Excel使用切片器过滤CUBESET

时间:2017-06-20 03:07:11

标签: excel-formula mdx

基本上,我试图根据切片器在Excel中过滤CUBESET函数的结果,而我实际上并没有在任何地方。

我有一个两列的客户端表及其所属的状态,以及用户可以过滤的状态切片器。工作表的其他部分我希望在单元格中显示处于选定状态的所有客户端,因此我希望CUBERANKEDMEMBER使用由切片器筛选的CUBESET 。对于我硬编码值的基本情况,我尝试过:

= CUBESET("server\Clients", "FILTER([Client List].[FULL_NAME].Members,
[Client List].[State].Currentmember.Membervalue = 'QUEENSLAND')")`

但是这里的结果是空的(我使用CUBESETCOUNT检查了)。我确定问题是因为过滤器遍历[Client List].[FULL_NAME].Members,但我正在尝试过滤[Client List].[State]

如果这样的事情有效,我想做的事情就是:

= CUBESET("server\Clients", "FILTER([Client List].[FULL_NAME].Members, 
[Client List].[State].Currentmember.Membervalue = Slicer_State)")

知道一次只能选择一个州。

我对MDX并不是很了解,所以我怀疑答案是否存在,但我不确定该尝试什么。

1 个答案:

答案 0 :(得分:1)

我认为就你的第一个硬编码脚本而言:

=CUBESET("server\Clients", "FILTER([Client List].[FULL_NAME].Members, [Client List].[State].Currentmember.Membervalue = 'QUEENSLAND')")

您应该可以使用EXISTShttps://docs.microsoft.com/en-us/sql/mdx/exists-mdx

=CUBESET("server\Clients", "EXISTS([Client List].[FULL_NAME].[FULL_NAME].MEMBERS, {[Client List].[State].&[QUEENSLAND]})")

但值得扼杀以下内容,甚至更简单的脚本来检查上述每个元素是否正确:

=CUBESETCOUNT(CUBESET("server\Clients", "[Client List].[FULL_NAME].[FULL_NAME].MEMBERS")) // should return the number of members in full_name 

=CUBESETCOUNT(CUBESET("server\Clients", "{[Client List].[State].&[QUEENSLAND]}")) // should return 1