我有这样的地理层次结构:
我必须提取所有不同大陆的数据,但我必须从一个大陆中排除一个特定的城市。 我既不能使用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] } )
通过这种方式,我拥有了我想要的所有不同城市,但现在我应该将它们聚合在更高层次的大陆上。
关于如何做的任何想法?
答案 0 :(得分:0)
如果您不使用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子句的可能性变得棘手