wtorek, 22 grudnia 2009

Oracle & AFIN.NET

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.

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

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ć... :)

ś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.

ś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.