Opis przebiegu zamówienia i rozwiązać zamówienia (MDX)
Gdy moduł jest obliczana jako wynik skryptu MDX, można przejść przez wielu etapach obliczeń w zależności od wykorzystania różnych funkcji związanych z obliczeń.Każdy z tych etapów jest zwany przebieg obliczania.
przebieg obliczania można skierować do pozycji porządkowej, nazywany numerem przebieg obliczania.Liczba przebieg obliczaniaes wymaganych do pełni obliczyć wszystkie komórki kostki nazywa się przebieg obliczania głębokość moduł.
Dane tabela i stornowanie fakt tylko wpływ na przebieg 0.Skrypty wypełniania danych po przebiegu 0; Każde przypisanie i obliczyć instrukcja w skrypcie tworzy nowe hasło.Poza skryptu MDX odwołania bezwzględne przebiegu 0 odnoszą się do ostatniej przebiegu utworzona przez skrypt dla moduł.
Składniki obliczeniowe są tworzone na wszystkie przebiegi, ale wyrażenie jest stosowane w przebiegu bieżącego.Wcześniejsze przebiegów zawierają miara obliczeniowej, ale z wartością null.
Kolejność rozwiązywania
Rozwiązuje kolejność określa priorytet obliczeń w zdarzenie wyrażeń konkurencyjnych.W ramach jednego przebiegu kolejność rozwiązywania określa dwie rzeczy:
The order in which Microsoft SQL Server Usługi Analysis Services evaluates dimensions, members, calculated members, custom rollups, and calculated cells.
Kolejność Usługi Analysis Services oblicza członków niestandardowych składników obliczeniowych, zestawienie niestandardowei obliczone komórki
element członkowski z najwyższym kolejność rozwiązywania ma pierwszeństwo.
Ostrzeżenie
Wyjątek ten priorytet jest funkcja agregująca.Obliczone członków z funkcja agregującej mają niższe kolejność rozwiązywania niż wszystkie przecinające się miara obliczeniowa.
Rozwiązuje pierwszeństwo i wartości zamówienia
Rozwiązuje kolejności zakres wartości od-8181 do 65535.W tym zakresie niektórych kolejność rozwiązywania wartości odpowiadają określonych rodzajów obliczenia, jak pokazano w poniższej tabela.
Obliczanie |
Kolejność rozwiązywania |
---|---|
element członkowski niestandardowe formuły |
-5119 |
Operatory jednoargumentowe |
-5119 |
Obliczanie sumy wizualne |
-4096 |
Wszystkie inne obliczenia (Jeśli nie inaczej) |
0 |
Zdecydowanie zaleca się używać tylko dodatnie liczby całkowite, ustawiając kolejność rozwiązywania wartości.Po przypisaniu wartości, które są niższe niż kolejność rozwiązywania wartości podane w powyższej tabela, przebieg obliczania mogą być nieprzewidywalne.Na przykład obliczania obliczeniowy element członkowski odbiera kolejność rozwiązywania jest niższa niż wartość zbiorczego niestandardowe formuły domyślne-5119.Takie niskie kolejność rozwiązywania wartość powoduje, że składniki obliczeniowe obliczane przed zbiorczego niestandardowe formuły i może spowodować uzyskanie niepoprawnych wyniki.
Tworzenie i zmienianie kolejności rozwiązywania
W projektancie modułu na Okienko obliczenia, można zmienić kolejność rozwiązywania składniki obliczeniowe i komórkach obliczeniowych, zmieniając kolejność obliczeń.
W języku MDX można użyć SOLVE_ORDER słowo kluczowe, aby utworzyć lub zmienić składniki obliczeniowe i komórek obliczeniowych.
Przykłady kolejności rozwiązywania
Aby zilustrować potencjalnych złożonością, kolejność rozwiązywania, następujący szereg kwerendy MDX zaczyna się dwie kwerendy każdy indywidualnie mieć kolejność rozwiązywania problemów.Te dwie kwerendy następnie są łączone w kwerendzie, która wymaga kolejność rozwiązywania.
Kwerenda 1 — różnice w przychodów i kosztów
Dla pierwszej kwerendy MDX aby zobaczyć różnicę w przychodów i kosztów dla każdej połowy roku, konstruowania prostych kwerend MDX podobny do następującego:
WITH
MEMBER [Time].[Year Difference] AS
[Time].[2nd half] - [Time].[1st half]
SELECT
{ [Account].[Income], [Account].[Expenses] } ON COLUMNS,
{ [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM Financials
W tej kwerendzie jest tylko jeden obliczeniowy element członkowski, Year Difference.Ponieważ istnieje tylko jeden obliczeniowy element członkowski kolejność rozwiązywania nie jest problemem, jak moduł nie używa żadnych składników obliczeniowych.
Ta kwerenda MDX daje podobne do poniższej tabela zestaw wyników.
Dochód |
Wydatki |
|
---|---|---|
1 półrocze |
5000 |
4200 |
druga połowa |
8000 |
7000 |
Year Difference |
3000 |
2800 |
Kwerenda 2 — procent dochodu netto po kosztach
Dla drugą kwerendę Aby sprawdzić procent dochodu netto po wydatków dla każdej połowy roku, użyj następującej kwerendy MDX:
WITH
MEMBER [Account].[Net Income] AS
([Account].[Income], [Account].[Expenses]) / [Account].[Income]
SELECT
{ [Account].[Income], [Account].[Expenses], [Account].[Net Income] } ON COLUMNS,
{ [Time].[1st half], [Time].[2nd half] } ON ROWS
FROM Financials
Ta kwerenda MDX, jak poprzedni, ma tylko jeden obliczeniowy element członkowski, Net Incomei dlatego nie ma żadnych komplikacji kolejność rozwiązywania.
Ta kwerenda MDX powstały zestaw wyników nieco inne, podobne do poniższej tabela.
Dochód |
Wydatki |
Dochód netto |
|
---|---|---|---|
1 półrocze |
5000 |
4200 |
0.16 |
druga połowa |
8000 |
7000 |
0.125 |
Różnica w zestawach wyników kwerendy pierwszą i drugą kwerendę pochodzi z różnicy umieszczenie obliczeniowy element członkowski.W pierwszej kwerendzie obliczeniowy element członkowski jest częścią oś wierszy, a nie oś kolumn w drugą kwerendę.Różnica w położenie staje się istotne w następnej kwerendzie łączy dwa składniki obliczeniowe w jednej kwerendzie MDX.
Kwerenda 3 — połączone Year Difference i obliczenia dochodu netto
W tej kwerendzie końcowego łączenie obu poprzednich przykładach w jednej kwerendzie MDX kolejność rozwiązywania staje się ważne.Aby upewnić się, że obliczenia są wykonywane w poprawnej kolejności, definiowanie sekwencji, w którym obliczenia są wykonywane za pomocą SOLVE_ORDER słów kluczowych.
SOLVE_ORDER Słowa kluczowego określa kolejność rozwiązywania składniki obliczeniowe w kwerendzie MDX lub CREATE MEMBER polecenia.Wartości całkowite z SOLVE_ORDER kluczowe są względne, nie należy na zero, a nie trzeba być kolejnych.Wartość po prostu informuje MDX do obliczania element członkowski na podstawie wartości pochodzących z obliczania członków o wyższej wartości.Jeśli obliczeniowy element członkowski jest zdefiniowany bez SOLVE_ORDER słowa kluczowego, wartość domyślna, która obliczana jest zero.
Na przykład, jeśli łączone są używane w kwerendach pierwszy przykład dwóch obliczeń, dwóch członków obliczeniowych, Year Difference i Net Income, przecinają się w pojedynczej komórka w zestawie wyników danych przykład kwerendy MDX.Jedynym sposobem ustalenia, jak Usługi Analysis Services oceni to komórka jest przez kolejność rozwiązywania.Formuły, które są używane do skonstruowania tej komórce da różne wyniki w zależności od kolejność rozwiązywania dwóch członków obliczeniowych.
Spróbuj najpierw łączenia obliczeń używane w kwerendach pierwsze dwa następujące kwerendy MDX:
WITH
MEMBER [Time].[Year Difference] AS
'[Time].[2nd half] - [Time].[1st half],
SOLVE_ORDER = 1
MEMBER [Account].[Net Income] AS
'([Account].[Income] - [Account].[Expenses]) / [Account].[Income]',
SOLVE_ORDER = 2
SELECT
{ [Account].[Income], [Account].[Expenses], [Account].[Net Income] } ON COLUMNS,
{ [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM Financials
In this combined MDX query example, Net Income has the highest solve order, so it takes precedence when the two expressions interact.Usługi Analysis Services evaluates the cell in question by using the Net Income formula.Wyniki tego zagnieżdżone obliczenia, jak pokazano w poniższej tabela.
Dochód |
Wydatki |
Dochód netto |
|
---|---|---|---|
1 półrocze |
5000 |
4200 |
0.16 |
druga połowa |
8000 |
7000 |
0.125 |
Year Difference |
3000 |
2800 |
0.066 |
Wynik komórka udostępnionego jest na podstawie formuły dla Net Income.Oznacza to, że Usługi Analysis Services oblicza wynik komórka udostępnionych z Year Difference danych produkujących następującego wzoru (wynik jest zaokrąglany dla jasności):
((8000 - 5000) - (7000 - 4200)) / (8000 - 5000) = 0.066
lub
(3000 - 2800) / 3000 = 0.066
Jednakże Usługi Analysis Services oblicza wynik komórka udostępnionego inaczej, jeśli przełączenia kolejności rozwiązywania, składników obliczeniowych w kwerendzie MDX.Scalonej MDX query Odwraca kolejność rozwiązywania składników obliczeniowych:
WITH
MEMBER [Time].[Year Difference] AS
'[Time].[2nd half] - [Time].[1st half],
SOLVE_ORDER = 2
MEMBER [Money].[Net Income] AS
'([Money].[Income] - [Money].[Expenses]) / [Money].[Income]',
SOLVE_ORDER = 1
SELECT
{ [Money].[Income], [Money].[Expenses], [Money].[Net Income] } ON COLUMNS,
{ [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM TestCube
Jak przełączył kolejność składników obliczeniowych Usługi Analysis Services używa Year Difference formuły do komórka, oceny, jak pokazano w poniższej tabela.
Dochód |
Wydatki |
Dochód netto |
|
---|---|---|---|
1 półrocze |
5000 |
4200 |
0.16 |
druga połowa |
8000 |
7000 |
0.125 |
Year Difference |
3000 |
2800 |
-0.035 |
Ponieważ ta kwerenda używa Year Difference formuły z Net Income dane i formuły komórka udostępnionego podobny do następującego obliczenia:
((8000 - 7000) / 8000) - ((5000 - 4200) / 5000) = -0.035
Or
0.125 - 0.16 = -0.035
Uwagi dodatkowe
Rozwiązuje zamówienia może być bardzo skomplikowane problemu do pokonania, szczególnie moduły z dużą liczbą wymiary obliczeniowy element członkowski, obejmujące zestawienie niestandardowe formuł lub komórek obliczeniowych.Gdy Usługi Analysis Services wynikiem kwerendy MDX, Usługi Analysis Services uwzględnia kolejność rozwiązywania wartości dla wszystko zaangażowane w danym przebiegu, w tym wymiary moduł określonego w kwerendzie MDX.
Zobacz także