Udostępnij za pośrednictwem


Składniki obliczeniowe w Subselects i podmodułów

W poprzednich wersjach składniki obliczeniowe nie były dozwolone w subselects lub podmodułów.Jednakże począwszy od programu SQL Server 2008 są dozwolone i włączane przez właściwość połączenia.Ponadto wprowadzono nowe zachowanie dla składników obliczeniowych w subselects i podmodułów, w programie SQL Server 2008 R2.

Składniki obliczeniowe w Subselects i podmodułów

SubQueries Połączenia ciąg właściwości w ConnectionString lub DBPROPMSMDSUBQUERIES Właściwości w Właściwości obsługiwane XMLA (XMLA) definiuje zachowanie lub zasiłek składniki obliczeniowe lub zestawy obliczone na subselects lub podmodułów.W kontekście niniejszego dokumentu Podselekcja odnosi się do subselects i subcubes, chyba że określono inaczej.

Właściwość podkwerend umożliwia następujące wartości.

Wartość

Opis

0

Składniki obliczeniowe nie są dozwolone w subselects lub podmodułów.

Błąd jest wywoływane przy ocenie Podselekcja lub podmodułu, jeśli obliczeniowy element członkowski jest wywoływany.

1

Składniki obliczeniowe są dozwolone w subselects lub podmodułów, ale nie obiekty nadrzędne są wprowadzane w Podobszar przekazujących dane.

2

Składniki obliczeniowe są dozwolone w subselects lub podmodułów i nadrzędne są wprowadzane w Podobszar przekazujących dane.Ponadto mieszane ziarnistość jest dozwolona w zaznaczenie składników obliczeniowych.

Wartości 1 lub 2 w polu właściwość podkwerend dzięki składniki obliczeniowe używane do filtrowania zwracanie podobszaru z subselects.

Przykład pomoże wyjaśnienie pojęcia; Najpierw należy utworzyć obliczeniowy element członkowski i wydawany Pokaż wyżej wymienionych zachowanie subselect kwerendy.

Poniższy przykład tworzy obliczeniowy element członkowski dodający [Seattle Metro] miasta [Geografia].[Geografia] hierarchii w stanie Waszyngton.

Aby uruchomić przykład połączenia ciąg musi zawierać podkwerend właściwość o wartości 1 i wszystkich instrukcji MDX musi być uruchamiany w tej samej sesja.

Najpierw należy wydać następujące wyrażenie MDX:

//Remember to set Subqueries=1 in the connection string prior
//to issue these commands
//--> AS2008 behavior
CREATE MEMBER [Adventure Works].[Geography].[Geography].[State-Province].&[WA]&[US].[Seattle Metro Agg] 
   AS  AGGREGATE( 
                 { 
                   [Geography].[Geography].[City].&[Bellevue]&[WA]
                 , [Geography].[Geography].[City].&[Issaquah]&[WA]
                 , [Geography].[Geography].[City].&[Redmond]&[WA]
                 , [Geography].[Geography].[City].&[Seattle]&[WA]
                 }
                )  

Następnie należy wydać następujące kwerendy MDX, aby zobaczyć składniki obliczeniowe dozwolone w subselects.

Select [Date].[Calendar Year].members on 0,
       [Geography].[Geography].allmembers on 1
from (Select {[Geography].[Geography].[State-Province].&[WA]&[US].[Seattle Metro Agg]} on 0 from [Adventure Works])
Where [Measures].[Reseller Sales Amount]

Uzyskane wyniki są:

 

Wszystkie okresy

CY 2001

CY 2002

CY 2003

CY 2004

Seattle Metro Agg

$2,383,545.69

$291,248.93

$763,557.02

$915,832.36

$412,907.37

Jak już wspomniano, przed ascendants [Seattle Metro] nie istnieją Podobszar zwrócone po podkwerend = 1, stąd [Geografia]..Allmembers [Geografia] zawiera tylko obliczeniowy element członkowski.

Jeśli na przykład jest uruchamiany przy użyciu podkwerendy = 2, w połączeniu z ciąg, uzyskane wyniki są:

 

Wszystkie okresy

CY 2001

CY 2002

CY 2003

CY 2004

Wszystkich regionów geograficznych

(null)

(null)

(null)

(null)

(null)

United States

(null)

(null)

(null)

(null)

(null)

Waszyngton

(null)

(null)

(null)

(null)

(null)

Seattle Metro Agg

$2,383,545.69

$291,248.93

$763,557.02

$915,832.36

$412,907.37

Jak twierdzi przed przy użyciu SubQueries = 2, ascendants [Seattle Metro] w zwrócone Podobszar ale istnieją nie wartości dla tych członków, ponieważ nie ma żadnych członków zwykłych przewidzieć wartooci agregacji.Dlatego wartości NULL są przewidziane wszystkie obiekty nadrzędne z obliczeniowy element członkowski w tym przykładzie.

Aby zrozumieć zachowanie powyżej, należy pamiętać o fakt, że składniki obliczeniowe nie przyczyniają się do agregacji ich rodziców, jak członkowie regularnych, zobacz Składniki obliczeniowe i nazwane zestawy; Pierwsza oznacza, że filtrowanie według wyłącznie składniki obliczeniowe doprowadzi do ascendants puste, ponieważ brak członków zwykłych przyczyniać się do zagregowane wartości wynikowe Podobszar.Jeśli dodawanie członków zwykłych do wyrażenie filtrowania zagregowane wartości będzie pochodził z tych członków zwykłych.Kontynuowanie w powyższym przykładzie, jeżeli miast w Portland, Oregon i Miasto Spokane w Waszyngtonie, są dodawane do tej samej oś gdzie obliczeniowy element członkowski pojawi się; jak pokazano w następnym wyrażenie MDX:

Select [Date].[Calendar Year].members on 0,
       [Geography].[Geography].allmembers on 1
from (Select {
               [Seattle Metro Agg]
             , [Geography].[Geography].[City].&[Portland]&[OR]
             , [Geography].[Geography].[City].&[Spokane]&[WA]
             } on 0 from [Adventure Works]
     )
Where [Measures].[Reseller Sales Amount]

Uzyskiwane są następujące wyniki.

 

Wszystkie okresy

CY 2001

CY 2002

CY 2003

CY 2004

Wszystkich regionów geograficznych

$235,171.62

$419.46

$4,996.25

$131,788.82

$97,967.09

United States

$235,171.62

$419.46

$4,996.25

$131,788.82

$97,967.09

Oregon

$30,968.25

$419.46

$4,996.25

$17,442.97

$8,109.56

Portland

$30,968.25

$419.46

$4,996.25

$17,442.97

$8,109.56

97205

$30,968.25

$419.46

$4,996.25

$17,442.97

$8,109.56

Waszyngton

$204,203.37

(null)

(null)

$114,345.85

$89,857.52

Spokane

$204,203.37

(null)

(null)

$114,345.85

$89,857.52

99202

$204,203.37

(null)

(null)

$114,345.85

$89,857.52

Seattle Metro Agg

$2,383,545.69

$291,248.93

$763,557.02

$915,832.36

$412,907.37

W powyższych wyniki zagregowane wartości dla [wszystkich regionów geograficznych] [Stany Zjednoczone] [Oregon] i [Washington] pochodzą agregowania nad obiektów podrzędnych &[Portland]&[lub] i &[Spokane]&[WA].Nic nie pochodzi z obliczeniowy element członkowski.

Uwagi

Tylko globalnego lub sesja obliczana, członkowie mogą w Podselekcja lub podmodułu wyrażeń.Posiadające kwerendy składników obliczeniowych w wyrażeniu MDX podniesie błąd podczas Podselekcja lub podmodułu jest obliczane wyrażenie.