Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: AFIN.NET.ServerCalculation

Cóż to, w skrócie, to AFIN.NET.ServerCalculation?
Analityk pracuje w Excelu - tu jest jego królestwo i centrum jego świata. Ale sterowanie światem danych z AFINA (np. przeliczenie dużego raportu) ma pewną wadę - wymaga inicjatywy owego analityka. I dopiero od momentu jej wykazania, uruchamia się proces przeliczania AFINA - może to być przeliczenie detaliczne, może to być przeliczenie hurtowe, archiwum - jak wiemy, jest tu parę opcji, z których każda i tak bije na łeb to, co proponują BiznesIntelidżensy.

Ale my chcemy jeszcze lepiej!
Chcemy by serwer, niezależnie od nas, UCZYŁ się jednak od nas naszych potrzeb i przygotowywał nam wstępnie dane, które my potrzebujemy cyklicznie, np. jeśli mamy duży raport lub całą kupę raportów, to chcemy go (je) uaktualniać co chwilę. Ale po co przeliczać ciągle te same wartości?
Otóż jest na to pomysł i wersja Beta rozwiązania - na razie jednak tylko dla zaangażowanych.Wojciech Gardziński edytował(a) ten post dnia 10.04.12 o godzinie 20:17
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: AFIN.NET.ServerCalculation

AFIN.NET.ServerCalculation jest gotowe.

Ponieważ prędkość przeliczeń, a do tego sprowadza się istota tej nowej opcji, trudno jest pokazać na filmie, skupię się na krótkim objaśnieniu tematu.

Załóżmy, że przychodzimy rano do pracy i chcemy zrobić raport - skomplikowany, załóżmy 1000 funkcji do bazy danych. Mamy wybór -
1. tworzymy go, wypełniając funkcjami i przeliczając za każdą poprawką w arkuszu (przeliczanie automatyczne) i czekając za każdym razem po kilkadziesiąt sekund na przeliczenie 1.000 funkcji
2. Przełączamy się na przeliczanie ręczne - wpisujemy funkcje, ale przeliczamy tylko co jakiś czas, bo to chwilę trwa
3. Włączamy "przeliczanie hurtowe" wtedy czas jest o wiele krótszy, ale też zajmuje kilkadziesiąt sekund (1.000 funkcji to 1.000 odwołań do zewnętrznej bazy danych)

A my chcemy przeliczać szybko! I to po każdym dodaniu nowej funkcji, bo chcemy sprawdzać jej wartość przy nowych parametrach. (Użytkownicy Excela/AFINA zawsze tak robią, jakby nie wierzyli, że przeliczanie hurtowe zrobi im za chwilę to samo... ale cóż - przyzwyczajenie naszą drugą naturą, więc niech tak zostanie!)I co? Czy musimy rezygnować z naszych przyzwyczajeń, dotyczących pracy w Excelu, gdzie ten natychmiast "reaguje" na zmiany w arkuszu?

Otóż, nie, nie musimy czekać - włączamy AFIN.NET.ServerCalculation.

Wyjaśnienie - dla kogo to:
Opcja ta niestety, a może stety, nie jest dostępna dla każdego użytkownika AFINA. Wymaga, żeby dane przechowywane były na serwerze bazodanowym, np. SQL Server, może być w wersji Express (darmowy) - dalej będę posługiwał się skrótem "SQLS". Postawienie takiego serwera, tzn. jego instalacja na końcówce, to, w zasadzie, chwila - jest to więc opcja do rozważenia nawet dla pojedynczych użytkowników. Ale klienci "grupowi", tj. działy analiz, w których wszyscy analitycy korzystają z AFINA, są tu użytkownikiem modelowym. To dla nich!

No to przychodzimy do tej pracy i zaczynamy tworzyć raport - wpisujemy jakieś etykiety wierszy, wpisujemy kilka funkcji - powiedzmy 12 (przez przeciągnięcie w prawo formuły sparametryzowanej miesiącem - normalna praca w AFINIE)
AFIN liczy owe 12 funkcji. 12 - to niewiele, więc bardzo szybko - nie zauważamy, że liczy detalicznie. Super. Wpisujemy kolejne... ale, zanim wpiszemy te kolejne, objaśnię, co się dzieje w tle, bo użytkownik tego NIE WIDZI, a tam dopiero jest ciekawie.

Ano, w tle, dzieje się dużo. Przy przeliczeniu tych 12 funkcji, AFIN nie tylko je przeliczył - zapisał w, niewidocznej dla użytkownika, tabeli zapytania, które te funkcje wykonały. One zwróciły wartości, więc użytkownik jest szczęśliwy, ale one i tak się zapisały. Po co?
Zapisały się po to, że w tle, co jakiś czas (ustawiany przez owego użytkownika - co 5 minut, co godzinę, co kilka godzin - jak chcemy) uruchamia się niezależna od Excela procedura-program, który robi następujące czynności:
1. Zasysa ową tablicę zapytań z AFINA do tabeli SQLS, wpisując je do kolumny SqlText
2. Uruchamia "Job" SQLS, który może być standardowym "Job-em" onego, ale, ponieważ SQLS Express nie obsługuje "Job-ów", jest to specjalna procedura, tworzona administracyjnie jeden raz przy instalacji tego rozwiązania. Procedura ta uruchamia się , odczytuje komendy SqlText, oblicza wartości tych zapytań i tworzy (uzupełnia) kolumnę Values.
3.Gotowa tabela jest, z kolei, znów zdalnie i znów niepostrzeżenie dla użytkownika, przeklejana do pliku Accessa, który jest w folderze AFINA. Po co? Bo tu AFIN ma blisko.
Koniec działania owej procedury.

Ale użytkownik wpisuje funkcje dalej. Wpisuje kolejne 12 funkcji i chce je przeliczyć.
Więc arkusz przelicza...

Pierwsze 12 funkcji tłumaczy na zapytania i sprawdza, czy ma je w bazie podręcznej - ma! Więc bierze je stamtąd - bardzo szybko
Kolejne 12 funkcji tłumaczy na zapytania - nie znajduje ich w owej bazie - więc przelicza normalnie - detalicznie. Pierwsze 12 - momentalnie, kolejne 12 normalnie, trochę dłużej, ale i tak szybko, bo tylko 12.

Tworząc raport, zawsze tworzymy go krok po kroku. Nie zauważamy, jak AFIN, niepostrzeżenie dla nas, UCZY SIĘ NASZYCH POTRZEB!!!

I, jak już stworzymy raport, pomimo, że wszystkie zapytania są strasznie skomplikowane i tak dalej, one wszystkie są już w bazie liczonej "pod spodem" - raport przelicza się momentalnie, czyli średnio 3 razy szybciej.

Fajne?
Na pewno użyteczne. Zapraszam do używania. Usługa instalacji - dla pierwszego Klienta GRATIS!Wojciech Gardziński edytował(a) ten post dnia 10.04.12 o godzinie 21:41

Następna dyskusja:

Hurtownia danych AFIN.NET -...




Wyślij zaproszenie do