Udostępnij za pośrednictwem


SELECT instrukcja (MDX)

Pobiera dane z określonego moduł.

[ 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óra zwraca zestaw.

  • Integer
    Liczbą całkowitą z zakresu od 0 do 127.

  • Cube_Name
    Prawidłowy ciąg, który zawiera nazwę moduł.

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

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

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

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

  • MemberProperty_Name
    Prawidłowy ciąg, który reprezentuje właściwość elementu członkowskiego.

Remarks

The <SELECT slicer axis clause> wyrażenie must contain members in dimensions and hierarchies other than those referenced in the specified <SELECT query axis clause> expressions.

W przypadku pominięcia atrybut w module z określonego <SELECT query axis clause> wyrażenia i <SELECT slicer axis clause> wartość atrybut domyślny element członkowski jest domyślnie dodawane do oś fragmentatora.

WIZUALNE NON opcji w instrukcja subselect można odfiltrować członków, podczas gdy łączne true zamiast filtrowanego sum.Pozwala to na kwerendy o najwyższym dziesięć sprzedaży (osób/produktów/regiony) i uzyskać prawdziwe całkowitą wielkość sprzedaży dla wszystkich członków poszukiwana, zamiast całkowitej wartości sprzedaży dla górnej zwróconych dziesięć.Zobacz przykłady poniżej, aby uzyskać więcej informacji.

Składniki obliczeniowe mogą być zawarte w <Klauzula SELECT kwerendy w oś> za każdym razem, gdy połączenie zostało otwarte przy użyciu parametru ciąg połączenia subqueries=1; Zobacz Obsługiwane właściwości XMLA (XMLA) i ConnectionString() Aby zobaczyć sposób użycia parametrów. Przykład znajduje się na składniki obliczeniowe w subselects.

Autoexists

Gdy dwa lub więcej atrybutów wymiaru są używane w instrukcja SELECT, Analysis Services ocenia wyrażenia atrybuty aby upewnić się, że członkowie tych atrybutów właściwie są ograniczone do spełnienia kryteriów wszystkie inne atrybuty.Na przykład załóżmy, że podczas pracy z atrybutami z wymiaru Geografia.Jeśli jedno wyrażenie, które zwraca wszystkie elementy członkowskie z atrybut Miasto, a kolejne wyrażenie w tym członków granicach od atrybut kraju dla wszystkich krajów, w Europie, następnie spowoduje to elementy Miasto są ograniczone do tylko tych miast, które należą do krajów w Europie.Ta cecha Analysis Services jest nazywany Autoexists i dotyczy tylko atrybutów w tym samym wymiarze.Autoexists dotyczy tylko atrybut z tego samego wymiaru, ponieważ próbuje uniemożliwiają rekordów wymiaru wyłączone w jedno wyrażenie atrybut z dołączaniu przez inne wyrażenia atrybut.Autoexists może również należy rozumieć jako wynikowy przecięcia wyrażeń różne atrybuty nad rekordów wymiaru.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]

Zestaw otrzymany wynik 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%

1000 Turystyczne

$6,723,794.29

$166,144.17

2.47%

Road-550-W

$3,668,383.88

$1,901.97

0.05%

Road-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%

Otrzymany zestaw produktów wydaje się być taka sama, jak Preferred10Products; tak, ustawienie weryfikacji 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ących wyniki oba zestawy (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%

1000 Turystyczne

$6,723,794.29

$166,144.17

2.47%

Road-550-W

$3,668,383.88

$1,901.97

0.05%

Road-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: jeden z nich jako obliczone wyrażenie, a drugi jako wyrażenie stała. Poniższe przykłady ilustrują różne podtypy z Autoexists.

Autoexists można stosować głębokie lub skrócona do wyrażenia.Ustawieniem domyślnym jest głębokie.W następującym przykładzie zostanie ilustrują pojęcia Autoexists głębokie.W przykładzie mamy filtrowania Top10SellingProducts przez produktu [Product]. [Product Line] atrybut dla osób w grupie [Mountain].Należy zauważyć, że zarówno atrybuty (fragmentator i oś) należą do tego samego wymiaru [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]

Daje 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órski CAPTIONML ramka W

$482,953.16

$206.95

0.04%

Rama górska CAPTIONML

$343,785.29

$161.82

0.05%

Women's Mountain Shorts

$260,304.09

$6,675.56

2.56%

Za pomocą poprzedniego zestaw wyników mamy nowe siedmiu do listy Top10SellingProducts i Mountain-200 Mountain-100 i rama górska HL zostały przeniesione do początku listy.Za pomocą poprzedniego zestaw wyników były naprzemiennie tych trzech wartości.

Jest to szczegółowa Autoexists, ponieważ zestaw Top10SellingProducts sprawdzana jest zgodność spełniają warunki skalowania kwerendy.Głębokie Autoexists oznacza, że wszystkie wyrażenia będą oceniane do spełnienia maksymalnym miejsca możliwe po zastosowaniu wyrażeń fragmentator, wybierz wyrażenia podrzędnego na oś i tak dalej.

Jednak jeden może być możliwe do wykonania analizy za pośrednictwem Top10SellingProducts jako równoważne Preferred10Products, podobnie jak w poniższym 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]

Daje 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%

W wynikach powyżej Cięcie daje wynik zawierającej tylko produkty z Preferred10Products, które są częścią grupy [Mountain] w [Produkt]. [Product Line]; zgodnie z oczekiwaniami, ponieważ Preferred10Products jest wyrażenie stała.

Ten zestaw wyników jest również traktować jako Autoexists skrócona.Dzieje się tak, ponieważ wyrażenie jest oceniane przed klauzula skalowania.W poprzednim przykładzie wyrażenie było wyrażenie stała dla celów ilustracyjnych w celu wprowadzenia pojęcia.

Zachowanie Autoexists mogą być modyfikowane w sesja poziom pomocą Autoexists Właściwość ciąg połączenia. W poniższym przykładzie rozpoczyna się po otwarciu nowej sesja i dodawanie Autoexists=3 Właściwość ciąg połączenia. W przykładzie tym celu należy otworzyć nowe połączenie.Po nawiązaniu połączenia z ustawieniem Autoexist pozostanie aktywna do momentu to połączenie zostało zakończone.

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ące 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%

Zachowanie Autoexists mogą być modyfikowane za pomocą AUTOEXISTS = parametr [1|2|3] w ciąg połączenia, zobacz Obsługiwane właściwości XMLA (XMLA) i ConnectionString() Aby zobaczyć sposób użycia parametrów.

Przykłady

W poniższym przykładzie zwraca sumę Measures.[Order Quantity] element członkowski członkowski, łącznie z pierwszych osiem 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, w poniższym przykładzie jest kwerendy [firmy Adventure Works] uzyskanie [Kwota sprzedaży Reseller] dane tabela, w których kategorii produktów są kolumny i wiersze są typy biznesowej sprzedawcy. Należy zauważyć, że sumy są podane dla produktów i sprzedawców.

Następującą instrukcję WYBIERAJĄCĄ:

select [Category].members on 0,

[Business Type].members on 1

from [Adventure Works]

where [Measures].[Reseller Sales Amount]

Daje następujące wyniki:

 

Wszystkie produkty

Accessories

Bikes

Clothing

Components

Wszystkie dystrybutorzy

$80,450,596.98

$571,297.93

$66,302,381.56

$1,777,840.84

$11,799,076.66

Specjalizacja Bike modułu

$6,756,166.18

$65,125.48

$6,080,117.73

$252,933.91

$357,989.07

Wartość nowego sprzedawcę

$34,967,517.33

$175,002.81

$30,892,354.33

$592,385.71

$3,307,774.48

Magazynowego

$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 ubrania produktów, do wartości dodane sprzedawcy i Magazyn sprzedawcom, jeszcze łączne ogólna można zapisać w następujący sposób za pomocą NON 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]

Daje następujące wyniki:

 

Wszystkie produkty

Accessories

Clothing

Wszystkie dystrybutorzy

$80,450,596.98

$571,297.93

$1,777,840.84

Wartość nowego sprzedawcę

$34,967,517.33

$175,002.81

$592,385.71

Magazynowego

$38,726,913.48

$331,169.64

$932,521.23

Do utworzenia tabela, które wizualnie sumy kolumn do sumy wierszy przełącza true sumę wszystkich [Kategoria], należy wydać następujące 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ę, w jaki sposób NON wizualne stosuje się tylko do [Kategoria].

Powyższa kwerenda tworzy następujące wyniki:

 

Wszystkie produkty

Accessories

Clothing

Wszystkie dystrybutorzy

$73,694,430.80

$506,172.45

$1,524,906.93

Wartość nowego sprzedawcę

$34,967,517.33

$175,002.81

$592,385.71

Magazynowego

$38,726,913.48

$331,169.64

$932,521.23

W porównaniu z poprzednich wyniki, można zaobserwować, że wiersz [dystrybutorzy wszystkie] teraz sumuje wartości wyświetlanych dla [wartość dodana Reseller] i [Magazyn], ale że kolumna [wszystkie produkty] zawiera sumę wartości wszystkich produktów, w tym tych, które 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ć w tym przykładzie, należy ustanowić połączenie za pomocą parametru ciąg połączenia 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]

)

Powyższa kwerenda tworzy następujące wyniki:

Kwota sprzedaży sprzedawcy

Sprzedawcy Total Product Cost

Zysk brutto sprzedawcy

Marża zysku brutto sprzedawcy

$80,450,596.98

$79,980,114.38

$470,482.60

0.58%

Historia zmian

Microsoft Learning

Dodano opis funkcja Autoexists i przykłady stałych.