2008-09-29 18 views
11

Bir OLAP veritabanında çalışıyorum; Şirket -> Bölge -> Alan - düzeylerinden oluşan bir 'Konum' hiyerarşisi var. > Site -> Oda. Şirket düzeyinde belirli bir üyenin tüm torunlarını almak için aşağıdaki MDX'i kullanıyorum.Belirli bir üyeyi daha yüksek bir düzeydeki bir üyenin tüm alt öğelerini alan bir MDX çağrısından nasıl hariç tutulur

DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE) 

Artık rapordan "Yedekli" adlı belirli bir Bölge'yi dışlama zorunluluğum var. Bu Bölge'yi (ve tüm torunlarını) dışlamak için yukarıdaki MDX'i nasıl değiştirebilirim? Bu Bölgenin "Yedek" olarak adlandırılacağını biliyorum, ancak değişebileceğinden, diğer Bölge adlarından herhangi birini kodlamak istemiyorum.

cevap

21

EXCEPT işlevi bir takım alır ve istemediğiniz üyeleri kaldıracaktır. Bu ikinci sözü kadarıyla dışında size ilk sette her şeyi verir

EXCEPT(
{DESCENDANTS([Location].[Test Company],[Location].[Site], SELF_AND_BEFORE)}, 
{DESCENDANTS([Location].[Whatever].[Redundant],[Location].[Site], SELF_AND_BEFORE)} 
) 

: Durumda da söylemek gerekir. Böyle anlamak kolay:

EXCEPT({the set i want}, {a set of members i dont want}) 

Üçüncü (opsiyonel) argüman dert etmenize gerek olmamalı: http://msdn.microsoft.com/en-us/library/ms144900.aspx

0

Kullanmak için sadece hiyerarşi için üye dönen "-" Eğer don' bir üyeyi dışlamak İstemek. Bilinmeyen üyeleri şu şekilde yok sayıyorum:

select 
{[Module].[Hierarchy].[Module].Members - [Module].[Hierarchy].[Module].[Unknown]} on rows, 
{[Date].[Month-day].[Day Of Month].Members - [Date].[Month-day].[Day Of Month].[Unknown]} on  columns 
from [StatsView] 
where {[Measures].[Maintainability Index]} 
İlgili konular