Udostępnij za pośrednictwem


Zarządzanie zakres i kontekstu (MDX)

In Microsoft SQL Server 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 zachodzących na siebie w celu obliczenia w ramach moduł z użyciem przebiegów obliczeń.

Uwaga

Aby uzyskać więcej informacji na temat obliczania przebiegów może mieć wpływ na obliczenia zobacz Zrozumienie kolejność obliczeń i rozwiązywania zamówienia (MDX).

Do formantu etap obliczania, zakres i kontekstu w skrypcie języka MDX, w szczególności użyj instrukcja CACULATE This Funkcja oraz w instrukcja zakresu.

Za pomocą instrukcja obliczania

Instrukcja obliczania wypełnia każdej komórka w module z dane sumaryczne.Na przykład, skrypt MDX domyślny ma jeden obliczania instrukcja na początku skryptu.

Aby uzyskać więcej informacji o składni instrukcja obliczania zobacz Obliczanie instrukcja (MDX).

Uwaga

Jeśli skrypt zawiera instrukcję zakres, zawierającą instrukcja obliczania, MDX oblicza instrukcja obliczania w ramach moduł podrzędnego, zdefiniowanych przez wyrażenie zakres, nie dla całego moduł.

Za pomocą tej funkcja

The This funkcja lets you retrieve the current subcube within an MDX script. Można użyć This funkcji szybkiego zestaw wartość komórki w bieżącym podmodułów do wyrażenie MDX. Często używane This Funkcja w połączeniu z w instrukcja zakres, aby zmienić zawartość określonego modułu podrzędnego podczas przebiegu określonego obliczania.

Uwaga

Jeśli skrypt zawiera zakres instrukcja zawierający This Funkcja, oblicza MDX This funkcji w odniesieniu do moduł podrzędnego, zdefiniowane przez zakres instrukcja, nie dla całego moduł.

Ten przykład funkcja

W poniższym przykładzie polecenie skryptu MDX This Funkcja służąca do zwiększenia wartości miara Kwota not grupa miar moduł przykładowy firmy Adventure Works DW, do 10 % wyższa dla dzieci Redmond element członkowski w wymiarze klienta:

/* 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 na temat składni This funkcja, zobacz Ten (MDX).

Za pomocą instrukcja zakres

W instrukcja zakresu definiuje bieżącego modułu podrzędnego, zawierający oraz określa zakres innych wyrażeń MDX i instrukcja w skrypcie języka MDX.MDX to ocenia inne wyrażenia MDX i instrukcja, włączając w to This Funkcja i instrukcja obliczania w kontekście modułu podrzędnego.

Instrukcja zakres jest dynamiczne, lecz nie iteracji w charakterze.Instrukcje zawarte w instrukcja zakres jest uruchamiane jeden raz, ale modułu podrzędnego, sam może ustalane dynamicznie.Na przykład masz moduł o nazwie SampleCube.Przed moduł SampleCube stosuje się następującą instrukcję zakres zdefiniowanie podmodułu definiuje kontekście ALLMEMBERS w wymiarze miary:

SCOPE([Measures].ALLMEMBERS);

THIS = [Measures].ALLMEMBERS.COUNT;

END SCOPE;

Instrukcje i wyrażenia w tej instrukcja zakres uruchamiane jeden raz.

Teraz użytkownik biznesowy wykonuje następujące kwerendy MDX, która zawiera jeden miara, nazwany istniejącego miara, przed moduł SampleCube:

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

SELECT

[Measures].ALLMEMBERS ON COLUMNS,

[Customer].DEFAULTMEMBER ON ROWS

FROM

[SampleCube]

zestaw komórek, zwrócone przez kwerendę jest podobna do produkcji, pokazane w poniższej tabela.

[ExistingMeasure]

[NewMeasure]

[Klienta]. [Wszystkie]

2

2

Spojrzenie na zestaw komórek zwracane, zwróć uwagę, w jaki sposób wartość ExistingMeasure, uwzględnione w instrukcja zakres wewnątrz skryptu MDX jest aktualizowana dynamicznie po miara NewMeasure został zdefiniowany.

Instrukcja zakres można zagnieżdżać wewnątrz innej instrukcji zakres.Jednak w instrukcja zakres nie jest iteracji, głównym celem dla zagnieżdżanie instrukcja zakres jest dodatkowo podzielić podmodułów do specjalnego traktowania.

Przykład instrukcja zakres

W poniższym przykładzie skryptu MDX użyto instrukcja zakres do zestawów wartość kwoty zmierzyć w not grupa miar moduł przykładowy firmy Adventure Works DW, do 10 % wyższa dla dzieci Redmond element członkowski w wymiarze klienta.Jednak innej instrukcja zakres zmiany modułu podrzędnego, aby uwzględnić miara kwota dla dzieci 2002 roku kalendarzowego.Na koniec miara kwota jest następnie łączone tylko dla tego modułu podrzędnego, pozostawiając zagregowane wartości miara kwota w drugiej lata kalendarzowe 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 w instrukcja zakres zobacz Instrukcja zakres (MDX).