Korzystając z funkcji śledzenia obliczeń Essbase, można uzyskać spostrzeżenia dotyczące przetwarzania formuł elementów, które ułatwią wykrywanie błędów w skryptach obliczeń woluminu blokowego oraz dopracowywanie tych skryptów. Należy włączyć polecenie CALCTRACE, aby śledzić obliczenia w widoku Smart View, w których jest uwzględniany kontekst, ale można też użyć polecenia SET TRACE, aby wybrać przecięcia do śledzenia.
Gdy skrypt obliczeń zostanie ponownie wykonany w odniesieniu do kostki, funkcja śledzenia obliczeń zapewnia dostęp do — zarejestrowanych w dzienniku — informacji dotyczących obliczeń.
Śledzenie obliczenia niczego nie zmienia w jego działaniu. Jeśli obliczenie zostanie uruchomione w Smart View i jeśli używany serwer ma włączone przez administratora śledzenie obliczeń, to — gdy obliczenie zostanie wykonane — Smart View wyświetli wyskakujące okno dialogowe, zawierające szczegółowe informacje. Informacje ze śledzenia obliczenia można wkleić z tego okna dialogowego do edytora tekstów. Te same informacje można także znaleźć w pliku calc_trace.txt
, w katalogu plików bazy danych w Essbase.
Informacje ze śledzenia obliczeń mogą być pomocne przy wykrywaniu błędów w skrypcie obliczeń, gdy uzyskiwane wyniki nie są zgodne z oczekiwanymi.
Śledzenie obliczeń nie jest obsługiwane w aplikacjach z włączonym zarządzaniem scenariuszami.
Aby można było włączyć śledzenie obliczeń, administrator musi najpierw włączyć parametr konfiguracyjny aplikacji — CALCTRACE. Jeśli śledzenie obliczeń zostanie włączone dla aplikacji, można z niego korzystać na dwa sposoby:
Zostaną wykonane wszystkie obliczenia zawarte w skrypcie, lecz podczas obliczania będzie jedynie śledzony kontekst wyróżnionej komórki danych.
Jeśli wyróżniona komórka danych nie zostanie zmodyfikowana wskutek obliczeń, pojawi się komunikat z informacją, że komórka nie została zmodyfikowana.
SET TRACE listaElementów
(aby włączyć śledzenie obliczeń dla listy elementów) i SET TRACE OFF
(aby wyłączyć śledzenie obliczeń do chwili pojawienia się nowego polecenia SET TRACE w skrypcie). Aby można było użyć polecenia SET TRACE, trzeba wykonać skrypt obliczeń poza narzędziem Smart View, używając narzędzia Cube Designer, polecenia interfejsu wiersza poleceń calc, zlecenia Uruchamianie obliczania w interfejsie internetowym Essbase lub narzędzia MaxL (instrukcja wykonywanie obliczeń).Poniższy skrypt obliczeń jest uruchamiany dla kostki Sample Basic. Skrypt zawiera polecenie SET TRACE zlecające rejestrowanie szczegółowych informacji dla przecięcia reprezentującego ujętą w budżecie sprzedaż w styczniu na rynku "California" dla produktu o numerze SKU "100-10".
SET TRACEID "id042" SET TRACE ("100-10", "California", "Jan", "Sales", "Budget"); FIX("California", "Budget") "Sales" ( "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10; ); ENDFIX;
Uwaga:
Zalecane jest także używanie polecenia SET TRACEID w celu zapobieżenia zastąpieniu pliku śledzenia obliczeń.Sample Basic zawiera dwa rzadkie wymiary: "Product" i "Market". Formuła odnosi się do elementu "Sales", będącego elementem gęstego wymiaru "Measures". Lista elementów polecenia FIX zawiera tylko jeden rzadki element o nazwie "California", który należy do wymiaru "Market".
Liczba istniejących bloków w zakresie polecenia FIX określa, ile razy śledzona komórka będzie obliczana. W tym przykładzie obliczenie przechodzi przez wszystkie istniejące kombinacje rzadkiego elementu "California". Każda z tych kombinacji reprezentuje jeden blok.
Po ukończeniu obliczania następujące informacje ze śledzenia zostaną zarejestrowane i wyświetlone w pliku calc_trace_id042.txt
:
Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 1) Previous value: 840.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 2) Block from FIX scope: [100-30][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [100-20][California][Jan][Sales][Budget] = 140.00 New value: [100-10][California][Jan][Sales][Budget] = 14.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 3) Block from FIX scope: [200-10][California] Actual block used in calculation: [100-10][California] Previous value: 14.00 Dependent values: [200-20][California][Jan][Sales][Budget] = 520.00 New value: [100-10][California][Jan][Sales][Budget] = 52.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; ) [...calc iterations 4-7 are omitted from example...] Tracing cell: [100-10][California][Jan][Sales][Budget] (Cell update count: 8) Block from FIX scope: [400-30][California] Actual block used in calculation: [100-10][California] Previous value: 9.00 Dependent values: [400-20][California][Jan][Sales][Budget] = 90.00 New value: [100-10][California][Jan][Sales][Budget] = 9.00 Computed in lines: [91 - 93] using: "Sales"( "100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10; )
Dziennik śledzenia obliczeń dostarcza informacji, w jaki sposób były wykonywane obliczenia dla śledzonej komórki:
Śledzona komórka była obliczana kilka razy i za każdym razem jej wartość była zastępowana nową wartością (raportowana liczba aktualizacji zatrzymuje się na 8).
Wartość komórki przed obliczaniem wynosiła wynosi 840.00.
Dla każdego wystąpienia obliczenia są pokazywane wartości zależne i nowe. Wartości zależne pochodzą z formuły elementu zawartej w instrukcji FIX.
Końcowa wartość komórki po wszystkich obliczeniach wynosi 9, lecz reprezentuje wartość produktu "400-20"->California
podzieloną przez 10.
Za aktualizowane wartości odpowiadają linie 91-93 skryptu obliczeń, zawierające formułę elementu "Sales".
Dla każdego z bloków, przez który następuje przejście, wartość Sales jest obliczana za pomocą następującej formuły:
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10
Po lewej stronie formuły występuje rzadki element, który mógłby spowodować, że faktyczny blok obliczeń różniłby się od początkowego bloku w instrukcji FIX. Na przykład, gdy obliczenie przechodzi przez "California"->"100-20", obliczenia są faktycznie wykonywane w "California"->"100-10".
Wpisy w dzienniku śledzenia, zatytułowane Block from FIX scope
(Blok z zakresu FIX) i Actual block used in calculation
(Faktyczny blok użyty w obliczeniu), pojawiają się tylko wtedy, gdy występuje rozbieżność między blokami z instrukcji FIX, a blokiem reprezentowanym w formule elementu. Wpisy w dzienniku śledzenia mogą wskazywać, dlaczego występują zduplikowane obliczenia, oraz mogą pomóc wykryć błędy w skryptach obliczeń.