mdx - MDX 从层次结构级别中排除
问题描述
我有一个这样的地理层次结构:
- 1级:大陆
- 2级:区域
- 3级:城市
我必须提取所有不同大陆的数据,但我必须从一个大陆中排除特定城市。我既不能使用 WHERE 子句也不能使用嵌套的 FROM 来过滤它。我尝试了许多解决方案,例如 EXCEPT、FILTER 和“-”功能,但都没有奏效。
这是我错误尝试之一的示例,它提取数据但不排除我不想要的城市:
Except(
[Zone].[GeographyHierarchy].[Continent].ALLMEMBERS,
{
Descendants(
[Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant]
, [Zone].[GeographyHierarchy].[Continent], SELF_AND_BEFORE ) }
)
任何人都可以帮助找到一个可行的解决方案吗?谢谢你们。
编辑:
我认为通过处理层次结构的最高级别没有解决方案,所以我开始在最低级别(城市)进行过滤:
Except( [Zone].[GeographyHierarchy].[City].ALLMEMBERS,
{ [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant] } )
这样我就有了我想要的所有不同的城市,但我现在应该将它们聚合到更高级别的大陆上。
关于如何做的任何想法?
解决方案
如果您不使用WHERE
子句,那么您需要为包含排除项的大陆创建一个新的计算成员
WITH
MEMBER [Zone].[GeographyHierarchy].[ALL].[ContinentIWant_exclX] AS
[Zone].[GeographyHierarchy].[Continent].&[ContinentIWant]
- [Zone].[GeographyHierarchy].[Continent].&[ContinentIWant].&[AreaIWant].&[CityIDontWant]
SET [Continents] AS
EXCEPT(
[Zone].[GeographyHierarchy].[Continent].MEMBERS,
[Zone].[GeographyHierarchy].[Continent].&[ContinentIWant]
)
+
[Zone].[GeographyHierarchy].[ALL].[ContinentIWant_exclX]
...
不理想,但没有使用 WHERE 子句的可能性,事情变得棘手
推荐阅读
- r - 将点分配给 r 中的网格
- python - `conda install -c 期间的“解决环境”
tensorflow` 需要 3+ 分钟,但稍微更改名称会显着减少时间 - javascript - javascript异步:无法读取未定义的属性'then'
- algorithm - 从 a、b 和 a^n 以 p 为模计算 b^n
- android - AIDE OpenGL es 2.0 三角形不会渲染
- javascript - PHP脚本状态栏
- php - 更改 WampServer PHP Web 版本
- c - 使用多线程解析错误的参数 - c
- unity3d - 如何在我的 Unity 应用程序向用户请求权限之前添加通知?
- python-3.x - 合并多个 mp4 视频和图像