Udostępnij za pośrednictwem


Zaznacz instrukcję (MDX)

Pobiera dane z określonego moduł.

Składnia

[ WITH <SELECT WITH clause> 
   [ , <SELECT WITH clause>...n ] 
] 
SELECT 
     [ * 
    | ( <SELECT query axis clause> 
                  [ , <SELECT query axis clause>,...n ] 
            ) 
            ]
FROM 
   <SELECT subcube clause> 
      [ <SELECT slicer axis clause> ]
      [ <SELECT cell property list clause> ]

<SELECT WITH clause> ::=
     ( CELL CALCULATION <CREATE CELL CALCULATION body clause> ) 
   | ( [ CALCULATED ] MEMBER <CREATE MEMBER body clause>) 
   | ( SET <CREATE SET body clause>)

<SELECT query axis clause> ::=
   [ NON EMPTY ] Set_Expression
   [ <SELECT dimension property list clause> ] 
      ON 
            Integer_Expression 
       | AXIS(Integer) 
       | COLUMNS 
       | ROWS 
       | PAGES 
       | SECTIONS 
       | CHAPTERS 

<SELECT subcube clause> ::=
      Cube_Name 
   | [NON VISUAL] (SELECT 
                  [ * 
       | ( <SELECT query axis clause> [ , 
           <SELECT query axis clause>,...n ] ) 
         ] 
            FROM 
         <SELECT subcube clause> 
         <SELECT slicer axis clause> )

<SELECT slicer axis clause> ::= 
      WHERE Tuple_Expression

<SELECT cell property list clause> ::= 
   [ CELL ] PROPERTIES CellProperty_Name 
      [ , CellProperty_Name,...n ]

<SELECT dimension property list clause> ::=
   [DIMENSION] PROPERTIES 
      (DimensionProperty_Name 
         [,DimensionProperty_Name,...n ] ) 
    | (LevelProperty_Name 
         [, LevelProperty_Name,...n ] ) 
    | (MemberProperty_Name 
         [, MemberProperty_Name,...n ] )

Argumenty

  • Set_Expression
    Prawidłowe wyrażenie Multidimensional Expressions (MDX), które zwraca zestaw.

  • Integer
    Liczba całkowita od 0 do 127.

  • Cube_Name
    Prawidłowy ciąg zawiera nazwę moduł.

  • Tuple_Expression
    Prawidłowe wyrażenie Multidimensional Expressions (MDX), które zwraca spójna kolekcja.

  • CellProperty_Name
    Nieprawidłowy ciąg, który reprezentuje komórka właściwość.

  • DimensionProperty_Name
    Prawidłowy ciąg, który reprezentuje właściwość wymiar.

  • LevelProperty_Name
    Prawidłowy ciąg, który reprezentuje właściwość poziom.

  • MemberProperty_Name
    Nieprawidłowy ciąg, który reprezentuje właściwość element członkowski.

Uwagi

<SELECT slicer axis clause> Wyrażenie musi zawierać członków z wymiarów i hierarchii innych niż wskazane w określonym <SELECT query axis clause> wyrażeń.

Jeśli atrybut w moduł jest pominięty z określonego <SELECT query axis clause> wyrażeń i <SELECT slicer axis clause> wartość atrybut domyślny element członkowski jest dodane niejawnie na oś fragmentatora.

Opcja bez VISUAL w instrukcja subselect umożliwia odfiltrować członków, podczas gdy łączne true zamiast filtrowanego sum.Umożliwia kwerendy górny dziesięciu sprzedaży (osób/produkty/regiony) i uzyskać prawdziwe całkowitą wielkość sprzedaży dla wszystkich członków poszukiwanej, zamiast całkowitej wartości sprzedaży dla najważniejszych zwracane.Zobacz przykłady poniżej, aby uzyskać więcej informacji.

Składniki obliczeniowe mogą być zawarte w <Wybierz kwerendę oś klauzula> ilekroć połączenie został otwarty za pomocą połączenia ciąg parametr subqueries=1; zobacz Właściwości obsługiwane XMLA (XMLA) i ConnectionString dla parametru zużycie.Przykładem jest dostarczany na składniki obliczeniowe w subselects.

Autoexists

Kiedy dwa lub więcej atrybutów wymiar są używane w instrukcja SELECT, Analysis Services ocenia atrybutów wyrażenia, aby upewnić się, że członkowie tych atrybutów właściwie są ograniczone do spełnienia kryteriów innych atrybutów.Załóżmy, że pracujesz z atrybutów z wymiar Geografia.Jeśli jedno wyrażenie, które zwraca wszystkie elementy członkowskie z atrybut miasta i innego wyrażenia członków tego granicach z atrybut kraju do wszystkich krajów w Europie, następnie spowoduje członków Miasto są ograniczone do tych miast, które należą do krajów Europy.Ta cecha Analysis Services dotyczy tylko atrybuty w tym samym i nosi nazwę Autoexists wymiar.Autoexists dotyczy tylko atrybuty z tego samego wymiar, ponieważ będzie próbował zapobiec rekordów wymiar wykluczone w jedno wyrażenie atrybut zostaną uwzględnione przez inne wyrażenia atrybutu.Autoexists może być rozumiany jako przecięcie powstałe wyrażeń różne atrybuty nad rekordów wymiar.Zobacz poniższe przykłady poniżej:

//Obtain the Top 10 best reseller selling products by Name

with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'

set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'

set Preferred10Products as '

{[Product].[Model Name].&[Mountain-200],

[Product].[Model Name].&[Road-250],

[Product].[Model Name].&[Mountain-100],

[Product].[Model Name].&[Road-650],

[Product].[Model Name].&[Touring-1000],

[Product].[Model Name].&[Road-550-W],

[Product].[Model Name].&[Road-350-W],

[Product].[Model Name].&[HL Mountain Frame],

[Product].[Model Name].&[Road-150],

[Product].[Model Name].&[Touring-3000]

}'

select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,

Top10SellingProducts on 1

from [Adventure Works]

Otrzymany zestaw wyników jest:

 

Kwota sprzedaży sprzedawcy

Kwota rabatu

Rabat PCT

Rower górski 200

$14,356,699.36

$19,012.71

0.13%

Road-250

$9,377,457.68

$4,032.47

0.04%

Mountain-100

$8,568,958.27

$139,393.27

1.63%

Road-650

$7,442,141.81

$39,698.30

0.53%

Touring-1000

$6,723,794.29

$166,144.17

2.47%

Drogi-550-W

$3,668,383.88

$1,901.97

0.05%

Drogi-350-W

$3,665,932.31

$20,946.50

0.57%

Rama górska HL

$3,365,069.27

$174.11

0.01%

Road-150

$2,363,805.16

$0.00

0.00%

Touring-3000

$2,046,508.26

$79,582.15

3.89%

Zestaw uzyskanych produktów wydaje się być taka sama, jak Preferred10Products; tak więc Weryfikowanie zestaw Preferred10Products:

with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'

set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'

set Preferred10Products as '

{[Product].[Model Name].&[Mountain-200],

[Product].[Model Name].&[Road-250],

[Product].[Model Name].&[Mountain-100],

[Product].[Model Name].&[Road-650],

[Product].[Model Name].&[Touring-1000],

[Product].[Model Name].&[Road-550-W],

[Product].[Model Name].&[Road-350-W],

[Product].[Model Name].&[HL Mountain Frame],

[Product].[Model Name].&[Road-150],

[Product].[Model Name].&[Touring-3000]

}'

select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,

Preferred10Products on 1

from [Adventure Works]

Według następujące wyniki obu zestawów (Top10SellingProducts, Preferred10Products) są takie same

 

Kwota sprzedaży sprzedawcy

Kwota rabatu

Rabat PCT

Rower górski 200

$14,356,699.36

$19,012.71

0.13%

Road-250

$9,377,457.68

$4,032.47

0.04%

Mountain-100

$8,568,958.27

$139,393.27

1.63%

Road-650

$7,442,141.81

$39,698.30

0.53%

Touring-1000

$6,723,794.29

$166,144.17

2.47%

Drogi-550-W

$3,668,383.88

$1,901.97

0.05%

Drogi-350-W

$3,665,932.31

$20,946.50

0.57%

Rama górska HL

$3,365,069.27

$174.11

0.01%

Road-150

$2,363,805.16

$0.00

0.00%

Touring-3000

$2,046,508.26

$79,582.15

3.89%

W poprzednich przykładach utworzyliśmy dwa zestawy: jedno wyrażenie obliczeniowe, a drugi jako wyrażenie stała.Poniższe przykłady ilustrują różne podtypy z Autoexists.

Autoexists mogą być stosowane płytkich lub głębokich wyrażenia.Ustawienie domyślne to głębokie.Poniższy przykład będzie ilustrują pojęcia głębokie Autoexists.W przykładzie mamy filtrowania Top10SellingProducts przez produktu [Product].Atrybut [linii produktów] dla tych grup [górskich].Należy zauważyć, że zarówno atrybuty (fragmentator i oś) należą do tego samego wymiar [produktu Product].

with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'

set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'

// Preferred10Products set removed for clarity

select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,

Top10SellingProducts on 1

from [Adventure Works]

where [Product].[Product Line].[Mountain]

Generuje następujący zestaw wyników:

 

Kwota sprzedaży sprzedawcy

Kwota rabatu

Rabat PCT

Rower górski 200

$14,356,699.36

$19,012.71

0.13%

Mountain-100

$8,568,958.27

$139,393.27

1.63%

Rama górska HL

$3,365,069.27

$174.11

0.01%

Mountain-300

$1,907,249.38

$876.95

0.05%

Rower górski 500

$1,067,327.31

$17,266.09

1.62%

Mountain-400-W

$592,450.05

$303.49

0.05%

Rama górska LL

$521,864.42

$252.41

0.05%

Górskie ML ramki w

$482,953.16

$206.95

0.04%

Rama górska ML

$343,785.29

$161.82

0.05%

Women's Mountain Shorts

$260,304.09

$6,675.56

2.56%

zestaw wyników poprzednich mamy siedem rolnikom do listy Top10SellingProducts i Mountain-200 Mountain-100 i rama górska HL przeniósł się na górze listy.zestaw wyników poprzednich przeplatane były te trzy wartości

Nazywa głęboko Autoexists, ponieważ zestaw Top10SellingProducts jest szacowany na spełniają warunki skalowania kwerendy.Głębokie Autoexists oznacza, że wszystkie wyrażenia będą oceniane spełniać podziałowej miejsca możliwe po zastosowaniu wyrażenia fragmentator sub wyrażeń select na oś i itd.

Jednak jeden ma być możliwe do wykonania analizy nad Top10SellingProducts jako równoważne z Preferred10Products, jak w następującym przykładzie:

with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'

set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'

set Preferred10Products as '

{[Product].[Model Name].&[Mountain-200],

[Product].[Model Name].&[Road-250],

[Product].[Model Name].&[Mountain-100],

[Product].[Model Name].&[Road-650],

[Product].[Model Name].&[Touring-1000],

[Product].[Model Name].&[Road-550-W],

[Product].[Model Name].&[Road-350-W],

[Product].[Model Name].&[HL Mountain Frame],

[Product].[Model Name].&[Road-150],

[Product].[Model Name].&[Touring-3000]

}'

select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,

Preferred10Products on 1

from [Adventure Works]

where [Product].[Product Line].[Mountain]

Generuje następujący zestaw wyników:

 

Kwota sprzedaży sprzedawcy

Kwota rabatu

Rabat PCT

Rower górski 200

$14,356,699.36

$19,012.71

0.13%

Mountain-100

$8,568,958.27

$139,393.27

1.63%

Rama górska HL

$3,365,069.27

$174.11

0.01%

Wyniki powyższych krojenie daje wynik, zawierającej tylko produkty z Preferred10Products, które są częścią grupy [górskich] produktu [Product].[Linii produktów]; zgodnie z oczekiwaniami, ponieważ Preferred10Products jest wyrażenie stała.

Ten zestaw wyników jest również rozumieć jako Autoexists skrócona.Jest tak, ponieważ wyrażenie jest sprawdzane przed klauzula skalowania.W poprzednim przykładzie wyrażenie było wyrażenie stała dla celów ilustracyjnych do koncepcję.

Zachowanie Autoexists mogą być modyfikowane w sesja poziom używający Autoexists połączenia ciąg właściwość.Poniższy przykład rozpoczyna się od otwarcia nowej sesja i dodanie Autoexists=3 Właściwości połączenia ciąg.W tym celu w przykładzie należy otworzyć nowe połączenie.Po ustanowieniu połączenia z ustawieniem Autoexist pozostanie w mocy do zakończenia tego połączenia.

with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'

set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'

//Preferred10Products set removed for clarity

select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,

Top10SellingProducts on 1

from [Adventure Works]

where [Product].[Product Line].[Mountain]

Zestaw wyników następujących teraz pokazuje skrócona zachowanie Autoexists.

 

Kwota sprzedaży sprzedawcy

Kwota rabatu

Rabat PCT

Rower górski 200

$14,356,699.36

$19,012.71

0.13%

Mountain-100

$8,568,958.27

$139,393.27

1.63%

Rama górska HL

$3,365,069.27

$174.11

0.01%

Autoexists zachowanie można modyfikować za pomocą AUTOEXISTS = parametr [1|2|3] w połączeniu z ciąg; zobacz Właściwości obsługiwane XMLA (XMLA) i ConnectionString dla parametru zużycie.

Przykłady

Poniższy przykład zwraca sumę Measures.[Order Quantity] element członkowski, zagregowane w ciągu pierwszych ośmiu miesięcy roku kalendarzowego 2003 znajdujących się w Date wymiar, z Adventure Works moduł.

WITH MEMBER [Date].[Calendar].[First8Months2003] AS
    Aggregate(
        PeriodsToDate(
            [Date].[Calendar].[Calendar Year], 
            [Date].[Calendar].[Month].[August 2003]
        )
    )
SELECT 
    [Date].[Calendar].[First8Months2003] ON COLUMNS,
    [Product].[Category].Children ON ROWS
FROM
    [Adventure Works]
WHERE
    [Measures].[Order Quantity]

Aby zrozumieć NON VISUAL, przykładzie jest kwerenda [Adventure Works] uzyskanie [odsprzedawcy Sales Amount] dane tabela, gdzie kategorie produktu są kolumny i typy biznesowych odsprzedawcy wierszy.Należy zauważyć, że sumy są podane dla produktów i sprzedawców.

Wybierz następujące instrukcja:

select [Category].members on 0,

[Business Type].members on 1

from [Adventure Works]

where [Measures].[Reseller Sales Amount]

Generuje następujące wyniki:

 

Wszystkie produkty

Accessories

Bikes

Clothing

Components

Wszystkich sprzedawców.

$80,450,596.98

$571,297.93

$66,302,381.56

$1,777,840.84

$11,799,076.66

Specjalizacja Bike Shop

$6,756,166.18

$65,125.48

$6,080,117.73

$252,933.91

$357,989.07

Wartości dodanej sprzedawcy

$34,967,517.33

$175,002.81

$30,892,354.33

$592,385.71

$3,307,774.48

Magazyn

$38,726,913.48

$331,169.64

$29,329,909.50

$932,521.23

$8,133,313.11

Do utworzenia tabela zawierającej dane tylko dla theAccessories i odzieżowych, wartość dodana sprzedawcy i sprzedawcom magazynu, jeszcze prowadzenie ogólnej sumy może być zapisany w następujący sposób za pomocą innych niż wizualne:

select [Category].members on 0,

[Business Type].members on 1

from NON VISUAL (Select {[Category].Accessories, [Category].Clothing} on 0,

{[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 1

from [Adventure Works])

where [Measures].[Reseller Sales Amount]

Generuje następujące wyniki:

 

Wszystkie produkty

Accessories

Clothing

Wszystkich sprzedawców.

$80,450,596.98

$571,297.93

$1,777,840.84

Wartości dodanej sprzedawcy

$34,967,517.33

$175,002.81

$592,385.71

Magazyn

$38,726,913.48

$331,169.64

$932,521.23

Do utworzenia tabela, wizualnie sumy kolumn, ale wiersz sum przełącza true łącznie wszystkie [Kategorie], powinny być wydawane następującej kwerendy:

select [Category].members on 0,

[Business Type].members on 1

from NON VISUAL (Select {[Category].Accessories, [Category].Clothing} on 0

from ( Select {[Business Type].[Value Added Reseller], [Business Type].[Warehouse]} on 0

from [Adventure Works])

)

where [Measures].[Reseller Sales Amount]

Należy zwrócić uwagę, jak VISUAL nie stosuje się tylko do [kategorii].

Kwerendy powyżej generuje następujące wyniki:

 

Wszystkie produkty

Accessories

Clothing

Wszystkich sprzedawców.

$73,694,430.80

$506,172.45

$1,524,906.93

Wartości dodanej sprzedawcy

$34,967,517.33

$175,002.81

$592,385.71

Magazyn

$38,726,913.48

$331,169.64

$932,521.23

W porównaniu z poprzednich wyniki, można zaobserwować, że wiersz [wszystkie odsprzedawców] teraz sumuje wartości wyświetlane dla [wartość dodana sprzedawcy] i [Magazyn], ale że kolumna [wszystkie produkty] pokazuje sumę wartości wszystkich produktów, włączając te nie są wyświetlane.

Poniższy przykład ilustruje sposób użycia składników obliczeniowych w subselects do filtrowania na nich.Aby można było odtworzyć tej próbki, musi ustanowić połączenia przy użyciu połączenia ciąg parametr subqueries=1.

select Measures.allmembers on 0

from (

Select { [Measures].[Reseller Sales Amount]

, [Measures].[Reseller Total Product Cost]

, [Measures].[Reseller Gross Profit]

, [Measures].[Reseller Gross Profit Margin]

} on 0

from [Adventure Works]

)

Kwerendy powyżej generuje następujące wyniki:

Kwota sprzedaży sprzedawcy

Całkowity koszt produktu sprzedawcy

Zysk brutto sprzedawcy

Marża zysku brutto sprzedawcy

$80,450,596.98

$79,980,114.38

$470,482.60

0.58%