Wybierając krotki, można skoncentrować swoje obliczenia Essbase w aktywnej tabeli Smart View, ograniczając ich zakres do określonych wycinków danych w kostce stanowiącej wolumin blokowy.
Obliczenia z użyciem krotek opisano w następujących podrozdziałach:
Składnia wywołania @GRIDTUPLES w skrypcie obliczeń jest dostępna pod hasłem FIX…ENDFIX.
Wybierając krotki, można skoncentrować swoje obliczenia Essbase w aktywnej tabeli Smart View, ograniczając ich zakres do określonych wycinków danych w kostce stanowiącej wolumin blokowy.
Poprzez wybór krotek można zoptymalizować asymetryczne obliczenia w tabeli obejmujące różne wymiary, unikając w ten sposób nadmiernych wyników.
Krotki używane w obliczeniach w Essbase różnią się od krotek używanych w zapytaniach MDX. Wydajność obliczeń i rozmiar kostki zależą głównie od liczby bloków w kostce (zakładając określony rozmiar bloku). Z tego powodu krotki dla obliczeń są określane tylko dla kombinacji elementów rzadkich. Ponadto, w celu ułatwienia tworzenia skryptów obliczeń, w specyfikacji krotki dla obliczeń można zawrzeć wiele elementów z jednego wymiaru rzadkiego. Na przykład, jeśli jako krotka dla obliczeń zostanie użyta krotka ("New York", "California", "Actual", "Cola"), to można obliczyć następujące części wspólne komórek:
"New York"->"Actual"->"Cola" "California"->"Actual"->"Cola"
Rozważmy pokazaną poniżej tabelę symetryczną. Jest ona symetryczna, ponieważ w tabeli są dla każdego produktu zawarte te same rynki i ten sam scenariusz (Actual).
Poniższa tabela jest asymetryczna, ponieważ produkt Diet Cola ma w tabeli mniej rynków niż produkt Cola.
Domyślnym zakresem obliczeń, gdy w instrukcji FIX lub w punkcie widzenia (POV) tabeli Smart View występuje więcej niż jeden wymiar, jest obliczanie iloczynu wektorowego (wszystkich możliwych kombinacji) elementów z instrukcji FIX lub tabeli. Inaczej mówiąc, obliczenie sterowane punktem widzenia, w którym kombinacje produktów i rynków pochodzą z tabeli, oblicza wszystkie następujące kombinacje "wiersz-element":
Cola->"New York" Cola->"Massachusetts" Cola->"Florida" Cola->"Connecticut" Cola->"New Hampshire" "Diet Cola"->"New York" "Diet Cola"->"Massachusetts" "Diet Cola"->"Florida" "Diet Cola"->"Connecticut" "Diet Cola"->"New Hampshire"
To może być działanie przekraczające oczekiwane. Chcąc obliczyć tylko kombinacje pokazane w tabeli, można określić, które krotki mają być używane w obliczeniu, oraz ograniczyć obliczenie do mniejszego wycinka. Obliczenia z użyciem krotek mogą się także przyczynić do skrócenia czasu obliczania oraz zmniejszenia rozmiaru kostki.
Cola->"New York" Cola->"Massachusetts" Cola->"Florida" Cola->"Connecticut" Cola->"New Hampshire" "Diet Cola"->"New York" "Diet Cola"->"Florida"
Krotka obliczeniowa to sposób reprezentowania wycinka danych z elementów z dwóch lub większej liczby wymiarów rzadkich, który ma być używany w obliczeniach Essbase w woluminie blokowym.
Przykłady poprawnych krotek obliczeniowych
("Diet Cola", "New York")
("Diet Cola", "Cola", Florida)
(Cola, "New Hampshire")
Pisząc wyrażenia MDX, należy pamiętać o następujących ograniczeniach dla krotek:
Jeśli jednak krotki są wybierane w skryptach obliczeń, wymagania te ulegają złagodzeniu. Można swobodnie pisać wyrażenia oparte na krotkach, przy czym krotki mogą opisywać listy elementów, jak ma to miejsce w następującej krotce: (@Children(East), Cola)
.
Łatwym sposobem wyboru krotek jest wstawienie ich jawnie w skrypcie obliczeń, w postaci listy w obrębie instrukcji FIX.
Format instrukcji FIX ma następującą postać:
FIX (fixMbrs) COMMANDS ; ENDFIX
W poniższej instrukcji FIX są podane, przed blokiem poleceń, dwie krotki. Krotki są ujęte w nawiasy klamrowe { } ograniczające zbiór, będący kolekcją krotek.
FIX({ (@Children(East), Cola), ("New York", Florida, "Diet Cola") }) Sales (Sales = Sales + 10;); ENDFIX
Innym sposobem wyboru krotek jest wybór kontekstowy, oparty na elementach występujących w punkcie widzenia (POV) tabeli Smart View w chwili tworzenia obliczenia. Wyboru tego dokonuje się, używając — w skrypcie obliczeń — funkcji @GRIDTUPLES jako argumentu instrukcji FIX.
FIX ({@GRIDTUPLES(Product, Market)}) Sales (Sales = Sales + 10;); ENDFIX
Jeśli ten skrypt obliczeń zostanie uruchomiony z aplikacji Smart View w odniesieniu do podanej poniżej tabeli, to będą obliczane tylko wyświetlane kombinacje produktów i rynków. Na przykład kombinacja "Diet Cola"->Massachusetts nie zostanie obliczona, ponieważ nie jest pokazywana w tabeli. Należy pamiętać, że obliczane są wszystkie scenariusze (trzeci wymiar rzadki w tej przykładowej kostce), mimo że w tabeli jest pokazywany tylko scenariusz "Actual". Wynika to z tego, że wymiar "Scenariusz" (Scenario) nie jest częścią instrukcji GRIDTUPLES w skrypcie obliczeń.
Wybór krotek — bez względu na to, czy jest dokonywany za pomocą jawnej listy krotek czy przy użyciu funkcji @GRIDTUPLES — ma zastosowanie tylko w kontekście obliczeniowego polecenia FIX…ENDFIX. Składnia instrukcji FIX została rozszerzona, tak aby był możliwy wybór krotek:
FIX ([{ tupleList | @GRIDTUPLES(dimensionList) },] fixMbrs) COMMANDS ; ENDFIX
Używając tabeli Smart View i instrukcji FIX w skrypcie obliczeń Essbase, można obliczać wybrane krotki elementów zgodnie z punktem widzenia (POV) tabeli. Alternatywnie można — w celu zdefiniowania zakresu obliczeń — wpisać kombinacje krotek bezpośrednio w instrukcji FIX, usuwając w ten sposób zależność od tabeli Smart View.
Obliczając wybrane krotki, można skutecznie pracować z asymetrycznymi obszarami zarówno w skryptach obliczeń, jak i w tabelach Smart View.
Rozważmy następujące przykłady:
Aby wypróbować te przykłady, należy pobrać szablon skoroszytu CalcTuple_Tuple.xlsx
z sekcji Techniczne > Obliczenia
folderu galerii, który znajduje się w obszarze Pliki w internetowym interfejsie Essbase. Odpowiednie instrukcje są zawarte w arkuszu README skoroszytu.
Poniższy skrypt obliczeń, który stanowi przykład pokazujący domyślne działanie obliczeń woluminu blokowego Essbase, gdy nie zostaną wybrane żadne krotki, oblicza cały iloczyn wektorowy elementów wymiarów "Product" i "Market" z tabeli narzędzia Smart View.
Wskutek użycia dwóch zmiennych substytucyjnych trybu wykonawczego (RTSV), zdefiniowanych w bloku SET RUNTIMESUBVARS, obliczenia są ograniczone do punktów widzenia (POV) wymiarów "Product" i "Market" istniejących w tabeli, w chwili uruchamiania obliczeń ze Smart View.
SET RUNTIMESUBVARS { ProductGridMembers = POV <RTSV_HINT><svLaunch> <description>All Product's members on the grid</description> <type>member</type> <dimension>Product</dimension><choice>multiple</choice> </svLaunch></RTSV_HINT>; MarketGridMembers = POV <RTSV_HINT><svLaunch> <description>All Market's members on the grid</description> <type>member</type> <dimension>Market</dimension><choice>multiple</choice> </svLaunch></RTSV_HINT>; }; FIX ( &ProductGridMembers, &MarketGridMembers ) Marketing( Marketing = Marketing +1; ); ENDFIX
Ten skrypt obliczeń woluminu blokowego Essbase, w którym w celu wybrania krotki wymiarów "Product" i "Market" jest używana funkcja @GRIDTUPLES, oblicza krotki tylko dla tych dwóch wymiarów, ograniczając zakres do tych elementów, które znajdują się w tabeli narzędzia Smart View w chwili uruchomienia obliczania za pomocą narzędzia Smart View.
FIX ( {@GRIDTUPLES(Product, Market)} ) Marketing( Marketing = Marketing + 1; ); ENDFIX
Obliczenia, odnosząc się tylko do tych wymiarów rzadkich, które zostały podane w krotce, obejmuje liczbę bloków znacznie mniejszą niż w przypadku obliczeń domyślnych. Jednakże ten skrypt obliczeń oblicza wszystkie elementy z wymiarów nie podanych w instrukcji FIX, tj. wymiarów "Year" i "Scenario".
Dzięki użyciu funkcji @GRIDTUPLES oraz zmiennej substytucyjnej trybu wykonawczego ten skrypt obliczeń woluminu blokowego Essbase oblicza wyłącznie wybrane krotki z tabeli, bazując na wyborze wymiarów rzadkich dokonanym w filtrze monitującym zmiennej RTSV.
Zmienna substytucyjna &DimSelections trybu wykonawczego, zdefiniowana w bloku SET RUNTIMESUBVARS, ogranicza zakres obliczeń do wymiarów rzadkich kostki, z pominięciem wymiaru "Scenario". Użyta w instrukcji FIX funkcja @GRIDTUPLES wywołuje zmienną, ograniczając liczbę obliczanych części wspólnych (przecięć).
SET RUNTIMESUBVARS { DimSelections = "Version", "Site", "Entity", "Product", "Market" <RTSV_HINT><svLaunch> <description>List two or more sparse dimensions used for forming calculation tuples:</description> <type>string</type> </svLaunch></RTSV_HINT>; }; FIX ( {@GRIDTUPLES(&DimSelections)} ) Marketing( Marketing = Marketing + 1; ); ENDFIX
Obliczenie obejmuje liczbę bloków mniejszą niż w poprzednim przykładzie, ponieważ w tym przypadku definicja krotki rozciąga się na więcej wymiarów rzadkich, wykraczających poza Product->Market.
Aby wypróbować te przykłady, należy pobrać szablon skoroszytu CalcTuple_Tuple.xlsx
z sekcji "Techniczne > Obliczenia" folderu galerii, który znajduje się w obszarze Pliki w internetowym interfejsie Essbase. Odpowiednie instrukcje są zawarte w arkuszu README skoroszytu.