Udostępnij za pośrednictwem


Zarządzanie zakresu i kontekstu (MDX)

In Microsoft SQL Server Usługi Analysis Services, a Multidimensional Expressions (MDX) script can apply to the entire cube, or to specific portions of the cube, at specific points within the execution of the script.Skrypt MDX można wykonać podejście warstwowe do obliczeń w moduł przekazuje korzystając z obliczeń.

Ostrzeżenie

Więcej informacji na temat wpływ obliczenia przebiegów obliczania, zobacz Opis przebiegu zamówienia i rozwiązać zamówienia (MDX).

Aby kontrolować przebieg obliczania, zakres i kontekstu w skryptu MDX, w szczególności używana jest instrukcja CACULATE This funkcja i instrukcji SCOPE.

Za pomocą instrukcji OBLICZ

Instrukcja OBLICZ wypełnia każdej komórka w moduł z zagregowanych danych.Na przykład domyślny skrypt MDX zawiera pojedynczy OBLICZ instrukcja na początku skryptu.

Aby uzyskać więcej informacji o składni instrukcja OBLICZ, zobacz OBLICZYĆ instrukcji (MDX).

Ostrzeżenie

Jeśli skrypt zawiera wyrażenie SCOPE zawiera instrukcję OBLICZ, MDX ocenia instrukcja OBLICZ w kontekście podmodułu zdefiniowanych przez wyrażenie SCOPE nie przeciwko całego moduł.

Za pomocą tej funkcji

This Funkcja umożliwia pobieranie bieżącej podmodułu w ramach MDX script.Można użyć This funkcja szybkiego zestaw wartość komórki w bieżącym podmodułu do wyrażenie MDX.Często używają This funkcja w połączeniu z instrukcja zakresu, aby zmienić zawartość określonego podmodułu podczas określonego przebieg obliczania.

Ostrzeżenie

Jeśli skrypt zawiera zakres instrukcja zawiera This funkcja MDX ocenia This funkcja w ramach określonych przez zakres podmoduł instrukcja, nie przeciwko całego moduł.

W tym przykładzie funkcja

W poniższym przykładzie polecenie skryptu MDX This funkcja, aby zwiększyć wartość miara Kwota not grupa miar moduł próbki Adventure Works DW, 10% wyższe dla dzieci element członkowski Redmond w wymiarze odbiorcy:

/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS, 
    [Measures].[Amount], *);
        /* This expression sets the value of the Amount measure */
        THIS = [Measures].[Amount] * 1.1;
END SCOPE;

Więcej informacji na temat składni This funkcja, zobacz Ten (MDX).

Za pomocą instrukcji SCOPE

Instrukcja zakresu definiuje bieżące podmodułu, zawierający i określa zakres innych wyrażeń MDX i instrukcje skryptu MDX.MDX to ocenia innych wyrażeń MDX i instrukcja, łącznie z This funkcja i instrukcja OBLICZ w kontekście podmodułu.

Instrukcja zakresu jest dynamiczne, ale nie iteracyjną charakter.Instrukcje zawarte w instrukcja SCOPE uruchamiane raz, ale sam podmodułu można ustalić dynamicznie.Na przykład mieć moduł o nazwie SampleCube.Przeciwko moduł SampleCube stosuje się następujący zakres instrukcja zdefiniowanie podmoduł definiuje kontekst jako ALLMEMBERS w wymiarze środki:

SCOPE([Measures].ALLMEMBERS);

THIS = [Measures].ALLMEMBERS.COUNT;

END SCOPE;

Instrukcje i wyrażenia w tej instrukcja SCOPE uruchamiane raz.

Teraz użytkownik biznesowy uruchamia następujące kwerendy MDX, która zawiera jeden miarao nazwie istniejącemiara, przeciwko moduł SampleCube:

WITH MEMBER [Measures].[NewMeasure] AS '1'

SELECT

[Measures].ALLMEMBERS ON COLUMNS,

[Customer].DEFAULTMEMBER ON ROWS

FROM

[SampleCube]

zestaw komórek Zwrócił kwerenda jest podobna do wyjścia pokazane w poniższej tabela.

[ExistingMeasure]

[NewMeasure]

[Customer].[All]

2

2

Spojrzenie na zwracane zestaw komórek, zwróć uwagę, jak wartość ExistingMeasure w instrukcja zakresu skryptu MDX jest aktualizowane dynamicznie po NewMeasure miara został zdefiniowany.

Wyrażenie SCOPE można zagnieżdżać wewnątrz innej instrukcja zakresu.Jednak wyrażenie SCOPE nie jest iteracyjne, głównym celem dla zagnieżdżenie instrukcja zakresu jest do dalszego podziału podmodułu do specjalnego traktowania.

Przykład instrukcji SCOPE

Poniższy przykładowy skrypt MDX używa instrukcja SCOPE zestawy wartość kwoty, pomiar w not grupa miar moduł próbki Adventure Works DW, 10% wyższe dla dzieci element członkowski Redmond w wymiarze nabywcy.Jednak innej instrukcja zakresu zmiany podmodułu zawierają miara ilość dzieci w roku kalendarzowym 2002.Wreszcie kwota jest następnie zagregowane tylko dla tego modułu podrzędnego pozostawienie zagregowane wartości miara ilości w latach kalendarzowych, inne bez zmian.

/* Calculate the entire cube first. */
CALCULATE;
/* This SCOPE statement defines the current subcube */
SCOPE([Customer].&[Redmond].MEMBERS, 
    [Measures].[Amount], *);
        /* This expression sets the value of the Amount measure */
        THIS = [Measures].[Amount] * 1.1;
END SCOPE;

Aby uzyskać więcej informacji o składni instrukcja SCOPE, zobacz Wyrażenie SCOPE (MDX).