Klasyczny pobór danych z poważnej bazy danych (tu Oracle w.
Express Edition) a pobór danych przez Excela (Query) i
automatyzacja w AFIN.NET
Film:
http://afin.net/webcasts/Demo_ProfiDatabaseUI_vs_AFIN.NET.swf
Na filmie pomyłkowo popełniłem próbę definicji i pobrania
danych przez uniwersalny sterownik ODBC - jak widać, się nie
udało - zadziałał dopiero natywny sterownik ODBC Oracle'a.
Porównanie funkcjonalności:
Oracle - nienajlepszy edytor zapytań - wszystko trzeba
ręcznie. Co prawda jest 'Query Builder', ale interfejs jest tam
już 'prawdziwie informatyczny'. Całą tabelę można pobrać
dość łatwo, ale zapytanie z filtrem to już pół doktoratu -
lepiej więc (kto zna) pisać SQL-ki.
Pobranie do Excela to już jednak koszmar. Eksport tylko jako csv,
który, otwierany Excelem, każdorazowo trzeba od nowa ustawiać,
przerabiać, itp.
Excel & Query
Działa. Przyjazny interfejs, nie trzeba znać SQLa, dane można
przerabiać, jak się chce...
Nie można, co prawda, przesyłać skoroszytów z Query (i kilka
innych wad), ale dane są bezpośrednio i szybko w arkuszu Excela.
AFIN.NET
Pobieramy z kwerendy definicję ciągu połączeniowego i SQLek -
możemy go zresztą też wpisać ręcznie, albo skądś skopiować
(tu, dla przykładu, 2-gie zapytanie SQL wykopiowałem z ...
Oracle'a.)
I pyk - sto tabel odświeżone.
wtorek, 22 grudnia 2009
poniedziałek, 14 grudnia 2009
Wydajność ADO&AFIN.NET vs. Excel2010&PowerPivot
Temat:
"In Memory Analytics" - najnowszy trend w Business Intelligence..
Czy to jest efektywne?
Mamy bazę (tabelę) - 3 MILIONY REKORDÓW w formacie DBF oraz
słownik excelowy 19 rekordów - standardowa sytuacja. Wszystkie
dostępy zdefiniowane, bo nie będziemy tracić czasu na klikanie...
Chcemy tylko ODŚWIEŻYĆ DANE.
(Uwaga: Film jest długi i niewiele się dzieje - większość czasu
to oczekiwanie na zasilenie danych - można przewijać...)
Film:
http://afin.net/webcasts/Demo_RefreshData_ADO&AfinNet_vs_Excel2010&PowerPivot.swf
Rezultaty:
ADO & AFIN.NET - 32 sekundy
Excel 2010 & PowerPivot - 110 sekund
"In Memory Analytics" - najnowszy trend w Business Intelligence..
Czy to jest efektywne?
Mamy bazę (tabelę) - 3 MILIONY REKORDÓW w formacie DBF oraz
słownik excelowy 19 rekordów - standardowa sytuacja. Wszystkie
dostępy zdefiniowane, bo nie będziemy tracić czasu na klikanie...
Chcemy tylko ODŚWIEŻYĆ DANE.
(Uwaga: Film jest długi i niewiele się dzieje - większość czasu
to oczekiwanie na zasilenie danych - można przewijać...)
Film:
http://afin.net/webcasts/Demo_RefreshData_ADO&AfinNet_vs_Excel2010&PowerPivot.swf
Rezultaty:
ADO & AFIN.NET - 32 sekundy
Excel 2010 & PowerPivot - 110 sekund
piątek, 11 grudnia 2009
Funkcje OLAP w AFIN.NET i w Excelu 2010 - porównanie
Film:
http://afin.net/webcasts/Demo_OlapFunctions_AfinNetVsExcel2010.swf
Dla porównania formułki pokazywanych funkcji:
Czysty Excel 2010:
=CUBEVALUE("stany";$B$4;$B5;C$4)
Prosty zapis, ale wymaga istnienia w arkuszu TRZECH(!) innych
funkcji:
=CUBEMEMBER("stany";{"[DateYYYY].[Wszystkie].[2007]"\"[DateMM].[Wszystkie].[01]"})
=CUBEMEMBER("stany";"[a01].[Wszystkie].[1]")
=CUBEMEMBER("stany";"[Measures].[S_MW]")
Można dać je, oczywiście, do jednej formuły, ale wtedy ta
formuła będzie bardzo długa i skomplikowana.
AFIN.NET (prosty import ustawień z tabeli przestawnej):
=GETDATAOLAP("C:\Program
Files\AFIN.NET\Samples\Data\OLAP\FK3olap\stany.cub";"OCWCube";"OCWCube";"[Measures].[S_MW]";"[a01].[1],[DateYYYY].[2007],[DateMM].[01]";)
Czytaj: Wszystkie ważne parametry są w jednej, czytelnej, łatwo
pobieralnej funkcji, w której można również sparametryzować...
źródło OLAP, czyli np. wersję kostki (W funkcji Excelowej nie
można).
AFIN.NET (Zdefiniowana księgowa miara biznesowa - to samo
źródło danych):
=GETDATA("Financials.3.Cub";"mw/1";"2007";"01")
Czytaj: prostota do bólu.
To samo, ale z baaardzo rozbudowanym zapytaniem księgowym w AFQL:
=GETDATA("Financials.3.Cub";"mw/1+mw/2-sw/3+mw/4-sm/401+ow/4*";"2007";"01")
Czytaj: elastyczność zapytania księgowego - rownież do bólu.
Wnioski:
Cóż...jakby to powiedzieć... :)
http://afin.net/webcasts/Demo_OlapFunctions_AfinNetVsExcel2010.swf
Dla porównania formułki pokazywanych funkcji:
Czysty Excel 2010:
=CUBEVALUE("stany";$B$4;$B5;C$4)
Prosty zapis, ale wymaga istnienia w arkuszu TRZECH(!) innych
funkcji:
=CUBEMEMBER("stany";{"[DateYYYY].[Wszystkie].[2007]"\"[DateMM].[Wszystkie].[01]"})
=CUBEMEMBER("stany";"[a01].[Wszystkie].[1]")
=CUBEMEMBER("stany";"[Measures].[S_MW]")
Można dać je, oczywiście, do jednej formuły, ale wtedy ta
formuła będzie bardzo długa i skomplikowana.
AFIN.NET (prosty import ustawień z tabeli przestawnej):
=GETDATAOLAP("C:\Program
Files\AFIN.NET\Samples\Data\OLAP\FK3olap\stany.cub";"OCWCube";"OCWCube";"[Measures].[S_MW]";"[a01].[1],[DateYYYY].[2007],[DateMM].[01]";)
Czytaj: Wszystkie ważne parametry są w jednej, czytelnej, łatwo
pobieralnej funkcji, w której można również sparametryzować...
źródło OLAP, czyli np. wersję kostki (W funkcji Excelowej nie
można).
AFIN.NET (Zdefiniowana księgowa miara biznesowa - to samo
źródło danych):
=GETDATA("Financials.3.Cub";"mw/1";"2007";"01")
Czytaj: prostota do bólu.
To samo, ale z baaardzo rozbudowanym zapytaniem księgowym w AFQL:
=GETDATA("Financials.3.Cub";"mw/1+mw/2-sw/3+mw/4-sm/401+ow/4*";"2007";"01")
Czytaj: elastyczność zapytania księgowego - rownież do bólu.
Wnioski:
Cóż...jakby to powiedzieć... :)
środa, 9 grudnia 2009
Excel 2010
Łi kajndli inform ju, det EjfinDotNet łorks on Excel 2010 Beta.
Film potem.
Pierwsze uwagi nt. Excela 2010 - kaszanka :(
Nie ma guzika Office, a taki ładny był, fajnie współgrał z
guzikiem Visty - nie wiadomo było, który jest który i po co oba.
Poprawili Query! (Ikonki się pokazują od razu, bo w E2007 nie).
I... tyle.
Nic w temacie funkcji bazodanowych, nic w temacie ułatwień
dostępu...
Tylko trochę ładniejszy, bardziej 'kwadratowy'.
Czyli: WYSZUKAJ.PIONOWO() ładniej opakowane.
Ale to dopiero początek rozpracowywania.
Film potem.
Pierwsze uwagi nt. Excela 2010 - kaszanka :(
Nie ma guzika Office, a taki ładny był, fajnie współgrał z
guzikiem Visty - nie wiadomo było, który jest który i po co oba.
Poprawili Query! (Ikonki się pokazują od razu, bo w E2007 nie).
I... tyle.
Nic w temacie funkcji bazodanowych, nic w temacie ułatwień
dostępu...
Tylko trochę ładniejszy, bardziej 'kwadratowy'.
Czyli: WYSZUKAJ.PIONOWO() ładniej opakowane.
Ale to dopiero początek rozpracowywania.
środa, 2 grudnia 2009
Wielostopniowe przetwarzanie danych
Zadanie, dane i natchnienie:
(C) 2009 - Mariusz Jankowski (Dzięki!)
http://www.goldenline.pl/forum/excel-vba/1326580
Problem:
Do tej pory skupialiśmy się na pobieraniu danych z różnych
źródeł i wklejaniu ich w arkusz w formie małoprzetworzonej, poza
prostymi łączeniami tabel. Niekiedy jednak zachodzi konieczność
znacznego przetworzenia danych, nawet, gdy wynikiem ma być mała,
prosta tabela.
Zwykle robi się to poprzez napisanie skomplikowanego zapytania w
języku SQL, tzw. zagnieżdżonego SQL, czyli zapytania, które
najpierw buduje jakiś widok danych, a dopiero potem łączy go z
inną tabelą lub innym widokiem.
Działa, ale:
1. Trzeba mieć narzędzie, żeby to napisać. Zwykłe edytory SQL
nie oferują edycji zapytań zagnieżdżonych.
2. Trzeba umieć to napisać, a taki SQL może być bardzo
skomplikowany.
Wyjściem jest (wielo-)stopniowe przetwarzanie danych, ale to z
kolei oferują już tylko profesjonalne narzędzia DTS-owe (Data
Transforming Systems). Trzeba je mieć, umieć włączyć (nie takie
to czasami proste, serio), rozumieć, co te narzędzia do nas
mówią... ech, skomplikowane :(
Albo (filmik):
http://afin.net/webcasts/Demo_ProcessingDataMultistep.swf
Opis:
1. Dane są w dwóch arkuszach jednego pliku Excela. Pobieramy je
kwerendą, tworząc relację i, od razu, ranking (1.) zespołów
według średnich wzrostów zawodników.
Tworzy się tabela w bazie Accessowej 'MyTable'
2. Tworzymy kwerendę z tej tabeli tworząc inną tabelę - kolejny
ranking, tym razem ranking (2.) dywizji według maksymalnych
średnich zespołów.
Tworzy się kolejna tabela 'MyTable2'
3. Tworzymy kolejną kwerendę, łączącą dane rankingu 2. z
informacjami o zespołach, osiągających te średnie, czyli
łączymy ranking 2. z rankingiem 1.
Powstałą tabelę pobieramy do arkusza.
Raport tworzy się natychmiast jednym kliknięciem myszy.
Nie napisałem ręcznie nic.
(C) 2009 - Mariusz Jankowski (Dzięki!)
http://www.goldenline.pl/forum/excel-vba/1326580
Problem:
Do tej pory skupialiśmy się na pobieraniu danych z różnych
źródeł i wklejaniu ich w arkusz w formie małoprzetworzonej, poza
prostymi łączeniami tabel. Niekiedy jednak zachodzi konieczność
znacznego przetworzenia danych, nawet, gdy wynikiem ma być mała,
prosta tabela.
Zwykle robi się to poprzez napisanie skomplikowanego zapytania w
języku SQL, tzw. zagnieżdżonego SQL, czyli zapytania, które
najpierw buduje jakiś widok danych, a dopiero potem łączy go z
inną tabelą lub innym widokiem.
Działa, ale:
1. Trzeba mieć narzędzie, żeby to napisać. Zwykłe edytory SQL
nie oferują edycji zapytań zagnieżdżonych.
2. Trzeba umieć to napisać, a taki SQL może być bardzo
skomplikowany.
Wyjściem jest (wielo-)stopniowe przetwarzanie danych, ale to z
kolei oferują już tylko profesjonalne narzędzia DTS-owe (Data
Transforming Systems). Trzeba je mieć, umieć włączyć (nie takie
to czasami proste, serio), rozumieć, co te narzędzia do nas
mówią... ech, skomplikowane :(
Albo (filmik):
http://afin.net/webcasts/Demo_ProcessingDataMultistep.swf
Opis:
1. Dane są w dwóch arkuszach jednego pliku Excela. Pobieramy je
kwerendą, tworząc relację i, od razu, ranking (1.) zespołów
według średnich wzrostów zawodników.
Tworzy się tabela w bazie Accessowej 'MyTable'
2. Tworzymy kwerendę z tej tabeli tworząc inną tabelę - kolejny
ranking, tym razem ranking (2.) dywizji według maksymalnych
średnich zespołów.
Tworzy się kolejna tabela 'MyTable2'
3. Tworzymy kolejną kwerendę, łączącą dane rankingu 2. z
informacjami o zespołach, osiągających te średnie, czyli
łączymy ranking 2. z rankingiem 1.
Powstałą tabelę pobieramy do arkusza.
Raport tworzy się natychmiast jednym kliknięciem myszy.
Nie napisałem ręcznie nic.
czwartek, 26 listopada 2009
Konsolidacja pozioma, czyli jak z wielu kolumn zrobić tabelę przestawną.
Problem:
Tabela przestawna działa fajnie, gdy dane numeryczne znajdują się
w jednej kolumnie, a obok, w tych samych wierszach, ale innych
kolumnach znajduje się możliwie jak najwięcej atrybutów, tych
danych dotyczących.
Ale nie zawsze tak jest. Czasami eksporty różnych systemów na
siłę ustawiają nam dane w różnych kolumnach, a czasami...
robimy to sami, bo tak w Excelu najłatwiej się dane wpisuje - w
końcu arkusz Excela to fajna tabelka ;)
Filmik:
http://afin.net/webcasts/Demo_DataConsolidation.swf
Opis:
1. Najpierw kwerenda, wzbogacona o wymiary, które nas 'bolą':
Dni - bo dane w kolumnach, a my chcemy w jednej
Miesiące - bo dane w arkuszach, a my chcemy w jednym
2. Pobranie definicji kwerendy do szablonu AFIN.NET.IS
3. Parametryzacja definicji na dwa powyższe parametry
4. Skopiowanie w tyle wierszy, ile jest kombinacji parametrów
(Informatyk zauważy, że można to zrobić lepiej, czyli dużo
krócej. Tu celem jest prostota, nie efektywność)
5. Goł!
Zero VBA, zero formuł - łatwe. Powtarzalne, szybkie, efektywne,
bezbłędne...
Tabela przestawna działa fajnie, gdy dane numeryczne znajdują się
w jednej kolumnie, a obok, w tych samych wierszach, ale innych
kolumnach znajduje się możliwie jak najwięcej atrybutów, tych
danych dotyczących.
Ale nie zawsze tak jest. Czasami eksporty różnych systemów na
siłę ustawiają nam dane w różnych kolumnach, a czasami...
robimy to sami, bo tak w Excelu najłatwiej się dane wpisuje - w
końcu arkusz Excela to fajna tabelka ;)
Filmik:
http://afin.net/webcasts/Demo_DataConsolidation.swf
Opis:
1. Najpierw kwerenda, wzbogacona o wymiary, które nas 'bolą':
Dni - bo dane w kolumnach, a my chcemy w jednej
Miesiące - bo dane w arkuszach, a my chcemy w jednym
2. Pobranie definicji kwerendy do szablonu AFIN.NET.IS
3. Parametryzacja definicji na dwa powyższe parametry
4. Skopiowanie w tyle wierszy, ile jest kombinacji parametrów
(Informatyk zauważy, że można to zrobić lepiej, czyli dużo
krócej. Tu celem jest prostota, nie efektywność)
5. Goł!
Zero VBA, zero formuł - łatwe. Powtarzalne, szybkie, efektywne,
bezbłędne...
piątek, 20 listopada 2009
Własna funkcja - VLOOKUP do plików zamkniętych
Problem:
http://www.goldenline.pl/forum/excel-vba/1303380/s/1
Filmik:
http://afin.net/webcasts/HowTo_CreateMyFunctionVLOOKUP.swf
Opis:
Excel czegoś nie potrafi? Zrób to sam w AFIN.NET.
http://www.goldenline.pl/forum/excel-vba/1303380/s/1
Filmik:
http://afin.net/webcasts/HowTo_CreateMyFunctionVLOOKUP.swf
Opis:
Excel czegoś nie potrafi? Zrób to sam w AFIN.NET.
poniedziałek, 16 listopada 2009
Publikacja raportu na... grupie dyskusyjnej Google
Film:
http://afin.net/webcasts/Demo_PublishingOnGoogle.swf
Opis:
Opublikuj coś AFINEM!
(Coś mało ważnego, bo Cię Prezes okrzyczy ;) )
afinnet@googlegroups.com
Link do grupy (pliki na grupie mogą się zmieniać i być kasowane)
http://groups.google.pl/group/afinnet
Wnioski:
Jednym z koronnych "dowodów" na wyższość systemów Business
Intelligence nad Excelem jest możliwość publikowania raportów w
sieci rozległej, czyli Internecie.
Że serwer jest firmowy, że strasznie zabezpieczony, itp., itd.
Czy może być coś bardziej DOSTĘPNEGO i bardziej ZABEZPIECZONEGO
od Google'a - tam pracuje nad tym ogromny sztab ludzi!
Tu grupa jest otwarta dla wszystkich, nawet nie trzeba być
zalogowanym (co pokazano na filmie) żeby zarówno publikować, jak
i przeglądać - normalnie oczywiście tak być nie może i Google
to zapewnia.
Koszt takiego firmowego serwera publikacji raportow = 0 zł.
A publikacja jest prosta - jak to w AFIN.NET...
http://afin.net/webcasts/Demo_PublishingOnGoogle.swf
Opis:
Opublikuj coś AFINEM!
(Coś mało ważnego, bo Cię Prezes okrzyczy ;) )
afinnet@googlegroups.com
Link do grupy (pliki na grupie mogą się zmieniać i być kasowane)
http://groups.google.pl/group/afinnet
Wnioski:
Jednym z koronnych "dowodów" na wyższość systemów Business
Intelligence nad Excelem jest możliwość publikowania raportów w
sieci rozległej, czyli Internecie.
Że serwer jest firmowy, że strasznie zabezpieczony, itp., itd.
Czy może być coś bardziej DOSTĘPNEGO i bardziej ZABEZPIECZONEGO
od Google'a - tam pracuje nad tym ogromny sztab ludzi!
Tu grupa jest otwarta dla wszystkich, nawet nie trzeba być
zalogowanym (co pokazano na filmie) żeby zarówno publikować, jak
i przeglądać - normalnie oczywiście tak być nie może i Google
to zapewnia.
Koszt takiego firmowego serwera publikacji raportow = 0 zł.
A publikacja jest prosta - jak to w AFIN.NET...
piątek, 13 listopada 2009
Funkcja GETDATAOLAP - Raportowanie z hurtowni danych OLAP
Film:
http://afin.net/webcasts/HowTo_InsertFunction_GETDATAOLAP.swf
Opis:
Załóżmy, ze posiadamy już tzw. wielowymiarową hurtownię danych
OLAP.
Może ona być w wersji "profesjonalnej", czyli np. w MS SQL Server
Analysis Services (SSAS) lub w plikach .cub, tj. wersji dla
mniejszej firmy lub wersji prototypowej - nie ma to najmniejszego
znaczenia - w obu przypadkach istnieje możliwość "zrzutu" danych
do Excela w formie excelowej tabeli przestawnej, podłączonej
bezpośrednio do zewnętrznego, OLAP-owego źródła danych.
Gdzie jest problem?
Właściwie nigdzie - tabela przestawna na zewnętrznym źródle
danych działa bardzo dobrze - bardzo szybko i wygodnie.
Ale...
Gdy chcemy stworzyć raport - nasz własny raport - w którym
poszczególne informacje mają znaleźć się w bardzo konkretnych
miejscach naszego raportu - tabela przestawna staje się
ograniczeniem!
Tabela ma jedno źródło danych, w tabeli nie wszystkie elementy
widać naraz, tabeli nie da się ustawić w dowolny sposób, tabeli
nie da się zmieścić w jednej komórce arkusza (a my chcemy mieć
dane z różnych tabel bezpośrenio jedna pod drugą...), itp.
Prowizorycznym rozwiązaniem jest excelowa funkcja WEŹDANETABELI,
ale ma ona wadę - tabela MUSI być otwarta, a dane MUSZĄ być w
niej "widoczne" - Jest z tym problem.
Gdy tabel (takich źródeł danych) jest dużo, albo tabele są
duże (np. wykraczają poza arkusz), funkcja WEŹDANETABELI staje
się bezużyteczna - poza tym, trzeba pamiętać o otworzeniu
wszystkich tabel...
Najczęściej stosuje się w tym celu dodatkowy program pakietu SQL
Server - SQLS Reporting Services, ale stworzenie w nim jakichkolwiek
definicji wymaga dużej wiedzy informatycznej (znajomość języka
MDX), a stworzenie na jednym raporcie wielu źródeł danych stanowi
duży problem.
Poza tym, raportów nie tworzy się tam tak łatwo i intuicyjnie,
jak w Excelu...
AFIN.NET oferuje funkcję GETDATAOLAP, której działanie jest, w
gruncie rzeczy, bardzo podobne do WEŹDANETABELI. Dane z tabeli
pobiera się równie prosto - 'prawy przycisk myszy' / 'AFIN.NET...'
/ 'Pobierz jako funkcję'...
I gotowe!
Ale funkcja GETDATAOLAP nie wymaga, żeby tabela przestawna była
otwarta (a nawet w ogóle istniała) - tabela jest potrzebna
wyłącznie do STWORZENIA FUNKCJI.
A parametryzowanie wartościami wymiarów - już standardowo, jak
wszystkie funkcje w AFIN.NET
Parametryzowanie jedną wartością wielu funkcji, odwołujących
się do różnych źródeł danych, różnych wymiarów kostek itp.
- jak wyżej, bezproblemowo.
http://afin.net/webcasts/HowTo_InsertFunction_GETDATAOLAP.swf
Opis:
Załóżmy, ze posiadamy już tzw. wielowymiarową hurtownię danych
OLAP.
Może ona być w wersji "profesjonalnej", czyli np. w MS SQL Server
Analysis Services (SSAS) lub w plikach .cub, tj. wersji dla
mniejszej firmy lub wersji prototypowej - nie ma to najmniejszego
znaczenia - w obu przypadkach istnieje możliwość "zrzutu" danych
do Excela w formie excelowej tabeli przestawnej, podłączonej
bezpośrednio do zewnętrznego, OLAP-owego źródła danych.
Gdzie jest problem?
Właściwie nigdzie - tabela przestawna na zewnętrznym źródle
danych działa bardzo dobrze - bardzo szybko i wygodnie.
Ale...
Gdy chcemy stworzyć raport - nasz własny raport - w którym
poszczególne informacje mają znaleźć się w bardzo konkretnych
miejscach naszego raportu - tabela przestawna staje się
ograniczeniem!
Tabela ma jedno źródło danych, w tabeli nie wszystkie elementy
widać naraz, tabeli nie da się ustawić w dowolny sposób, tabeli
nie da się zmieścić w jednej komórce arkusza (a my chcemy mieć
dane z różnych tabel bezpośrenio jedna pod drugą...), itp.
Prowizorycznym rozwiązaniem jest excelowa funkcja WEŹDANETABELI,
ale ma ona wadę - tabela MUSI być otwarta, a dane MUSZĄ być w
niej "widoczne" - Jest z tym problem.
Gdy tabel (takich źródeł danych) jest dużo, albo tabele są
duże (np. wykraczają poza arkusz), funkcja WEŹDANETABELI staje
się bezużyteczna - poza tym, trzeba pamiętać o otworzeniu
wszystkich tabel...
Najczęściej stosuje się w tym celu dodatkowy program pakietu SQL
Server - SQLS Reporting Services, ale stworzenie w nim jakichkolwiek
definicji wymaga dużej wiedzy informatycznej (znajomość języka
MDX), a stworzenie na jednym raporcie wielu źródeł danych stanowi
duży problem.
Poza tym, raportów nie tworzy się tam tak łatwo i intuicyjnie,
jak w Excelu...
AFIN.NET oferuje funkcję GETDATAOLAP, której działanie jest, w
gruncie rzeczy, bardzo podobne do WEŹDANETABELI. Dane z tabeli
pobiera się równie prosto - 'prawy przycisk myszy' / 'AFIN.NET...'
/ 'Pobierz jako funkcję'...
I gotowe!
Ale funkcja GETDATAOLAP nie wymaga, żeby tabela przestawna była
otwarta (a nawet w ogóle istniała) - tabela jest potrzebna
wyłącznie do STWORZENIA FUNKCJI.
A parametryzowanie wartościami wymiarów - już standardowo, jak
wszystkie funkcje w AFIN.NET
Parametryzowanie jedną wartością wielu funkcji, odwołujących
się do różnych źródeł danych, różnych wymiarów kostek itp.
- jak wyżej, bezproblemowo.
czwartek, 12 listopada 2009
Funkcja GETDATAODBC - Uniwersalna funkcja bazodanowa
Film:
http://afin.net/webcasts/HowTo_InsertFunction_GETDATAODBC.swf
Opis:
Excel jest naprawdę bardzo sympatyczną i pełną możliwości
tabelką.
Ale, w swoim standardzie, nie posiada funkcji, które potrafią
sięgnąć "na zewnątrz", do innego, dowolnego środowiska
bazodanowego, własnych skoroszytów Excela, hurtowni danych, itp.
W AFIN.NET funkcja GETDATAODBC() to potrafi - jest to uniwersalna
funkcja do poboru dowolnych danych przez ADO/ODBC itp.
Jedynym problemem jest znajomość systemu zapisu jej argumentów:
ConnStr - tzw. ciąg połączenia bazodanowego
SQLStr - tzw. zdanie SQL - zapytanie do bazy danych
Ale tu w sukurs przychodzi MS Query - definiujemy kwerendę i jednym
prostym ruchem "importujemy" jej ustwienia (tj. w/w parametry) do
funkcji GETDATAODBC() jako jej gotowe argumenty. Działa!
Oczywiście, wszystko możemy robić ręcznie albo kopiować z
biblioteki przykładów. Argumenty funkcji są tekstowe - możemy je
dowolnie zmieniać (edytować), a także parametryzować
wartościami w arkuszu.
Na filmie sparametryzowano w ten sposób ciąg połączenia
bazodanowego do skoroszytu Excela; ponieważ jest używany w wielu
funkcjach na arkuszu, nie ma sensu przechowywać go w postaci
argumentu we wszystkich funkcjach - tu: jest w jednym miejscu jako
parametr arkusza.
http://afin.net/webcasts/HowTo_InsertFunction_GETDATAODBC.swf
Opis:
Excel jest naprawdę bardzo sympatyczną i pełną możliwości
tabelką.
Ale, w swoim standardzie, nie posiada funkcji, które potrafią
sięgnąć "na zewnątrz", do innego, dowolnego środowiska
bazodanowego, własnych skoroszytów Excela, hurtowni danych, itp.
W AFIN.NET funkcja GETDATAODBC() to potrafi - jest to uniwersalna
funkcja do poboru dowolnych danych przez ADO/ODBC itp.
Jedynym problemem jest znajomość systemu zapisu jej argumentów:
ConnStr - tzw. ciąg połączenia bazodanowego
SQLStr - tzw. zdanie SQL - zapytanie do bazy danych
Ale tu w sukurs przychodzi MS Query - definiujemy kwerendę i jednym
prostym ruchem "importujemy" jej ustwienia (tj. w/w parametry) do
funkcji GETDATAODBC() jako jej gotowe argumenty. Działa!
Oczywiście, wszystko możemy robić ręcznie albo kopiować z
biblioteki przykładów. Argumenty funkcji są tekstowe - możemy je
dowolnie zmieniać (edytować), a także parametryzować
wartościami w arkuszu.
Na filmie sparametryzowano w ten sposób ciąg połączenia
bazodanowego do skoroszytu Excela; ponieważ jest używany w wielu
funkcjach na arkuszu, nie ma sensu przechowywać go w postaci
argumentu we wszystkich funkcjach - tu: jest w jednym miejscu jako
parametr arkusza.
wtorek, 10 listopada 2009
Funkcja GETDATALINK - alternatywa dla łącz międzyskoroszytowych
Film:
http://afin.net/webcasts/HowTo_InsertFunction_GETDATALINK.swf
Opis:
Film pokazuje, w jaki sposób wpisać i parametryzować funkcję
zastępującą awaryjne łącza międzyskoroszytowe w arkuszu.
Pokazane są dwa sposoby:
1. Poprzez stworzenie fizycznego łącza do innego skoroszytu
Excela, zamianę go na funkcję GETDATALINK, a nastepnie
sparametryzowanie nazwą skoroszytu i adresem odwołania.
2. Poprzez użycie funkcji GETDATA (polski alias: DANE) z
predefiniowanymi ustawieniami do prezentowanego, przykładowego
modelu skoroszytów.
W tym przypadku wstępne otwieranie pliku-źródła nie jest
wymagane.
Wnioski:
Koniec z problemami, związanymi z awaryjnością łącz Excela -
funkcje AFIN.NET mogą je zastąpić i, dodatkowo, mogą być
dowolnie parametryzowane.
http://afin.net/webcasts/HowTo_InsertFunction_GETDATALINK.swf
Opis:
Film pokazuje, w jaki sposób wpisać i parametryzować funkcję
zastępującą awaryjne łącza międzyskoroszytowe w arkuszu.
Pokazane są dwa sposoby:
1. Poprzez stworzenie fizycznego łącza do innego skoroszytu
Excela, zamianę go na funkcję GETDATALINK, a nastepnie
sparametryzowanie nazwą skoroszytu i adresem odwołania.
2. Poprzez użycie funkcji GETDATA (polski alias: DANE) z
predefiniowanymi ustawieniami do prezentowanego, przykładowego
modelu skoroszytów.
W tym przypadku wstępne otwieranie pliku-źródła nie jest
wymagane.
Wnioski:
Koniec z problemami, związanymi z awaryjnością łącz Excela -
funkcje AFIN.NET mogą je zastąpić i, dodatkowo, mogą być
dowolnie parametryzowane.
piątek, 6 listopada 2009
Konsolidacja rejestrów z eksportami filtrowanymi
Problem:
Jak skonsolidować wiele rejestrów z wielu ustrukturalizowanych
katalogów (system zabezpieczeń na poziomie katalogów), a
następnie udostępnić wyniki konsolidacji różnym osobom o
ograniczonych uprawnieniach?
Filmik:
http://afin.net/webcasts/Demo_RegisterConsolidation.swf
Opis:
Wiele katalogów, wiele plików
(w przykładzie: wszystkie pliki takie same)
1. Pokaz środowiska - organizacji katalogów oraz zawartości
plików
2. Stworzenie kwerendy do pierwszego z plików oraz dodanie
atrybutów dodatkowych, identyfikujących miejsce pliku w hierarchii
oraz nazwę pliku (jako jego identyfikator)
3. Otwarcie odpowiedniego szablonu AFIN.NET i pobranie definicji
kwerendy do programu
4. Parametryzacja programu wartościami parametrów, dot. katalogu
(miejsca w hierarchii plików) oraz nazwy pliku, wyciągniętych do
komórek arkusza programu
5. Testowe uruchomienie programu i przegląd wartości - filtrowanie
wg dowolnych atrybutów
6. Uzupełnienie programu o część eksportową - dodanie wierszy
eksportujących oraz, również, sparametryzowanie ich komórkami w
arkuszu (tu: w pierwszym etapie, podczas nagrywania filmu,
pomyliłem się i dodałem za mało atrybutów - dlatego dwa razy)
7. Przegląd gotowych plików eksportowych.
Oczywiście, pliki eksportowe można od razu zapisywać do
odpowiednich katalogów, tak, aby każdy z ich użytkowników miał
swój i tylko swój do wglądu.
Dystrybucję tego "systemu" można również zorganizować inaczej,
bez wykonywania plików 'eksportowych': każdy z zainteresowanych
użytkowników ma taki sam plik-program. Dane jednak pobierają się
każdemu inaczej - tak, jak pozwalają na to ograniczenia
dostępności na poziomie systemu plików. Gdzie nie ma dostępu -
dane się nie pobiorą. Program nie zwróci żadnego błędu - brak
będzie jedynie tych danych, do których dany użytkownik nie
posiada uprawnień.
Jak skonsolidować wiele rejestrów z wielu ustrukturalizowanych
katalogów (system zabezpieczeń na poziomie katalogów), a
następnie udostępnić wyniki konsolidacji różnym osobom o
ograniczonych uprawnieniach?
Filmik:
http://afin.net/webcasts/Demo_RegisterConsolidation.swf
Opis:
Wiele katalogów, wiele plików
(w przykładzie: wszystkie pliki takie same)
1. Pokaz środowiska - organizacji katalogów oraz zawartości
plików
2. Stworzenie kwerendy do pierwszego z plików oraz dodanie
atrybutów dodatkowych, identyfikujących miejsce pliku w hierarchii
oraz nazwę pliku (jako jego identyfikator)
3. Otwarcie odpowiedniego szablonu AFIN.NET i pobranie definicji
kwerendy do programu
4. Parametryzacja programu wartościami parametrów, dot. katalogu
(miejsca w hierarchii plików) oraz nazwy pliku, wyciągniętych do
komórek arkusza programu
5. Testowe uruchomienie programu i przegląd wartości - filtrowanie
wg dowolnych atrybutów
6. Uzupełnienie programu o część eksportową - dodanie wierszy
eksportujących oraz, również, sparametryzowanie ich komórkami w
arkuszu (tu: w pierwszym etapie, podczas nagrywania filmu,
pomyliłem się i dodałem za mało atrybutów - dlatego dwa razy)
7. Przegląd gotowych plików eksportowych.
Oczywiście, pliki eksportowe można od razu zapisywać do
odpowiednich katalogów, tak, aby każdy z ich użytkowników miał
swój i tylko swój do wglądu.
Dystrybucję tego "systemu" można również zorganizować inaczej,
bez wykonywania plików 'eksportowych': każdy z zainteresowanych
użytkowników ma taki sam plik-program. Dane jednak pobierają się
każdemu inaczej - tak, jak pozwalają na to ograniczenia
dostępności na poziomie systemu plików. Gdzie nie ma dostępu -
dane się nie pobiorą. Program nie zwróci żadnego błędu - brak
będzie jedynie tych danych, do których dany użytkownik nie
posiada uprawnień.
piątek, 16 października 2009
Konsolidacja budżetów z... Google'a (Google Docs)
Wszystko jest fajnie, jak budżety są w zasięgu naszej sieci
lokalnej. Gdy nie są, może być problem - tym bardziej, gdy
jeszcze są "mobilne", czyli twórca budżetu rzadko w ogóle do
komputera siada (albo mało zna), robi na różnych komputerach,
itp.
Tu rozwiązaniem jest Internet, ale, z kolei, ten ktoś rzadko ma
swój komputer (poczta, itp.)
Rozwiązanie:
Wszyscy (ci mobilni) robią budżety w Google Docs.
Pełne zabezpieczenia, udostępnianie (Użytkownik Google), arkusz
bardzo przyzwoity, komunikacja on-line (można czatować w trakcie
edytowania danych w arkuszu, wpis w arkuszu natychmiast widoczny
przez innych), nic nie można zepsuć, itp.
Można też pliki wstępnie konsolidować, np. na poziomie jakiegoś
obszaru działania reprezentantów handlowych (na filmie wstępnie
konsoliduję Dept01-Dept03 w skoroszyty roczne) - bardzo fajnie
działa funkcja (w arkuszu Google Docs)
'=ImportRange(kod_skoroszytu, arkusz!obszar)'
Ma to sens, serio, trochę się pobawiłem.
Ale, co dalej?
Jak konsolidować pliki, tak, żeby były u nas na komputerze, w
jednym arkuszu, w jednej tabeli przestawnej, itd.
Prosty zapis z GoogleDocs zapewnia "świeżość" plików, a
dalej...
A dalej, to już standard AFIN.NET:
Otwieramy szablon, robimy kwerendę, pobieramy jej parametry do
arkusza programu konsolidującego, parametryzujemy odpowiednio
poszczególne jego wiersze (komendy), uruchamiamy program
konsolidujący i... gotowe.
Filmik:
http://afin.net/webcasts/Demo_ConsolidateBudgetsFromGoogle.swf
Wnioski:
Jak ktoś mówi, że trzeba coś kupować ('Program do
budżetowania', albo jakie 'BI'), żeby konsolidować budżety
rozproszone, to nas robi w konia.
lokalnej. Gdy nie są, może być problem - tym bardziej, gdy
jeszcze są "mobilne", czyli twórca budżetu rzadko w ogóle do
komputera siada (albo mało zna), robi na różnych komputerach,
itp.
Tu rozwiązaniem jest Internet, ale, z kolei, ten ktoś rzadko ma
swój komputer (poczta, itp.)
Rozwiązanie:
Wszyscy (ci mobilni) robią budżety w Google Docs.
Pełne zabezpieczenia, udostępnianie (Użytkownik Google), arkusz
bardzo przyzwoity, komunikacja on-line (można czatować w trakcie
edytowania danych w arkuszu, wpis w arkuszu natychmiast widoczny
przez innych), nic nie można zepsuć, itp.
Można też pliki wstępnie konsolidować, np. na poziomie jakiegoś
obszaru działania reprezentantów handlowych (na filmie wstępnie
konsoliduję Dept01-Dept03 w skoroszyty roczne) - bardzo fajnie
działa funkcja (w arkuszu Google Docs)
'=ImportRange(kod_skoroszytu, arkusz!obszar)'
Ma to sens, serio, trochę się pobawiłem.
Ale, co dalej?
Jak konsolidować pliki, tak, żeby były u nas na komputerze, w
jednym arkuszu, w jednej tabeli przestawnej, itd.
Prosty zapis z GoogleDocs zapewnia "świeżość" plików, a
dalej...
A dalej, to już standard AFIN.NET:
Otwieramy szablon, robimy kwerendę, pobieramy jej parametry do
arkusza programu konsolidującego, parametryzujemy odpowiednio
poszczególne jego wiersze (komendy), uruchamiamy program
konsolidujący i... gotowe.
Filmik:
http://afin.net/webcasts/Demo_ConsolidateBudgetsFromGoogle.swf
Wnioski:
Jak ktoś mówi, że trzeba coś kupować ('Program do
budżetowania', albo jakie 'BI'), żeby konsolidować budżety
rozproszone, to nas robi w konia.
poniedziałek, 12 października 2009
Konsolidacja plików Excela - przykład bardzo prosty
Co prawda, podobny przykład już był:
http://afin.net/webcasts/Demo_FileConsolidation1.swf
ale był trochę skomplikowany (kwerenda, itp.)
Jest więc NOWY szablon AFIN.NET, specjalnie dla celów konsolidacji
plików Excela - wystarczy tylko podać katalog(i), nazwy plików,
nazwy arkuszy do konsolidacji i, ewentualnie, zakres w arkuszach.
Filmik:
http://afin.net/webcasts/HowTo_ConsolidateExcelFiles.swf
Uwagi:
1. Działa na dowolnej ilości plików.
2. Muszą mieć, oczywiście, takie same nazwy kolumn, itp.
3. Przy okazji, w katalogu [AFIN.NET.Folder]/Temp tworzy się plik
Accessa 'WorkBase.mdb' z gotową tabelą (gdyby np. ktoś inny
chciał jej równolegle używać). Posiadanie Accessa nie jest
wymagane!
4. Działa również w darmowej wersji testowej
AFIN.NET
http://afin.net/webcasts/Demo_FileConsolidation1.swf
ale był trochę skomplikowany (kwerenda, itp.)
Jest więc NOWY szablon AFIN.NET, specjalnie dla celów konsolidacji
plików Excela - wystarczy tylko podać katalog(i), nazwy plików,
nazwy arkuszy do konsolidacji i, ewentualnie, zakres w arkuszach.
Filmik:
http://afin.net/webcasts/HowTo_ConsolidateExcelFiles.swf
Uwagi:
1. Działa na dowolnej ilości plików.
2. Muszą mieć, oczywiście, takie same nazwy kolumn, itp.
3. Przy okazji, w katalogu [AFIN.NET.Folder]/Temp tworzy się plik
Accessa 'WorkBase.mdb' z gotową tabelą (gdyby np. ktoś inny
chciał jej równolegle używać). Posiadanie Accessa nie jest
wymagane!
4. Działa również w darmowej wersji testowej
AFIN.NET
czwartek, 1 października 2009
Jak wstawiać funkcje do różnych źródeł danych?
Filmik:
http://afin.net/webcasts/HowTo_InsertFunctions.swf
Opis:
Film pokazuje, jak można pracować z funkcjami w AFIN.NET.
Możliwości jest mnóstwo:
1. Pierwsze 3 funkcje:
(GETDATA=Alias DANE) Użycie funkcji DANE do różnych źródeł
danych
1.a. do plików typu DBF
1.b. do kostki OLAP - pliku .cub
1.c. do zamkniętego skoroszytu Excela (zewnętrznego)
oraz
2. Kolejne 3 funkcje:
(GETDATAODBC,GETDATAOLAP,GETDATALINK)
Jak wyżej w pkcie 1.(a,b,c), ale funkcje są stworzone ad hoc na
bazie
a. kwerendy
b. tabeli przestawnej, bazującej na danych OLAP z pliku .cub
c. na podstawie łącza do pliku Excela
Proszę zwrócić uwagę na:
1. Możliwość parametryzacji funkcji do różnych źródeł
danych według jednego schematu, czyli tak, jak robi to Excel - czy
można bardziej elastycznie?
2. Możliwość użycia takich samych wartości wymiarów w
różnych funkcjach, niezależnie od tego, czy pobierają dane z
różnych baz relacyjnych, kostek OLAP, czy też łącz excelowych.
Można oczywiście też parametrycznie pobierać dane z różnych
baz tego samego typu - pełna dowolność!
3. W każdej chwili można również sprawić, że funkcje nie
będą wyświetlały pobranych, czy też obliczonych, wartości, ale
(po dodaniu ":" jako ostatni argument funkcji) będą wyświetlały
swoje PEŁNE definicje, niezależnie z ilu parametrów arkuszowych
złożone.
Wygodnie się szuka błędów w definicjach.
http://afin.net/webcasts/HowTo_InsertFunctions.swf
Opis:
Film pokazuje, jak można pracować z funkcjami w AFIN.NET.
Możliwości jest mnóstwo:
1. Pierwsze 3 funkcje:
(GETDATA=Alias DANE) Użycie funkcji DANE do różnych źródeł
danych
1.a. do plików typu DBF
1.b. do kostki OLAP - pliku .cub
1.c. do zamkniętego skoroszytu Excela (zewnętrznego)
oraz
2. Kolejne 3 funkcje:
(GETDATAODBC,GETDATAOLAP,GETDATALINK)
Jak wyżej w pkcie 1.(a,b,c), ale funkcje są stworzone ad hoc na
bazie
a. kwerendy
b. tabeli przestawnej, bazującej na danych OLAP z pliku .cub
c. na podstawie łącza do pliku Excela
Proszę zwrócić uwagę na:
1. Możliwość parametryzacji funkcji do różnych źródeł
danych według jednego schematu, czyli tak, jak robi to Excel - czy
można bardziej elastycznie?
2. Możliwość użycia takich samych wartości wymiarów w
różnych funkcjach, niezależnie od tego, czy pobierają dane z
różnych baz relacyjnych, kostek OLAP, czy też łącz excelowych.
Można oczywiście też parametrycznie pobierać dane z różnych
baz tego samego typu - pełna dowolność!
3. W każdej chwili można również sprawić, że funkcje nie
będą wyświetlały pobranych, czy też obliczonych, wartości, ale
(po dodaniu ":" jako ostatni argument funkcji) będą wyświetlały
swoje PEŁNE definicje, niezależnie z ilu parametrów arkuszowych
złożone.
Wygodnie się szuka błędów w definicjach.
poniedziałek, 21 września 2009
Hurtownia danych z punktu widzenia jej Administratora i Użytkownika
Filmik:
http://afin.net/webcasts/Demo_DataWarehouse_4Admin&4User.swf
Opis:
Film pokazuje sposób stworzenia i użytkowania Hurtowni Danych z
punktu widzenia:
1. Administratora IT, tj. stworzenie procesu (na bazie szablonu
AFIN.NET) zasilania w dane (tu prosty przykład zaciągnięcia
jednej tabeli z bazy SQL Server Express), procesu przetworzenia
danych do postaci 'analitycznej' danych (tu: stworzenie zapytania
'ranking klientów względem wartości sumarycznej sprzedaży' do
nowej tabeli) oraz przetestowanie działania procesu.
2. Użytkownika AFIN.NET / Excela, tj. wykonania (na bazie szablonu
AFIN.NET) prostego procesu pobrania danych z Hurtowni Danych,
stworzonej przez Administratora IT - pobierana jest tabela w formie
podstawowej oraz druga tabela przetworzona. Oba procesy 'pobrania'
danych wklejają uzyskane dane do skoroszytu analityka - na tych
danych łatwo zbudować już dowolne raporty, np. tabelę
przestawną lub opublikować je procedurą 'publikacja' AFIN.NET.
Ponieważ wszystko tworzone jest ad-hoc i dla celów pokazowych,
obydwa procesy są maksymalnie uproszczone. Można jednak dowolnie
je rozbudowywać - o stworzenie i obsługę odpowiedniej bazy (tu:
accessowej) troszczy się AFIN.NET.
Zapraszamy do próby stworzenia takowej bazy we własnym zakresie i
omówienie jej tutaj.
Wnioski:
Stworzenie i użytkowanie Hurtowni Danych jest w AFIN.NET dziecinnie
proste. W jej rozbudowie pomoże firmowy informatyk, który ma
zapewnione bezpieczeństwo danych transakcyjnych i możliwość
odświeżania hurtowni w dowolnym momencie i w bardzo prosty
sposób. Oczywiście, odświeżanie na tym poziomie można bardzo
łatwo zautomatyzować, zlecając uruchomienie procesu np.
codziennie o określonej godzinie.
Analityk ma zapewnioną aktualność danych oraz dane w formie,
dzięki której raportowanie jest już kwestią nadania odpowiednich
(własnych) formatów.
Nie jest też nic w stanie 'popsuć' w danych
transakcyjnych.
http://afin.net/webcasts/Demo_DataWarehouse_4Admin&4User.swf
Opis:
Film pokazuje sposób stworzenia i użytkowania Hurtowni Danych z
punktu widzenia:
1. Administratora IT, tj. stworzenie procesu (na bazie szablonu
AFIN.NET) zasilania w dane (tu prosty przykład zaciągnięcia
jednej tabeli z bazy SQL Server Express), procesu przetworzenia
danych do postaci 'analitycznej' danych (tu: stworzenie zapytania
'ranking klientów względem wartości sumarycznej sprzedaży' do
nowej tabeli) oraz przetestowanie działania procesu.
2. Użytkownika AFIN.NET / Excela, tj. wykonania (na bazie szablonu
AFIN.NET) prostego procesu pobrania danych z Hurtowni Danych,
stworzonej przez Administratora IT - pobierana jest tabela w formie
podstawowej oraz druga tabela przetworzona. Oba procesy 'pobrania'
danych wklejają uzyskane dane do skoroszytu analityka - na tych
danych łatwo zbudować już dowolne raporty, np. tabelę
przestawną lub opublikować je procedurą 'publikacja' AFIN.NET.
Ponieważ wszystko tworzone jest ad-hoc i dla celów pokazowych,
obydwa procesy są maksymalnie uproszczone. Można jednak dowolnie
je rozbudowywać - o stworzenie i obsługę odpowiedniej bazy (tu:
accessowej) troszczy się AFIN.NET.
Zapraszamy do próby stworzenia takowej bazy we własnym zakresie i
omówienie jej tutaj.
Wnioski:
Stworzenie i użytkowanie Hurtowni Danych jest w AFIN.NET dziecinnie
proste. W jej rozbudowie pomoże firmowy informatyk, który ma
zapewnione bezpieczeństwo danych transakcyjnych i możliwość
odświeżania hurtowni w dowolnym momencie i w bardzo prosty
sposób. Oczywiście, odświeżanie na tym poziomie można bardzo
łatwo zautomatyzować, zlecając uruchomienie procesu np.
codziennie o określonej godzinie.
Analityk ma zapewnioną aktualność danych oraz dane w formie,
dzięki której raportowanie jest już kwestią nadania odpowiednich
(własnych) formatów.
Nie jest też nic w stanie 'popsuć' w danych
transakcyjnych.
środa, 16 września 2009
Automatyzacja raportowania
Problem(y):
Jak wykonać 100 raportów standardowych?
Jak uwzględnić w nich, zadane z góry, parametry, np. rok i
miesiąc, którego raporty dotyczą?
Jak opublikować każdy z raportów gdzie indziej?
Czy można automatycznie publikować do interfejsu Web?
Film:
http://afin.net/webcasts/HowTo_AutomatizeReports.swf
Opis:
1. Otwórz odpowiedni szablon AFIN.NET.IS i zapisz go w dowolnym
miejscu.
2. Stwórz raport(y) i zapisz je na dysku.
Pamiętaj o wpisaniu parametrów (z odpowiednim nagłówkiem) w
stałe miejsce we wszystkich plikach (arkusz, zakres komórek)
3. Zdefiniuj opcje publikacji każdego z raportów.
4. Zamknij raporty z zapisem zmian.
5. Otwórz (uaktywnij) arkusz programu automatyzującego
6. Dostosuj parametry programu
7. Uruchamiaj w dowolnym momencie z dowolnymi parametrami - program
otworzy każdy z raportów, przeliczy go, opublikuje i zamknie -
cały proces jednym kliknięciem myszy
8. Podaj użytkownikom adresy, gdzie publikują się raporty (tu:
pliki Excela lub strony HTML).
Wnioski:
Problemy? Jakie problemy?
Jak wykonać 100 raportów standardowych?
Jak uwzględnić w nich, zadane z góry, parametry, np. rok i
miesiąc, którego raporty dotyczą?
Jak opublikować każdy z raportów gdzie indziej?
Czy można automatycznie publikować do interfejsu Web?
Film:
http://afin.net/webcasts/HowTo_AutomatizeReports.swf
Opis:
1. Otwórz odpowiedni szablon AFIN.NET.IS i zapisz go w dowolnym
miejscu.
2. Stwórz raport(y) i zapisz je na dysku.
Pamiętaj o wpisaniu parametrów (z odpowiednim nagłówkiem) w
stałe miejsce we wszystkich plikach (arkusz, zakres komórek)
3. Zdefiniuj opcje publikacji każdego z raportów.
4. Zamknij raporty z zapisem zmian.
5. Otwórz (uaktywnij) arkusz programu automatyzującego
6. Dostosuj parametry programu
7. Uruchamiaj w dowolnym momencie z dowolnymi parametrami - program
otworzy każdy z raportów, przeliczy go, opublikuje i zamknie -
cały proces jednym kliknięciem myszy
8. Podaj użytkownikom adresy, gdzie publikują się raporty (tu:
pliki Excela lub strony HTML).
Wnioski:
Problemy? Jakie problemy?
wtorek, 8 września 2009
Hurtownia danych + dowolne raporty księgowe dla holdingu
Temat:
Hurtownia danych + dowolne raporty księgowe dla holdingu na
podstawie zupełnie niestandardowych tekstowych wydruków
hierarchicznych (nieimportowalnych ani do Excela, ani przez ODBC)
Filmik:
http://afin.net/webcasts/Demo_DataWarehouseFromManyTextExports.swf
Opis:
Firma ma 4 oddziały, tu nazwy CELOWO zmieniłem na 'AA', 'BB', 'CC'
i 'DD'. Każdy z tych oddziałów na szczęście ma taki sam program
księgowy. Te programy nie dają dostępu do bazy, ale produkują
wydruki, tu: zestawienia obrotów i sald.
Wydruki te są bardzo trudne do obróbki. Pomijam fakt, że dane
dot. konta są w różnych wierszach, a konkretnie jest wiersz konta
i pod spodem wiersz wartości, to jeszcze, producent tejże FKi
celowo(!) żeby trudniej było cokolwiek z tym zrobić, wstawia
znaki typu CHR(8) i nie tylko w różne miejsca tekstu.
Takich plików mamy w tym przykładzie co miesiąc dla każdej z
firm - przychodzą mejlem, wrzucamy je do jednego katalogu,
nazywając odpowiednio 'AA200502.txt', itd.
Film pokazuje, jak można to wszystko skonsolidować:
1. Pokaz środowiska, czyli jakie katalogi, jak wygląda tekst, itp.
Teksty są obcięte do ok. 200 wierszy, normalnie mają ok 2
tysięcy wierszy, czyli konwersja trwa 30s*10 - ok. 5 minut. Jest to
CAŁOŚĆ danych księgowych w zakresie obrotów i sald księgowych
4 firm z 6-ciu miesięcy.
2. Konwersja plików tekstowych, która wszystkie pliki, jednym
procesem, ładuje do tabel nowego pliku Accessa
'AFIN.NET.ExportFile.mdb'
(Ten etap trwa stosunkowo długo, wspomniane powyżej 30 sekund -
proszę przewijać filmik.)
3. Otwierany jest arkusz - program zasilający hurtownię, tzw. IS
(na wzór SQL Server Information Services)
4. Prezentacja raportów, opartych na PEŁNEJ kostce OLAP.: tabela
przestawna, wykres
5. Prezentacja raportu, OGRANICZONEGO tylko do danych firmy 'AA'
(tzw partycja kostki) - tu po prostu mniejsza kostka od razu
zapisywana w oddzielnym katalogu (gdzie np. system plików ogranicza
dostęp) - można ją również np. wysyłać mejlem (tu pominięte)
6. Prezentacja dowolnego raportu księgowego w czystym arkuszu
Excela za pomocą funkcji DANE()
Wnioski:
1. Stworzenie takiego modelu zajęło 1 dzień, z tego co najmniej
pół poszło na odszyfrowywanie zagwozdek, zgotowanych przez
producenta owych wydruków.
2. Nie ma wzoru pliku tekstowego, którego nie dało by się
odczytać.
3. Odświeżenie całości procesu ładowania hurtowni danych
księgowych holdingu to ok. 6 minut - dwa kliknięcia myszą.
Oczywiście proces można automatycznie inicjować w nocy, czy też
uruchamiać na życzenie.
Proces ten może być również dowolnie ograniczany, czyli np.
tylko do jednego miesiąca (bo po co powtórnie konwertować
obrotówki ze stycznia), czy też jednej firmy, np. gdy w któreś z
firm coś tajemnie doksięgują w lutym i obroty na kontach w lutym
i następnych miesiącach się zmienią.
Hurtownia danych + dowolne raporty księgowe dla holdingu na
podstawie zupełnie niestandardowych tekstowych wydruków
hierarchicznych (nieimportowalnych ani do Excela, ani przez ODBC)
Filmik:
http://afin.net/webcasts/Demo_DataWarehouseFromManyTextExports.swf
Opis:
Firma ma 4 oddziały, tu nazwy CELOWO zmieniłem na 'AA', 'BB', 'CC'
i 'DD'. Każdy z tych oddziałów na szczęście ma taki sam program
księgowy. Te programy nie dają dostępu do bazy, ale produkują
wydruki, tu: zestawienia obrotów i sald.
Wydruki te są bardzo trudne do obróbki. Pomijam fakt, że dane
dot. konta są w różnych wierszach, a konkretnie jest wiersz konta
i pod spodem wiersz wartości, to jeszcze, producent tejże FKi
celowo(!) żeby trudniej było cokolwiek z tym zrobić, wstawia
znaki typu CHR(8) i nie tylko w różne miejsca tekstu.
Takich plików mamy w tym przykładzie co miesiąc dla każdej z
firm - przychodzą mejlem, wrzucamy je do jednego katalogu,
nazywając odpowiednio 'AA200502.txt', itd.
Film pokazuje, jak można to wszystko skonsolidować:
1. Pokaz środowiska, czyli jakie katalogi, jak wygląda tekst, itp.
Teksty są obcięte do ok. 200 wierszy, normalnie mają ok 2
tysięcy wierszy, czyli konwersja trwa 30s*10 - ok. 5 minut. Jest to
CAŁOŚĆ danych księgowych w zakresie obrotów i sald księgowych
4 firm z 6-ciu miesięcy.
2. Konwersja plików tekstowych, która wszystkie pliki, jednym
procesem, ładuje do tabel nowego pliku Accessa
'AFIN.NET.ExportFile.mdb'
(Ten etap trwa stosunkowo długo, wspomniane powyżej 30 sekund -
proszę przewijać filmik.)
3. Otwierany jest arkusz - program zasilający hurtownię, tzw. IS
(na wzór SQL Server Information Services)
4. Prezentacja raportów, opartych na PEŁNEJ kostce OLAP.: tabela
przestawna, wykres
5. Prezentacja raportu, OGRANICZONEGO tylko do danych firmy 'AA'
(tzw partycja kostki) - tu po prostu mniejsza kostka od razu
zapisywana w oddzielnym katalogu (gdzie np. system plików ogranicza
dostęp) - można ją również np. wysyłać mejlem (tu pominięte)
6. Prezentacja dowolnego raportu księgowego w czystym arkuszu
Excela za pomocą funkcji DANE()
Wnioski:
1. Stworzenie takiego modelu zajęło 1 dzień, z tego co najmniej
pół poszło na odszyfrowywanie zagwozdek, zgotowanych przez
producenta owych wydruków.
2. Nie ma wzoru pliku tekstowego, którego nie dało by się
odczytać.
3. Odświeżenie całości procesu ładowania hurtowni danych
księgowych holdingu to ok. 6 minut - dwa kliknięcia myszą.
Oczywiście proces można automatycznie inicjować w nocy, czy też
uruchamiać na życzenie.
Proces ten może być również dowolnie ograniczany, czyli np.
tylko do jednego miesiąca (bo po co powtórnie konwertować
obrotówki ze stycznia), czy też jednej firmy, np. gdy w któreś z
firm coś tajemnie doksięgują w lutym i obroty na kontach w lutym
i następnych miesiącach się zmienią.
niedziela, 6 września 2009
Hierarchiczne pliki tekstowe jako źródło danych
Filmik:
http://afin.net/webcasts/Demo_AfinNetTC_HierarchizedText.swf
Opis:
Film pokazuje, jak z pliku tekstowego o informacji zapisanej
'hierarchicznie', czyli w różnych wierszach (tu wiersz numeru
konta NIE ODPOWIADA wierszowi, gdzie są dane numeryczne),
sporządzić płaską tabelę danych.
I zapisać ją w dowolnej bazie danych (tu: w Accessie, ale Excel
też jest opcją)
Film pokazuje CAŁY proces definicji (i, zdarzających się przy
tym, pomyłek i poprawek) takiego odczytu.
Wnioski:
Jesli jakikolwiek system nie potrafi wyrzucić danych, jakich
analityk sobie życzy, do jakieś bazy danych, Excela lub normalnego
pliku tekstowego (csv albo inny - ze wszystkimi informacjami w
jednym wierszu), a potrafi tylko do takiego 'wydruku' - nie przejmuj
się - wszystko można odczarować.
I pliczek, żeby nie szukać:
|---------------------------------|
|Title1 Account Number |
|---------------------------------|
|info1|info2| debit| credit|
|---------------------------------|
|Record1 AccNo:100.01 |
|---------------------------------|
|a1 |b1 | 1000,00| 0,00|
|---------------------------------|
|a1 |b2 | 2000,00| 0,00|
|---------------------------------|
|Record2 AccNo:200.01 |
|---------------------------------|
|a2 |b2 | 10000,00| 1000,00|
|---------------------------------|
|Record3 AccNo:300.01 |
|---------------------------------|
|a2 |b1 | 3000,00| 0,00|
|---------------------------------|
|a1 |b1 | 0,00| 100,00|
|---------------------------------|
|a3 |b2 | 0,00| 12345,67|
|---------------------------------|
http://afin.net/webcasts/Demo_AfinNetTC_HierarchizedText.swf
Opis:
Film pokazuje, jak z pliku tekstowego o informacji zapisanej
'hierarchicznie', czyli w różnych wierszach (tu wiersz numeru
konta NIE ODPOWIADA wierszowi, gdzie są dane numeryczne),
sporządzić płaską tabelę danych.
I zapisać ją w dowolnej bazie danych (tu: w Accessie, ale Excel
też jest opcją)
Film pokazuje CAŁY proces definicji (i, zdarzających się przy
tym, pomyłek i poprawek) takiego odczytu.
Wnioski:
Jesli jakikolwiek system nie potrafi wyrzucić danych, jakich
analityk sobie życzy, do jakieś bazy danych, Excela lub normalnego
pliku tekstowego (csv albo inny - ze wszystkimi informacjami w
jednym wierszu), a potrafi tylko do takiego 'wydruku' - nie przejmuj
się - wszystko można odczarować.
I pliczek, żeby nie szukać:
|---------------------------------|
|Title1 Account Number |
|---------------------------------|
|info1|info2| debit| credit|
|---------------------------------|
|Record1 AccNo:100.01 |
|---------------------------------|
|a1 |b1 | 1000,00| 0,00|
|---------------------------------|
|a1 |b2 | 2000,00| 0,00|
|---------------------------------|
|Record2 AccNo:200.01 |
|---------------------------------|
|a2 |b2 | 10000,00| 1000,00|
|---------------------------------|
|Record3 AccNo:300.01 |
|---------------------------------|
|a2 |b1 | 3000,00| 0,00|
|---------------------------------|
|a1 |b1 | 0,00| 100,00|
|---------------------------------|
|a3 |b2 | 0,00| 12345,67|
|---------------------------------|
piątek, 4 września 2009
Jak posłownikować dane własnym słownikiem?
Natchnienie:
http://www.goldenline.pl/forum/sap/1108920
Film:
http://afin.net/webcasts/HowTo_CreateYourOwnAdHocDictionary.swf
Opis:
Jak pobrać dane z systemu ERP, np. dane faktur, i posłownikować
(uszlachetnić) je, stworzonym ad-hoc, własnym słownikiem, przy
czym słownik ma być łatwo dostępny i edytowalny, czytaj: ma być
w Excelu
Tu: Dane faktur pobierane są z przykładowej, lokalnej bazy danych
SQL Server Express, ale może to być dowolna baza produkcyjna: SQL
Server, Oracle, DB2
Streszczenie filmu:
1. Otwieramy odpowiedni szablon AFIN.NET
2. Tworzymy kwerendę do danych faktur w bazie SQL Server
3. Pobieramy definicję połączenia do arkusza szablonu - naszego
programu, przetwarzającego dane.
4. Tworzymy słownik.
Najlepiej wykorzystać do tego już istniejącą kwerendę do tabeli
SQLS - w niej tworzymy unikalną listę nazw kontrahentów, która
będzie jednocześnie kluczem głównym tabeli słownikowej, tu:
pole 'Nazwa'
W słowniku tworzymy dwa nowe pola 'City' i 'Dealer'.
5. Zapisujemy słownik w pliku Excela - można użyć, oczywiście,
dowolny inny, już istniejący, słownik.
6. Tworzymy kwerendę do tabeli słownika w pliku Excela i pobieramy
z niej definicję połączenia
7. Uruchamiamy program testowo, aby stworzyć bazę Accessa,
integrującą dwie, powyższe tabele (wpisanie 'stop' zatrzymuje
program w odpowiednim miejscu)
8. Tworzymy kwerendę do bazy Accessa WorkBase.mdb, łączymy tabele
relacją i pobieramy wszystkie dane do Exclea i, podobnie jak
powyżej, pobieramy z niej definicję (już tylko zapytania) do
kolejnego kroku naszego programu.
9. Uruchamiamy program, który realizuje wszystkie powyższe
instrukcje, wklejając połączone dane do arkusza.
10. Tworzymy żądane analizy (tu: tabela przestawna i wykres
przestawny) na połączonych danych. Analizy możemy modyfikować i
odświeżać, a słownik edytować w sposób dowolny.
Wnioski:
1. Stworzenie własnego słownika w produkcyjnej bazie danych jest
zwykle niemożliwe ze względów bezpieczeństwa bazy.
2. Kolejnym problemem jest trudność w zaimportowaniu do tej bazy
danych z naszego słownika - tu jest to możliwe.
3. Architektura tego rozwiązania jest uniwersalna - to, że baza na
coś nie pozwala, albo jest to w niej trudne, nie znaczy, że nie
jest możliwe.
http://www.goldenline.pl/forum/sap/1108920
Film:
http://afin.net/webcasts/HowTo_CreateYourOwnAdHocDictionary.swf
Opis:
Jak pobrać dane z systemu ERP, np. dane faktur, i posłownikować
(uszlachetnić) je, stworzonym ad-hoc, własnym słownikiem, przy
czym słownik ma być łatwo dostępny i edytowalny, czytaj: ma być
w Excelu
Tu: Dane faktur pobierane są z przykładowej, lokalnej bazy danych
SQL Server Express, ale może to być dowolna baza produkcyjna: SQL
Server, Oracle, DB2
Streszczenie filmu:
1. Otwieramy odpowiedni szablon AFIN.NET
2. Tworzymy kwerendę do danych faktur w bazie SQL Server
3. Pobieramy definicję połączenia do arkusza szablonu - naszego
programu, przetwarzającego dane.
4. Tworzymy słownik.
Najlepiej wykorzystać do tego już istniejącą kwerendę do tabeli
SQLS - w niej tworzymy unikalną listę nazw kontrahentów, która
będzie jednocześnie kluczem głównym tabeli słownikowej, tu:
pole 'Nazwa'
W słowniku tworzymy dwa nowe pola 'City' i 'Dealer'.
5. Zapisujemy słownik w pliku Excela - można użyć, oczywiście,
dowolny inny, już istniejący, słownik.
6. Tworzymy kwerendę do tabeli słownika w pliku Excela i pobieramy
z niej definicję połączenia
7. Uruchamiamy program testowo, aby stworzyć bazę Accessa,
integrującą dwie, powyższe tabele (wpisanie 'stop' zatrzymuje
program w odpowiednim miejscu)
8. Tworzymy kwerendę do bazy Accessa WorkBase.mdb, łączymy tabele
relacją i pobieramy wszystkie dane do Exclea i, podobnie jak
powyżej, pobieramy z niej definicję (już tylko zapytania) do
kolejnego kroku naszego programu.
9. Uruchamiamy program, który realizuje wszystkie powyższe
instrukcje, wklejając połączone dane do arkusza.
10. Tworzymy żądane analizy (tu: tabela przestawna i wykres
przestawny) na połączonych danych. Analizy możemy modyfikować i
odświeżać, a słownik edytować w sposób dowolny.
Wnioski:
1. Stworzenie własnego słownika w produkcyjnej bazie danych jest
zwykle niemożliwe ze względów bezpieczeństwa bazy.
2. Kolejnym problemem jest trudność w zaimportowaniu do tej bazy
danych z naszego słownika - tu jest to możliwe.
3. Architektura tego rozwiązania jest uniwersalna - to, że baza na
coś nie pozwala, albo jest to w niej trudne, nie znaczy, że nie
jest możliwe.
czwartek, 3 września 2009
Konsolidacja danych z plików - prosty przykład (tu: pliki Excela)
Film:
http://afin.net/webcasts/Demo_FileConsolidation1.swf
To PROSTY przykład, jak skonsolidować dane z dowolnej ilości
tabel z dowolnego systemu bazodanowego.
Tu na przykładzie arkuszy w kilku plikach Excela, ale to tylko
przykład, tabele mogą być dowolne w dowolnym źródle danych.
MS Query poda nam właściwą definicję, niezależnie od typu
źródła.
Streszczenie filmu:
1. Prezentacja danych: 3 pliki: File1.xls, File2.xls, File3.xls,
zawierające cząstkowe dane, ale w tabelach (tu: arkuszach) o
takiej samej strukturze.
2. Użycie szablonu AFIN.NET do konsolidacji danych
Wpisujemy listę nazw plików (najlepiej bez rozszerzeń) jako
kolumnę parametrów
3. Tworzymy kwerendę do pierwszego pliku z naszej listy, pobieramy
całą tabelę do konsolidacji i tworzymy DODATKOWE pole, będące
nazwą pliku, z którego dane pobieramy, a które będzie też
wyróżnikiem źródła danych w naszych dalszych analizach.
4. Po umieszczeniu kwerendy w nowym arkuszu, pobieramy z niej
definicję źródła danych oraz tekst zapytania bazodanowego do
odpowiednich pól arkusza szablonu.
5. PARAMETRYZUJEMY formuły, utworzone z powyższych definicji,
odwołując się do kolumny 'A', gdzie wpisaliśmy parametry - nazwy
plików do konsolidacji
6. Po zakończeniu parametryzacji kopiujemy formuły w dół,
wzdłuż kolumny parametrów
7. Uruchamiamy program
8. Tworzymy analizy na skonsolidowanych danych - tu: prosta tabela
przestawna.
Wnioski:
1. Całość procesu jest odświeżalna jednym kliknięciem myszy
2. Zakres plików można dowolnie zwężać lub poszerzać, dodając
lub odejmując wiersze w arkuszu 'Program'.
Uwagi:
Powyższe zadanie jest dość typowym zadaniem w analizie danych,
więc nie tylko AFIN.NET oferuje rozwiązanie tego problemu.
Polecam zapoznać się również z innymi rozwiązaniami, np. kolegi
Przemka R.:
http://vbamania.blogspot.com/2009_04_26_archive.html
lub rozwiązaniem za pomocą rozbudowanego zapytania SQL:
http://afin.net/samples/lessons/SQL.10_Union/AFIN.NET.IS_SQL.Lesson10_mirror.htm
http://afin.net/webcasts/Demo_FileConsolidation1.swf
To PROSTY przykład, jak skonsolidować dane z dowolnej ilości
tabel z dowolnego systemu bazodanowego.
Tu na przykładzie arkuszy w kilku plikach Excela, ale to tylko
przykład, tabele mogą być dowolne w dowolnym źródle danych.
MS Query poda nam właściwą definicję, niezależnie od typu
źródła.
Streszczenie filmu:
1. Prezentacja danych: 3 pliki: File1.xls, File2.xls, File3.xls,
zawierające cząstkowe dane, ale w tabelach (tu: arkuszach) o
takiej samej strukturze.
2. Użycie szablonu AFIN.NET do konsolidacji danych
Wpisujemy listę nazw plików (najlepiej bez rozszerzeń) jako
kolumnę parametrów
3. Tworzymy kwerendę do pierwszego pliku z naszej listy, pobieramy
całą tabelę do konsolidacji i tworzymy DODATKOWE pole, będące
nazwą pliku, z którego dane pobieramy, a które będzie też
wyróżnikiem źródła danych w naszych dalszych analizach.
4. Po umieszczeniu kwerendy w nowym arkuszu, pobieramy z niej
definicję źródła danych oraz tekst zapytania bazodanowego do
odpowiednich pól arkusza szablonu.
5. PARAMETRYZUJEMY formuły, utworzone z powyższych definicji,
odwołując się do kolumny 'A', gdzie wpisaliśmy parametry - nazwy
plików do konsolidacji
6. Po zakończeniu parametryzacji kopiujemy formuły w dół,
wzdłuż kolumny parametrów
7. Uruchamiamy program
8. Tworzymy analizy na skonsolidowanych danych - tu: prosta tabela
przestawna.
Wnioski:
1. Całość procesu jest odświeżalna jednym kliknięciem myszy
2. Zakres plików można dowolnie zwężać lub poszerzać, dodając
lub odejmując wiersze w arkuszu 'Program'.
Uwagi:
Powyższe zadanie jest dość typowym zadaniem w analizie danych,
więc nie tylko AFIN.NET oferuje rozwiązanie tego problemu.
Polecam zapoznać się również z innymi rozwiązaniami, np. kolegi
Przemka R.:
http://vbamania.blogspot.com/2009_04_26_archive.html
lub rozwiązaniem za pomocą rozbudowanego zapytania SQL:
http://afin.net/samples/lessons/SQL.10_Union/AFIN.NET.IS_SQL.Lesson10_mirror.htm
piątek, 28 sierpnia 2009
Hurtownia Danych OLAP
Czy zbudowanie od podstaw(!) OLAP-owej hurtowni danych jest trudne?
Pewnie tak - trzeba pobrać dane z różnych źródeł danych,
zebrać je w jednej bazie (ETL), następnie je przekształcić do
formy przyjaznej do analizy, a potem zaprojektować i wykonać
moduł analizy wielowymiarowej OLAP, który oferuje natychmiastowy
dostęp do dowolnych wymiarów naszej analizy i umożliwia łatwą
eksplorację danych tabelą przestawną.
Spróbujmy!
http://afin.net/webcasts/Demo_DataWarehouseInMOLAP.swf
Streszczenie filmiku:
1. Otwieramy odpowiedni szablon AFIN.NET i dostosowujemy go da
naszego zadania (tu: usuwamy niepotrzebne wiersze)
2. Wykonujemy kolejno szereg kwerend, pobierając do arkusze dane z
różnych źródeł danych, tu:
1.1. SQL Server (wersja Express, serwer lokalny, dane faktur -
'faktura')
1.2. Access (dane kontrahentów - 'odbiorca')
1.3. Excel (słownik regionów - 'region')
Kwerendy są proste, dla uproszczenia bez żadnych fitrów i
uszlachetnień
3. Uruchamiamy program, budujący bazę danych, składającą się z
3 wymienionych wyżej tabel - tu: plik Accessa WorkBase.mdb
Użycie 'stop' zatrzymuje program przed wykonaniem linii,
dotyczącej budowy kostki - kostka nie jest jeszcze zaprojektowana.
4. Budujemy kostkę OLAP
4.1. Budujemy kwerendę, składającą dane z trzech tabel do jednej
szerokiej tabeli wynikowej (widoku)
4.2. Uruchamiamy Excelowego kreatora modułów danych OLAP (W
standardzie Excela od wersji 2000)
4.3. Projektujemy kostkę, najpierw miara, potem wymiary, następnie
podajemy, gdzie ma zostać zapisany moduł danych (kostka OLAP, plik
CUB) oraz gdzie ma zostać zapisana jego definicja (plik OQY)
Kostka OLAP również jest celowo najprostsza, jak być może: jedna
miara, trzy wymiary, prosta hierarchia.
5. Dokonujemy korekt ścieżek - wskazujemy adresy kostki i jej
definicji
6. Uruchamiamy cały program
7. Na stworzonej kostce budujemy raport tabeli przestawnej -
otwieramy plik CUB pod Excelem
8. W celu pokazania automatyzacji całego procesu, otwieramy na
chwilę plik Excela ze źródłową tabelą 'region' i dokonujemy w
niej zmian - tu: zmieniamy przyporządkowanie miasta 'Warszawa' do
innego regionu - tu: tworzymy nową pozycję słownikową -
'Stolica'
9. Uruchamiamy ponownie program - odświeżamy kostkę oraz
odświeżamy tabelę przestawną, gdzie natychmiast pojawia się
nowy region.
10. Gotowe. Definicja kostki jest gotowa, kostkę można
odświeżać dowolną ilość razy w dowolnym czasie, nawet, gdy
raporty z niej są otwarte.
Wnioski:
Budowa procesu ETL - kilka minut, myszką
Projekt kostki OLAP - równie prosto i szybko
Odświeżanie naszej hurtowni - jedno kliknięcie myszą
Odświeżenie raportu - standardowo.
Wydajność:
Proces taki w następujących warunkach:
1. Dane dużej firmy dystrybucyjno-produkcyjnej urządzeń
gospodarswa domowego - źródłowy plik tekstowy ok. 1.000.000
wierszy, tj. dane sprzedaży z dokładnością do pozycji faktury
2. Dołączone słowniki - 5 sztuk, hierarchiczne, kilkaset-kilka
tysięcy pozycji, format: pliki Excela
3. Z pełnych trzech lat, z dokładnością do dnia
4. Z dokładnością drążenia (drill-down) w kostce do pozycji
faktury, czyli bez uproszczeń, ale, oczywiście, ze wszyskimi
sumami pośrednimi itp.
5. Tworzona kostka miała 32 MB i działała bardzo sprawnie już
pod Excelem XP
... trwał 3 minuty.
Pewnie tak - trzeba pobrać dane z różnych źródeł danych,
zebrać je w jednej bazie (ETL), następnie je przekształcić do
formy przyjaznej do analizy, a potem zaprojektować i wykonać
moduł analizy wielowymiarowej OLAP, który oferuje natychmiastowy
dostęp do dowolnych wymiarów naszej analizy i umożliwia łatwą
eksplorację danych tabelą przestawną.
Spróbujmy!
http://afin.net/webcasts/Demo_DataWarehouseInMOLAP.swf
Streszczenie filmiku:
1. Otwieramy odpowiedni szablon AFIN.NET i dostosowujemy go da
naszego zadania (tu: usuwamy niepotrzebne wiersze)
2. Wykonujemy kolejno szereg kwerend, pobierając do arkusze dane z
różnych źródeł danych, tu:
1.1. SQL Server (wersja Express, serwer lokalny, dane faktur -
'faktura')
1.2. Access (dane kontrahentów - 'odbiorca')
1.3. Excel (słownik regionów - 'region')
Kwerendy są proste, dla uproszczenia bez żadnych fitrów i
uszlachetnień
3. Uruchamiamy program, budujący bazę danych, składającą się z
3 wymienionych wyżej tabel - tu: plik Accessa WorkBase.mdb
Użycie 'stop' zatrzymuje program przed wykonaniem linii,
dotyczącej budowy kostki - kostka nie jest jeszcze zaprojektowana.
4. Budujemy kostkę OLAP
4.1. Budujemy kwerendę, składającą dane z trzech tabel do jednej
szerokiej tabeli wynikowej (widoku)
4.2. Uruchamiamy Excelowego kreatora modułów danych OLAP (W
standardzie Excela od wersji 2000)
4.3. Projektujemy kostkę, najpierw miara, potem wymiary, następnie
podajemy, gdzie ma zostać zapisany moduł danych (kostka OLAP, plik
CUB) oraz gdzie ma zostać zapisana jego definicja (plik OQY)
Kostka OLAP również jest celowo najprostsza, jak być może: jedna
miara, trzy wymiary, prosta hierarchia.
5. Dokonujemy korekt ścieżek - wskazujemy adresy kostki i jej
definicji
6. Uruchamiamy cały program
7. Na stworzonej kostce budujemy raport tabeli przestawnej -
otwieramy plik CUB pod Excelem
8. W celu pokazania automatyzacji całego procesu, otwieramy na
chwilę plik Excela ze źródłową tabelą 'region' i dokonujemy w
niej zmian - tu: zmieniamy przyporządkowanie miasta 'Warszawa' do
innego regionu - tu: tworzymy nową pozycję słownikową -
'Stolica'
9. Uruchamiamy ponownie program - odświeżamy kostkę oraz
odświeżamy tabelę przestawną, gdzie natychmiast pojawia się
nowy region.
10. Gotowe. Definicja kostki jest gotowa, kostkę można
odświeżać dowolną ilość razy w dowolnym czasie, nawet, gdy
raporty z niej są otwarte.
Wnioski:
Budowa procesu ETL - kilka minut, myszką
Projekt kostki OLAP - równie prosto i szybko
Odświeżanie naszej hurtowni - jedno kliknięcie myszą
Odświeżenie raportu - standardowo.
Wydajność:
Proces taki w następujących warunkach:
1. Dane dużej firmy dystrybucyjno-produkcyjnej urządzeń
gospodarswa domowego - źródłowy plik tekstowy ok. 1.000.000
wierszy, tj. dane sprzedaży z dokładnością do pozycji faktury
2. Dołączone słowniki - 5 sztuk, hierarchiczne, kilkaset-kilka
tysięcy pozycji, format: pliki Excela
3. Z pełnych trzech lat, z dokładnością do dnia
4. Z dokładnością drążenia (drill-down) w kostce do pozycji
faktury, czyli bez uproszczeń, ale, oczywiście, ze wszyskimi
sumami pośrednimi itp.
5. Tworzona kostka miała 32 MB i działała bardzo sprawnie już
pod Excelem XP
... trwał 3 minuty.
wtorek, 18 sierpnia 2009
Kurs SQL
SQL... ha!, brzmi tajemnie...
Ale nie jest tak źle. Wszystko można wyklikać myszką, a jeżeli
czegoś nie można (bo np. funkcji SQL nie) to ich zestaw jest
wręcz żenująco ;) mały - z punktu widzenia realnych potrzeb
analityka.
Więc - do dzieła!
http://afin.net/samples/lessons/
Jak się z tego korzysta?
1. Wchodzimy w folder, zawierający daną lekcję, np.
SQL.1_Table/
2. Pojawiają się pliki:
[DIR] Parent Directory 17-Aug-2009 13:11 -
[XLS] AFIN.NET.IS_SQL.Lesson1.xls 17-Aug-2009 13:03 47k
[HTM] AFIN.NET.IS_SQL.Lesson1_mirror.htm 17-Aug-2009 13:03 13k
[DIR] AFIN.NET.IS_SQL.Lesson1_mirror_pliki/ 17-Aug-2009 13:03 -
3. Działamy
3.1. Jeżeli chcemy POOGLĄDAĆ - klikamy plik z rozszerzeniem HTM
Tu klawisz "START" nie działa, ale można odczytać SQLa i
zobaczyć efekt w kolejnym "arkuszu" (arkusze - na dole) oraz
porównać z tabelą - źródłem danych "Copy of faktura" (ostatni
"arkusz")
3.2. Jeżeli chcemy WYPRÓBOWAĆ, poeksperymentować, itp. - musimy
zainstalować AFIN.NET
http://www.afin.net/downloads/AFIN.NET.Setup.exe
(nie boli - 2 MB, bezpieczne, zero "bałaganu")
Uruchamiamy wtedy AFIN.NET i ze strony (czyli z folderu powyżej)
otwieramy plik XLS. Kliknięcie 'START' odświeża dane.
Zainstalowanie AFIN.NET dostarcza równocześnie dane przykładowe.
Wszystkie eksperymenty dozwolone.
Tutaj opis narzędzia do eksperymentów, czyli AFIN.NET.IS:
http://afin.net/articles/AfinNet_Article_AFIN.NET.IS_PL.htm
Tutaj biblioteka przykładów:
http://afin.net/samples/AFIN.NET.InformationServices/AFIN.NET.IS_SamplesLibrary.xls
Tutaj z kolei standardowy help MS dla JetSQL (niestety,
nienajlepszy):
http://afin.net/excel/Pomoce/JETSQL40.CHM
A jak ktoś chce zobaczyć, jak SQLka można wyklikać myszką, to
najlepiej w MS Query
http://afin.net/artykuly/gazetaprawna/9.%20MS%20Query.htm
Krok 3a pokazuje SQLa - można wykopiować.
Zapraszam do dyskusji!
Ale nie jest tak źle. Wszystko można wyklikać myszką, a jeżeli
czegoś nie można (bo np. funkcji SQL nie) to ich zestaw jest
wręcz żenująco ;) mały - z punktu widzenia realnych potrzeb
analityka.
Więc - do dzieła!
http://afin.net/samples/lessons/
Jak się z tego korzysta?
1. Wchodzimy w folder, zawierający daną lekcję, np.
SQL.1_Table/
2. Pojawiają się pliki:
[DIR] Parent Directory 17-Aug-2009 13:11 -
[XLS] AFIN.NET.IS_SQL.Lesson1.xls 17-Aug-2009 13:03 47k
[HTM] AFIN.NET.IS_SQL.Lesson1_mirror.htm 17-Aug-2009 13:03 13k
[DIR] AFIN.NET.IS_SQL.Lesson1_mirror_pliki/ 17-Aug-2009 13:03 -
3. Działamy
3.1. Jeżeli chcemy POOGLĄDAĆ - klikamy plik z rozszerzeniem HTM
Tu klawisz "START" nie działa, ale można odczytać SQLa i
zobaczyć efekt w kolejnym "arkuszu" (arkusze - na dole) oraz
porównać z tabelą - źródłem danych "Copy of faktura" (ostatni
"arkusz")
3.2. Jeżeli chcemy WYPRÓBOWAĆ, poeksperymentować, itp. - musimy
zainstalować AFIN.NET
http://www.afin.net/downloads/AFIN.NET.Setup.exe
(nie boli - 2 MB, bezpieczne, zero "bałaganu")
Uruchamiamy wtedy AFIN.NET i ze strony (czyli z folderu powyżej)
otwieramy plik XLS. Kliknięcie 'START' odświeża dane.
Zainstalowanie AFIN.NET dostarcza równocześnie dane przykładowe.
Wszystkie eksperymenty dozwolone.
Tutaj opis narzędzia do eksperymentów, czyli AFIN.NET.IS:
http://afin.net/articles/AfinNet_Article_AFIN.NET.IS_PL.htm
Tutaj biblioteka przykładów:
http://afin.net/samples/AFIN.NET.InformationServices/AFIN.NET.IS_SamplesLibrary.xls
Tutaj z kolei standardowy help MS dla JetSQL (niestety,
nienajlepszy):
http://afin.net/excel/Pomoce/JETSQL40.CHM
A jak ktoś chce zobaczyć, jak SQLka można wyklikać myszką, to
najlepiej w MS Query
http://afin.net/artykuly/gazetaprawna/9.%20MS%20Query.htm
Krok 3a pokazuje SQLa - można wykopiować.
Zapraszam do dyskusji!
środa, 1 lipca 2009
Pulpit menedżerski
Zrób sobie pulpit menedżerski z kluczową informacją finansową
dla szefa.
Analityk może go odświeżać i dowolnie modyfikować.
Klient informacji ma interfejs WEBowy.
http://afin.net/webcasts/Demo_CreateTheDashboard.swf
Przykład zastosowania:
Pulpit informacyjny AFINA
http://www.afin.net/index1_pl.htm
Czekam na pomysły!
dla szefa.
Analityk może go odświeżać i dowolnie modyfikować.
Klient informacji ma interfejs WEBowy.
http://afin.net/webcasts/Demo_CreateTheDashboard.swf
Przykład zastosowania:
Pulpit informacyjny AFINA
http://www.afin.net/index1_pl.htm
Czekam na pomysły!
sobota, 27 czerwca 2009
poniedziałek, 22 czerwca 2009
Hurtownia danych AFIN.NET - przykład ETL
Jak (za pomocą myszki, oczywiście) zbudować procedurę zasilania
hurtowni danych danymi z różnych źródeł (tzw. proces ETL:
'Extract, Transform, Load'), tu:
* SQL Server (v.Express-lokalny)
* SQL Server (v.pełna-przez Internet)
* MySQL (przez Internet)
* Excel 2007 (Pliki nie otwierają się w E2003)
* Plik tekstowy (tu: csv)
http://afin.net/webcasts/Demo_ETL1.swf
hurtowni danych danymi z różnych źródeł (tzw. proces ETL:
'Extract, Transform, Load'), tu:
* SQL Server (v.Express-lokalny)
* SQL Server (v.pełna-przez Internet)
* MySQL (przez Internet)
* Excel 2007 (Pliki nie otwierają się w E2003)
* Plik tekstowy (tu: csv)
http://afin.net/webcasts/Demo_ETL1.swf
wtorek, 16 czerwca 2009
Czy można wyklikać myszką hurtownię danych?
Czyli, niezależną od systemów transakcyjnych, bazę danych,
specjalizowaną dla celów analitycznych, odświeżaną
automatycznie?
(tu: przykład prosty - jedna, szeroka tabela danych)
http://afin.net/webcasts/Demo_HowToCreateDataWarehouse.swf
specjalizowaną dla celów analitycznych, odświeżaną
automatycznie?
(tu: przykład prosty - jedna, szeroka tabela danych)
http://afin.net/webcasts/Demo_HowToCreateDataWarehouse.swf
poniedziałek, 15 czerwca 2009
Konsolidacja plików Excela, np. budżetów
Jak, w pół godziny, raz na zawsze, rozwiązać problem z
pobieraniem danych z dowolnej ilości budżetów w Excelu / innych
plików Excela i konsolidowaniem ich w tabeli przestawnej?
http://afin.net/webcasts/Demo_CreatePivotTableFromScatteredBudgetsInExcelFiles.swf
Film ok. 25 minut, 5,5 MB.
pobieraniem danych z dowolnej ilości budżetów w Excelu / innych
plików Excela i konsolidowaniem ich w tabeli przestawnej?
http://afin.net/webcasts/Demo_CreatePivotTableFromScatteredBudgetsInExcelFiles.swf
Film ok. 25 minut, 5,5 MB.
czwartek, 11 czerwca 2009
Uproszczenie zapytania bazodanowego
Jak stworzyć i uprościć bardzo skomplikowane zapytanie
bazodanowe, by używać go w bardzo prostej funkcji w Excelu?
http://afin.net/webcasts/Demo_HowToSimplifyVeryComplicatedQuery.swf
bazodanowe, by używać go w bardzo prostej funkcji w Excelu?
http://afin.net/webcasts/Demo_HowToSimplifyVeryComplicatedQuery.swf
Subskrybuj:
Posty (Atom)