Artykuł AFIN.NET:
AFIN.NET.TextConverter © AFIN 2001-2009
Wojciech Gardziński, 2009.03
Folder z przykładami:
http://afin.net/samples/AFIN.NET.TextConverter/Cases/
AFIN.NET.TextConverter -
- niezależny, nieograniczony, uniwersalny i zautomatyzowany dostęp do
dowolnych danych Twojego systemu informatycznego
Summary:
About 90% of the access to
the OLTP (transactional) system is realized by data exports from OLTP system
and imports into Excel. Exports are badly formatted, prepared as „for
printing”. The analysts want the data – but reading it is very difficult not
for technological but for logical reasons.
AFIN.NET.TextConverter
offers an independend, unlimited, universal and automatized access to your own
data exported by OLTP systems. AFIN.NET.TextConverter (ex „UNIKON”) is an
integral part of the AFIN.NET system.
Samples folder: http://afin.net/samples/AFIN.NET.TextConverter/Cases/
1. Wstęp – opis problemu
W ogromnej większości
przypadków, analitycy finansowi dostają się do swoich danych poprzez import do
Excela eksportów z innych systemów informatycznych.
Dzieje się tak, pomimo
technologicznej dostępności danych, istnienia podsystemów raportujących, wielu
innych, pozornych ułatwień (np. eksporty do PDF lub HTML), oferowanych przez
systemy informatyczne, a nawet posiadania specjalistycznych hurtowni danych lub
systemów klasy Business Intelligence. Oczywiście, dostawcy i konsultanci tych
systemów, twierdzą, że jest to wina klienta, gdyż nie zakupił on czegoś, albo
nie wdrożył odpowiednio, albo … (Tu można wpisać powód dowolny, unikający
jasnej odpowiedzi, dlaczego tego nie ma.)
Pewnego rodzaju „rekordem”
jest zakup systemu BI w celu uzyskiwania z niego uporządkowanych wydruków
tekstowych do dalszej obróbki w Excelu – przykład rzeczywisty(!)
Import tekstu to, od strony
technologicznej, temat powszechnie znany i informatycznie dopracowany.
Wszystkie, dosłownie wszystkie, systemy analityczne importują pliki tekstowe
bez najmniejszego problemu, oferując do tego specjalne kreatory i nie jest to
proces ani technologicznie, ani użytkowo, skomplikowany.
Dlaczego więc sprawia on nam, analitykom tyle
kłopotu?
Po pierwsze:
Import tekstu jest pracochłonny i bardzo trudno go
zautomatyzować
Eksporty do plików
tekstowych są traktowane jako „wydruki”. Zawierają mnóstwo dodatkowych
„upiększeń”, jak nagłówki, tabelki, podsumowania, itp., jak również dane w nich
zawarte są często dzielone na kilka wierszy, a w przypadkach wydruków
„rejestrowych”, teksty takie posiadają nawet swoistą strukturę (więcej o tym
poniżej).
Aby to wszystko odśmiecić
ręcznie (= w Excelu) trzeba włożyć dużo wysiłku, a w przypadku wydruków
hierarchicznych, jest to nawet niemożliwe bez kopiowania i przeklejania danych.
Idąc dalej, aby to zautomatyzować, analitycy… uczą się Visual Basica (!), gdyż uważają, że jak coś się robi pracochłonnie, to jedynym
sposobem automatyzacji jest stworzenie własnego makra. Makro takie przyspiesza,
owszem, przeklejanie…, ale architektura pracy (błędna) pozostaje bez zmian.
Zapraszamy do lektury pogłębionej
analizy architektury informatycznej firmy – istniejącej i pożądanej (optymalnej
z punktu widzenia analizy danych w Excelu i AFIN.NET).
Po drugie:
Import tekstu jest AWARYJNY,
tzn. Excel, importując dane, próbuje, za wszelką cenę, zakwalifikować je do
któregoś ze znanych sobie formatów i, w większości przypadków, robi to źle.
Dane tekstowe, umieszczone w
cudzysłowach, są często dzielone lub pomijane, dane tekstowe, podobne do
znanych formatów Excela, są zamieniane na wartości numeryczne i odpowiednio do
tego formatowane, dane numeryczne z kolei, wpisywane są często jako tekst –
wystarczy, że domyślny separator tysięczny systemu analityka jest inny, niż
zastosowany na wydruku.
W wielu przypadkach, nawet gdy wszystkie, powyższe warunki są spełnione, import
tekstu i tak jest błędny i trzeba go poprawiać ręcznie.
Po trzecie:
Największą wadą wszelkich
procedur importowych jest jednak to, że traktują one każdy WIERSZ TEKSTU jako
WIERSZ DANYCH.
Tymczasem, takie podejście
dotyczyć może tylko niewielu eksportów, dedykowanych ku dalszej obróbce. A te,
są z kolei albo niedostępne, albo z punktu widzenia analityka, mało ciekawe –
nie zawierają potrzebnych danych lub zawierają je w innym układzie.
Zawierają
więc dane śmieciowe lub dane
umieszczone są w wielu wierszach, często dodatkowo przesuniętych w kolumnach.
Po czwarte:
Podstawowy problem importu
danych polega NA LOGICE takiego odczytu. Dane, zanim się je w ogóle „odczyta”,
najpierw muszą być „znalezione”, a informacja o tym, czy dany wiersz jest
wartościowy, czy też nie, bywa zwykle w innym miejscu, niż same dane do
odczytania (np. w innym wierszu). Gdy zostaną odczytane, muszą też zostać
zinterpretowane i dołączone do odpowiedniego „nagłówka” w strukturze. A gdy już
nawet to wszystko połączymy, trzeba jasno wskazać, kiedy należy dany rekord
zapisać i rozpocząć gromadzenie kolejnego zestawu danych do zapisu.
To, co wygląda prosto, wręcz
banalnie, dla człowieka – dla twórcy algorytmu (logiki) odczytu bywa zadaniem
bardzo niekiedy trudnym.
I, naprawdę, czasami trudno
oprzeć się wrażeniu, że taka, a nie inna, konstrukcja wydruku, jest stworzona
złośliwie, aby trudniej było wyciągnąć z niej dane, a tym samym być zmuszonym
do kolejnych zakupów (raportów, dodatków, usług) u dostawcy danego systemu.
2. Analitycy chcą danych!
A systemy informatyczne,
tworzone przez informatyków, potrzeby tej nie spełniają lub robią to źle.
Z jednej strony oferują
nieciekawe eksporty, uporządkowane informatycznie, z drugiej zaś wydruki
tekstowe lub eksporty do PDF, HTML, Excela, Worda, sporządzone tak, że trudno
coś z nich odczytać.
Celem tych wydruków jest
„atrakcyjnie wyglądać na drukarce”, a to, że stanowią one niekiedy jedyne
źródło sensownych danych, zdaje się dostawcy systemu nie obchodzić, choć często
o tym doskonale wie.
Wszelkie procedury importowe
pobierają WSZYSTKIE wiersze, potem w Excelu się je filtruje, obrabia, czyści i
„układa” we właściwe kolumny. Jest to niepowtarzalne i bardzo pracochłonne, ale
też niekiedy dodatkowo utrudnione, gdyż rozmiar pliku tekstowego często przekracza (bo np. zawiera nagłówki) dopuszczalną liczbę
wierszy, akceptowaną przez arkusz Excela. Importy takie są
więc dzielone na mniejsze i po imporcie i przefiltrowaniu (każda część
osobno) sklejane z powrotem w kolejnym arkuszu.
Z drugiej strony, systemy te
oferują wydruki „merytoryczne”, w których informacja jest już wyselekcjonowana,
merytorycznie przetworzona, uzupełniona danymi słownikowymi i … prezentowana w
jeszcze bardziej atrakcyjnej wizualnie formie. Ta „wizualna atrakcyjność”
jednak jest już jednak całkowitym zaprzeczeniem efektywności importu danych.
Przykłady takich zestawień
to „Zestawienie obrotów i sald programu FK” lub „Zestawienie rozrachunków
nierozliczonych”
Przyjrzyjmy się
przykładom:
Problem: Zaśmiecenie
wydruku:
(Mnóstwo linii dodatkowych)
Problem: Hierarchia danych
(Jak odczytać, że 1.dokument o wartości 38,28 został zaksięgowany na
koncie=401002 dla MPK=Zarząd?)
Problem: Przesunięcie danych
w poziomie (kolumnach)
(Elementy tabeli dla
dokumentów są w innych kolumnach, niż podsumowania)
Problem: Przesunięcie danych
w pionie (wierszach)
(Wartości „Ma” są poniżej
wartości „Winien” – odczyt wierszami jest bezużyteczny, trudno przyporządkować
dane „ma” do odp. konta)
Problem: Dane w PDF, HTML, Plikach
MS Word
(Prosty przykład, bywa dużo
gorzej…)
3. Co oferuje AFIN.NET.TextConverter?