niedziela, 31 stycznia 2010
piątek, 29 stycznia 2010
Z innej parafii... (OpenOffice.org)
Niespodzianka!
http://www.afin.net/webcasts/Other_OpenOffice.swf
P.S.
A dodam jeszcze, że tak samo tworzy się widoki w poważnych
bazach, np. w DB2
Czy ktoś (nie etatowy użytkownik - administrator DB2) potrafi
stworzyć widok w bazie DB2 (bez wchodzenia do DB2, tak, jak na
filmie nie wchodziłem do Accessa)?
Nadmieniam, że ani Excel, ani Access (z tego, co wiem) tego nie
potrafią...
http://www.afin.net/webcasts/Other_OpenOffice.swf
P.S.
A dodam jeszcze, że tak samo tworzy się widoki w poważnych
bazach, np. w DB2
Czy ktoś (nie etatowy użytkownik - administrator DB2) potrafi
stworzyć widok w bazie DB2 (bez wchodzenia do DB2, tak, jak na
filmie nie wchodziłem do Accessa)?
Nadmieniam, że ani Excel, ani Access (z tego, co wiem) tego nie
potrafią...
czwartek, 28 stycznia 2010
Funkcja DANE() - SQLS & Oracle & MySQL
Film:
http://www.afin.net/webcasts/Demo_GetDataFunction_SQLS_Oracle_MySQL.swf
Wnioski:
- Czy baza danych może być PARAMETREM (!) prostej funkcji
excelowej?
- Ależ tak, czemu nie, także jej należy się. Cztery razy po dwa
razy...
Baza danych, w rozumieniu ADO/ODBC, to pewien ciąg literek, owszem
dość, czasami, skomplikowany.
Ale my, na szczęście, nie musimy się tym martwić, mamy Query,
które nam te literki daje na tacy, AFIN.NET to ładnie odczytuje i
pozwala zrobić własną funkcję z dowolnymi, własnymi,
argumentami.
Robimy więc 3 takie same funkcje do takiej samej tabeli, ale...
w 3 różnych, konkurencyjnych zresztą, systemach bazodanowych, MS
SQL Server, Oracle, MySQL.
W trakcie tego definiowania, napotykamy na szereg problemów.
Najmniej ma ich SQLS - wszystko bez bólu. W Oracle'u trzeba
ręcznie poprawić SQLa, bo Query źle go składa, tzn. Oracle go
nie rozumie. W Oracle'u i MySQL'u nie ma logowania 'Trusted
connection', więc hasła trzeba dopisać ręcznie.
Ale wszystko ślicznie działa.
* Nie wyszedłem z Excela (ew. + Query) podczas całej tej zabawy.
* Wszystko standardowo, wszystko szybko - cały fim ma niecałe 10
minut.
* Wszystko parametryzowalne komórkami Excela, czyli niczego nikogo
nie trzeba uczyć.
I, że się powtórzę, wszystko ślicznie działa.
http://www.afin.net/webcasts/Demo_GetDataFunction_SQLS_Oracle_MySQL.swf
Wnioski:
- Czy baza danych może być PARAMETREM (!) prostej funkcji
excelowej?
- Ależ tak, czemu nie, także jej należy się. Cztery razy po dwa
razy...
Baza danych, w rozumieniu ADO/ODBC, to pewien ciąg literek, owszem
dość, czasami, skomplikowany.
Ale my, na szczęście, nie musimy się tym martwić, mamy Query,
które nam te literki daje na tacy, AFIN.NET to ładnie odczytuje i
pozwala zrobić własną funkcję z dowolnymi, własnymi,
argumentami.
Robimy więc 3 takie same funkcje do takiej samej tabeli, ale...
w 3 różnych, konkurencyjnych zresztą, systemach bazodanowych, MS
SQL Server, Oracle, MySQL.
W trakcie tego definiowania, napotykamy na szereg problemów.
Najmniej ma ich SQLS - wszystko bez bólu. W Oracle'u trzeba
ręcznie poprawić SQLa, bo Query źle go składa, tzn. Oracle go
nie rozumie. W Oracle'u i MySQL'u nie ma logowania 'Trusted
connection', więc hasła trzeba dopisać ręcznie.
Ale wszystko ślicznie działa.
* Nie wyszedłem z Excela (ew. + Query) podczas całej tej zabawy.
* Wszystko standardowo, wszystko szybko - cały fim ma niecałe 10
minut.
* Wszystko parametryzowalne komórkami Excela, czyli niczego nikogo
nie trzeba uczyć.
I, że się powtórzę, wszystko ślicznie działa.
środa, 27 stycznia 2010
Dane z SQL Server do Excela - prostą funkcją.
Film:
http://www.afin.net/webcasts/HowTo_GetDataFunction_FromSQLS.swf
Ech, jakie to proste...
Wyjaśnienie:
Mamy dane, jakiekolwiek, załóżmy że w MS SQL Server.
(Albo w Excelu, Accessie, TXT, DBF, MySQL, Oracle, PostgreSQL, DB2,
HTM, ...)
Poważna sprawa. Możemy się do nich dostać kwerendą - fakt. Ale
wtedy dostajemy duża tabelę w Excelu i tu musimy zastosować
funkcje, żeby dane poumieszczać w naszym raporcie. Tabela
przestawna tu odpada, bo raport ma taki format, jaki ma, a nie taki,
jaki oferuje tabela (przykład: raportowanie finansowe)
Oczywiście, zawsze też możemy napisać makro. Ale, po pierwsze,
trzeba umieć, a my jesteśmy księgowymi (, albo sprzedawcami, albo
pracujemy na produkcji), a po drugie trzeba to zrobić i rozesłać
po 10 kolegach, trzeba ich nauczyć, trzeba... ech, same problemy :(
Można też zrobić sto kwerend, do tego parametrycznych. Hm... nie
umiemy, o co chodzi?.
No to, co umiemy? - umiemy zrobić prostą kwerendę! Super.
Umiemy też używać funkcji Excela, szczególnie tak prostych:
=DANE("SQLSE2008.Sales";[argument: nazwa_klienta])
czyli np.
=DANE("SQLSE2008.Sales";"AREX")
a, gdy w komórce A5 umieścimy parametr "AREX", a funkcję
zmodyfikujemy do postaci:
=DANE("SQLSE2008.Sales";$A5) ,
to możemy ją łatwo kopiować w dół i wpisywać sobie klientów,
jakich chcemy.
http://www.afin.net/webcasts/HowTo_GetDataFunction_FromSQLS.swf
Ech, jakie to proste...
Wyjaśnienie:
Mamy dane, jakiekolwiek, załóżmy że w MS SQL Server.
(Albo w Excelu, Accessie, TXT, DBF, MySQL, Oracle, PostgreSQL, DB2,
HTM, ...)
Poważna sprawa. Możemy się do nich dostać kwerendą - fakt. Ale
wtedy dostajemy duża tabelę w Excelu i tu musimy zastosować
funkcje, żeby dane poumieszczać w naszym raporcie. Tabela
przestawna tu odpada, bo raport ma taki format, jaki ma, a nie taki,
jaki oferuje tabela (przykład: raportowanie finansowe)
Oczywiście, zawsze też możemy napisać makro. Ale, po pierwsze,
trzeba umieć, a my jesteśmy księgowymi (, albo sprzedawcami, albo
pracujemy na produkcji), a po drugie trzeba to zrobić i rozesłać
po 10 kolegach, trzeba ich nauczyć, trzeba... ech, same problemy :(
Można też zrobić sto kwerend, do tego parametrycznych. Hm... nie
umiemy, o co chodzi?.
No to, co umiemy? - umiemy zrobić prostą kwerendę! Super.
Umiemy też używać funkcji Excela, szczególnie tak prostych:
=DANE("SQLSE2008.Sales";[argument: nazwa_klienta])
czyli np.
=DANE("SQLSE2008.Sales";"AREX")
a, gdy w komórce A5 umieścimy parametr "AREX", a funkcję
zmodyfikujemy do postaci:
=DANE("SQLSE2008.Sales";$A5) ,
to możemy ją łatwo kopiować w dół i wpisywać sobie klientów,
jakich chcemy.
wtorek, 26 stycznia 2010
Excel & SQL Server Express (bez AFINA)
Film:
http://www.afin.net/webcasts/Demo_ExcelAndSQLSE2008_Tutorial.swf
Ojej, to takie rzeczy są ZUPEŁNIE ZA DARMO, no nie może
być...
Męczyć Przemka R., o artykuł, FAQi, jasne tłumaczenie wszystkich
kroków, itp. Wymyślił, niech się martwi!
Pozdrawiam onego i wszystkich, którzy to zrobią.
Wojciech G.
Wnioski:
(powiedzmy - dość luźne)
Analityk chce gdzieś przechowywać dane - ma do wyboru:
* Excelka - wszyscy mu mówią, że to niemożliwe, że się wywala,
itp. On już od 5-ciu lat z tym tak walczy i fakt, czasami mu się
wywala, ale nad tym PANUJE (i to poczucie kontroli sprawia, że nie
dał sobie tego odebrać). Ale fakt, wygląda to jakoś cienko,
nieprofesjonalnie i, rzeczywiście, czasami się psuje... Excel -
be!
* Accessa - dla analityka to kosmos. Więc poszedł na kurs, gdzie
jakiś nawiedzony accessowiec tłumaczył mu, jak zrobić ewidencję
kaset wideo na jego półce. Dalej uważa Accessa za program
strasznie skomplikowany i dla informatyków. Żeby było jeszcze
ciekawiej, to jego informatyk mu mówi, że Access jest za słaby
(analityk drapie się w głowę, bo dla niego to wprost przeciwnie),
że się wywala, że nie można zabezpieczyć, ani bazy, ani
danych... Access - be!
* SQL Server. Dla analityka to już nie kosmos, tylko "Szansa na
sukces" - nikt nie wie, o co chodzi, nawet astronomowie. Microsoft
wciska wszelkimi sposoby, informatycy się podobno na tym znają,
ale coś od nich wydębić, czy wyprosić... Poza tym mówią
jakimś niezrozumiałym językiem...
Przykład: http://www.goldenline.pl/forum/sql-server/1075840
Tymczasem - jak wyżej. Za darmo i moment.
Ale, niech sobie analityk nie myśli, że złapał Boga za nogi, o
nie! - teraz dopiero zobaczy, jakie problemy się pojawią - tzw.
polityczne.
Co z tego, że technika pozwala...
I to samo z:
* Oracle eXpress Edition, czyli 'Oracle XE' (za darmo)
* MySQL (za darmo z założenia)
* PostgreSQL (za darmo z założenia)
* DB2 (podobnie jak Oracle, też jest darmoszka)
http://www.afin.net/webcasts/Demo_ExcelAndSQLSE2008_Tutorial.swf
Ojej, to takie rzeczy są ZUPEŁNIE ZA DARMO, no nie może
być...
Męczyć Przemka R., o artykuł, FAQi, jasne tłumaczenie wszystkich
kroków, itp. Wymyślił, niech się martwi!
Pozdrawiam onego i wszystkich, którzy to zrobią.
Wojciech G.
Wnioski:
(powiedzmy - dość luźne)
Analityk chce gdzieś przechowywać dane - ma do wyboru:
* Excelka - wszyscy mu mówią, że to niemożliwe, że się wywala,
itp. On już od 5-ciu lat z tym tak walczy i fakt, czasami mu się
wywala, ale nad tym PANUJE (i to poczucie kontroli sprawia, że nie
dał sobie tego odebrać). Ale fakt, wygląda to jakoś cienko,
nieprofesjonalnie i, rzeczywiście, czasami się psuje... Excel -
be!
* Accessa - dla analityka to kosmos. Więc poszedł na kurs, gdzie
jakiś nawiedzony accessowiec tłumaczył mu, jak zrobić ewidencję
kaset wideo na jego półce. Dalej uważa Accessa za program
strasznie skomplikowany i dla informatyków. Żeby było jeszcze
ciekawiej, to jego informatyk mu mówi, że Access jest za słaby
(analityk drapie się w głowę, bo dla niego to wprost przeciwnie),
że się wywala, że nie można zabezpieczyć, ani bazy, ani
danych... Access - be!
* SQL Server. Dla analityka to już nie kosmos, tylko "Szansa na
sukces" - nikt nie wie, o co chodzi, nawet astronomowie. Microsoft
wciska wszelkimi sposoby, informatycy się podobno na tym znają,
ale coś od nich wydębić, czy wyprosić... Poza tym mówią
jakimś niezrozumiałym językiem...
Przykład: http://www.goldenline.pl/forum/sql-server/1075840
Tymczasem - jak wyżej. Za darmo i moment.
Ale, niech sobie analityk nie myśli, że złapał Boga za nogi, o
nie! - teraz dopiero zobaczy, jakie problemy się pojawią - tzw.
polityczne.
Co z tego, że technika pozwala...
I to samo z:
* Oracle eXpress Edition, czyli 'Oracle XE' (za darmo)
* MySQL (za darmo z założenia)
* PostgreSQL (za darmo z założenia)
* DB2 (podobnie jak Oracle, też jest darmoszka)
wtorek, 19 stycznia 2010
Weź dane, skąd chcesz!
Film:
http://afin.net/webcasts/Demo_GetDataFromEverywhere.swf
Nie znacie może jeszcze jakieś darmowej bazy danych? ;)
A AFIN.NET w tym jak rybka, plum-plum...
Tłumaczenie "na polski"
Fajnego mam kompa, no nie? ;) Oracle, SQLS, PostgreSQL, DB2 (IBM
żyje!), dostępy do różnych tam bazek internetowych (MySQL),
pliki tekstowe, poprzekręcane w najbardziej wymyślny sposób, DBFy
(Czy mnie jeszcze pamiętasz?), HTMLki i, w ogóle, cyrk.
O Accessie i Excelkach wszelkich typów nawet nie wspominam.
Wszystko po to, żeby pokazać, że nie ma, NIE MA, NIE MA!,
NIE MA!!!!!!!! danych niedostępnych dla użytkownika
Excela.
A AFIN.NET ładnie to automatyzuje.
Spróbujcie to zrobić innym narzędziem!
Oczywiście, zwykłe Query też pobierze dane, ale nie da rady już
nic z tym zrobić dalej (np. wysłać szefowi pocztą). A w AFIN.NET
nie tylko można pobrać i wysłać, ale można też zapisać DO
DOWOLNEGO FORMATU DANYCH (czytaj: zrobić sobie hurtownię danych).
Wiem, wiem, hurtownia danych i Business Intelligence to poważna
sprawa... dla niektórych (... nawet zbyt poważna).
http://afin.net/webcasts/Demo_GetDataFromEverywhere.swf
Nie znacie może jeszcze jakieś darmowej bazy danych? ;)
A AFIN.NET w tym jak rybka, plum-plum...
Tłumaczenie "na polski"
Fajnego mam kompa, no nie? ;) Oracle, SQLS, PostgreSQL, DB2 (IBM
żyje!), dostępy do różnych tam bazek internetowych (MySQL),
pliki tekstowe, poprzekręcane w najbardziej wymyślny sposób, DBFy
(Czy mnie jeszcze pamiętasz?), HTMLki i, w ogóle, cyrk.
O Accessie i Excelkach wszelkich typów nawet nie wspominam.
Wszystko po to, żeby pokazać, że nie ma, NIE MA, NIE MA!,
NIE MA!!!!!!!! danych niedostępnych dla użytkownika
Excela.
A AFIN.NET ładnie to automatyzuje.
Spróbujcie to zrobić innym narzędziem!
Oczywiście, zwykłe Query też pobierze dane, ale nie da rady już
nic z tym zrobić dalej (np. wysłać szefowi pocztą). A w AFIN.NET
nie tylko można pobrać i wysłać, ale można też zapisać DO
DOWOLNEGO FORMATU DANYCH (czytaj: zrobić sobie hurtownię danych).
Wiem, wiem, hurtownia danych i Business Intelligence to poważna
sprawa... dla niektórych (... nawet zbyt poważna).
poniedziałek, 18 stycznia 2010
Oracle & SQLS
Godzimy Larry'ego i Bill'a.
Z punktu widzenia analityka, wszystkie dane powinny być łatwo
dostępne.
Stety lub niestety, ale raczej stety, na poziomie programów
bazodanowych istnieje bardzo silna konkurencja i raczej nie do
pomyślenia jest, żeby w firmie współistniały systemy bazodanowe
czołowych konkurentów. Raczej zawsze jest "albo-albo". Ogólnie
się to opłaca, bo gdyby nie SQLS, Oracle kosztowałby majątek do
kwadratu (tak - tylko majątek), a gdyby nie Oracle, SQLS byłby
tylko Accessem.
Ale analitycy cierpią, bo dane trzeba jednak mieć, żeby coś z
nimi zrobić.
Film:
http://afin.net/webcasts/Demo_Oracle&SQLS.swf
Wnioski:
1. A tymczasem, jak do sprawy podejdzie się z punktu widzenia
nie-bazodanowego, wszystko staje się proste i standardowe.
W AFIN.NET - bez problemu.
2. Gdziekolwiek są dane, łatwo je wydobyć, a nawet ze sobą
połączyć, pozostając niezależnym od obu środowisk bazodanowych
(i ich administratorów ;) )
Z punktu widzenia analityka, wszystkie dane powinny być łatwo
dostępne.
Stety lub niestety, ale raczej stety, na poziomie programów
bazodanowych istnieje bardzo silna konkurencja i raczej nie do
pomyślenia jest, żeby w firmie współistniały systemy bazodanowe
czołowych konkurentów. Raczej zawsze jest "albo-albo". Ogólnie
się to opłaca, bo gdyby nie SQLS, Oracle kosztowałby majątek do
kwadratu (tak - tylko majątek), a gdyby nie Oracle, SQLS byłby
tylko Accessem.
Ale analitycy cierpią, bo dane trzeba jednak mieć, żeby coś z
nimi zrobić.
Film:
http://afin.net/webcasts/Demo_Oracle&SQLS.swf
Wnioski:
1. A tymczasem, jak do sprawy podejdzie się z punktu widzenia
nie-bazodanowego, wszystko staje się proste i standardowe.
W AFIN.NET - bez problemu.
2. Gdziekolwiek są dane, łatwo je wydobyć, a nawet ze sobą
połączyć, pozostając niezależnym od obu środowisk bazodanowych
(i ich administratorów ;) )
SQL - ciekawostki
I... kolejna:
operator CUBE w SQLS:
Takie coś:
SELECT nazwa AS [Customer] , YEAR(data) AS [Year] , MONTH(data) AS
[Month], SUM(wart_net) AS [Sales] ,GROUPING_ID(nazwa, YEAR(data),
MONTH(data)) AS [GroupLevel] FROM TestDatabase.dbo.FAKTURA FAKTURA
GROUP BY CUBE (nazwa, YEAR(data), MONTH(data)) ORDER BY
GROUPING_ID(nazwa, YEAR(data), MONTH(data)) DESC,nazwa, YEAR(data),
MONTH(data)
Daje takie coś:
CustomerYear Month Sales GroupLevel
662,8 7
1 145,2 6
2 66,5 6
3 123,9 6
4 164,3 6
5 42,6 6
6 19,8 6
7 21,2 6
8 44,4 6
9 13,6 6
10 5,8 6
11 4,5 6
12 11 6
2004 554,7 5
2005 108,1 5
2004 1 140 4
2004 2 41 4
2004 3 118,4 4
2004 4 153,9 4
2004 5 42,6 4
2004 6 15 4
2004 7 5 4
2004 8 3,9 4
2004 9 13,6 4
2004 10 5,8 4
2004 11 4,5 4
2004 12 11 4
2005 1 5,2 4
2005 2 25,5 4
2005 3 5,5 4
2005 4 10,4 4
2005 6 4,8 4
2005 7 16,2 4
2005 8 40,5 4
ANEX 5,5 3
AREX 140 3
BRONEX 83,6 3
CELIMP 19,4 3
DAREX 3,9 3
EDEX 30,7 3
EXIMP 15 3
FRANEX 11 3
GRZESIEX 4,5 3
HANIMPEX 5 3
IMPEX 40,5 3
JARIMPEX 118,4 3
JUREX 153,9 3
KOWALSKI 4,8 3
NOWAK 16,2 3
SIANEX 10,4 3
ANEX 3 5,5 2
AREX 1 140 2
BRONEX 2 41 2
BRONEX 5 42,6 2
CELIMP 9 13,6 2
CELIMP 10 5,8 2
DAREX 8 3,9 2
EDEX 1 5,2 2
EDEX 2 25,5 2
EXIMP 6 15 2
FRANEX 12 11 2
GRZESIEX 11 4,5 2
HANIMPEX 7 5 2
IMPEX 8 40,5 2
JARIMPEX 3 118,4 2
JUREX 4 153,9 2
KOWALSKI 6 4,8 2
NOWAK 7 16,2 2
SIANEX 4 10,4 2
ANEX 2005 5,5 1
AREX 2004 140 1
BRONEX 2004 83,6 1
CELIMP 2004 19,4 1
DAREX 2004 3,9 1
EDEX 2005 30,7 1
EXIMP 2004 15 1
FRANEX 2004 11 1
GRZESIEX 2004 4,5 1
HANIMPEX 2004 5 1
IMPEX 2005 40,5 1
JARIMPEX 2004 118,4 1
JUREX 2004 153,9 1
KOWALSKI 2005 4,8 1
NOWAK 2005 16,2 1
SIANEX 2005 10,4 1
ANEX 2005 3 5,5 0
AREX 2004 1 140 0
BRONEX 2004 2 41 0
BRONEX 2004 5 42,6 0
CELIMP 2004 9 13,6 0
CELIMP 2004 10 5,8 0
DAREX 2004 8 3,9 0
EDEX 2005 1 5,2 0
EDEX 2005 2 25,5 0
EXIMP 2004 6 15 0
FRANEX 2004 12 11 0
GRZESIEX 2004 11 4,5 0
HANIMPEX 2004 7 5 0
IMPEX 2005 8 40,5 0
JARIMPEX 2004 3 118,4 0
JUREX 2004 4 153,9 0
KOWALSKI 2005 6 4,8 0
NOWAK 2005 7 16,2 0
SIANEX 2005 4 10,4 0
Wszystkie podsumowania częściowe naraz.
Ostatnia kolumna to "poziom podsumowania". Bajer, ale zastosowania
nie znam. Tabela przestawna załatwia to lepiej, ale dobrze
wiedzieć, że można to już załatwiać na niższym
poziomie.
operator CUBE w SQLS:
Takie coś:
SELECT nazwa AS [Customer] , YEAR(data) AS [Year] , MONTH(data) AS
[Month], SUM(wart_net) AS [Sales] ,GROUPING_ID(nazwa, YEAR(data),
MONTH(data)) AS [GroupLevel] FROM TestDatabase.dbo.FAKTURA FAKTURA
GROUP BY CUBE (nazwa, YEAR(data), MONTH(data)) ORDER BY
GROUPING_ID(nazwa, YEAR(data), MONTH(data)) DESC,nazwa, YEAR(data),
MONTH(data)
Daje takie coś:
CustomerYear Month Sales GroupLevel
662,8 7
1 145,2 6
2 66,5 6
3 123,9 6
4 164,3 6
5 42,6 6
6 19,8 6
7 21,2 6
8 44,4 6
9 13,6 6
10 5,8 6
11 4,5 6
12 11 6
2004 554,7 5
2005 108,1 5
2004 1 140 4
2004 2 41 4
2004 3 118,4 4
2004 4 153,9 4
2004 5 42,6 4
2004 6 15 4
2004 7 5 4
2004 8 3,9 4
2004 9 13,6 4
2004 10 5,8 4
2004 11 4,5 4
2004 12 11 4
2005 1 5,2 4
2005 2 25,5 4
2005 3 5,5 4
2005 4 10,4 4
2005 6 4,8 4
2005 7 16,2 4
2005 8 40,5 4
ANEX 5,5 3
AREX 140 3
BRONEX 83,6 3
CELIMP 19,4 3
DAREX 3,9 3
EDEX 30,7 3
EXIMP 15 3
FRANEX 11 3
GRZESIEX 4,5 3
HANIMPEX 5 3
IMPEX 40,5 3
JARIMPEX 118,4 3
JUREX 153,9 3
KOWALSKI 4,8 3
NOWAK 16,2 3
SIANEX 10,4 3
ANEX 3 5,5 2
AREX 1 140 2
BRONEX 2 41 2
BRONEX 5 42,6 2
CELIMP 9 13,6 2
CELIMP 10 5,8 2
DAREX 8 3,9 2
EDEX 1 5,2 2
EDEX 2 25,5 2
EXIMP 6 15 2
FRANEX 12 11 2
GRZESIEX 11 4,5 2
HANIMPEX 7 5 2
IMPEX 8 40,5 2
JARIMPEX 3 118,4 2
JUREX 4 153,9 2
KOWALSKI 6 4,8 2
NOWAK 7 16,2 2
SIANEX 4 10,4 2
ANEX 2005 5,5 1
AREX 2004 140 1
BRONEX 2004 83,6 1
CELIMP 2004 19,4 1
DAREX 2004 3,9 1
EDEX 2005 30,7 1
EXIMP 2004 15 1
FRANEX 2004 11 1
GRZESIEX 2004 4,5 1
HANIMPEX 2004 5 1
IMPEX 2005 40,5 1
JARIMPEX 2004 118,4 1
JUREX 2004 153,9 1
KOWALSKI 2005 4,8 1
NOWAK 2005 16,2 1
SIANEX 2005 10,4 1
ANEX 2005 3 5,5 0
AREX 2004 1 140 0
BRONEX 2004 2 41 0
BRONEX 2004 5 42,6 0
CELIMP 2004 9 13,6 0
CELIMP 2004 10 5,8 0
DAREX 2004 8 3,9 0
EDEX 2005 1 5,2 0
EDEX 2005 2 25,5 0
EXIMP 2004 6 15 0
FRANEX 2004 12 11 0
GRZESIEX 2004 11 4,5 0
HANIMPEX 2004 7 5 0
IMPEX 2005 8 40,5 0
JARIMPEX 2004 3 118,4 0
JUREX 2004 4 153,9 0
KOWALSKI 2005 6 4,8 0
NOWAK 2005 7 16,2 0
SIANEX 2005 4 10,4 0
Wszystkie podsumowania częściowe naraz.
Ostatnia kolumna to "poziom podsumowania". Bajer, ale zastosowania
nie znam. Tabela przestawna załatwia to lepiej, ale dobrze
wiedzieć, że można to już załatwiać na niższym
poziomie.
czwartek, 14 stycznia 2010
SQL Server (Express) jako baza danych analityka
Natchnienie:
http://www.goldenline.pl/forum/bazy-danych/1410156/s/1#27319562
Film:
http://afin.net/webcasts/Demo_CollectingDataIntoSQLServerDatabase.swf
Opis:
A tak sobie zbieram dane, po pięć tabel z pięciu różnych typów
danych. Razem 25 tabel danych. A potem wyklejam nimi arkusze Excela.
Wszystkie dane do SQL Servera (tu: lokalnie), bo, załóżmy, że
nie lubię już Accessa ;) (Taki żart.)
Wnioski:
* Czas: MNIEJ NIŻ 20 SEKUND (łącznie ze stworzeniem 25 nowych
arkuszy i wyklejeniem ich danymi).
* Parametryzacja w Excelu.
Czegóż chcieć więcej?
P.S. Dzięki, Przemek. Wiesz, za co.
http://www.goldenline.pl/forum/bazy-danych/1410156/s/1#27319562
Film:
http://afin.net/webcasts/Demo_CollectingDataIntoSQLServerDatabase.swf
Opis:
A tak sobie zbieram dane, po pięć tabel z pięciu różnych typów
danych. Razem 25 tabel danych. A potem wyklejam nimi arkusze Excela.
Wszystkie dane do SQL Servera (tu: lokalnie), bo, załóżmy, że
nie lubię już Accessa ;) (Taki żart.)
Wnioski:
* Czas: MNIEJ NIŻ 20 SEKUND (łącznie ze stworzeniem 25 nowych
arkuszy i wyklejeniem ich danymi).
* Parametryzacja w Excelu.
Czegóż chcieć więcej?
P.S. Dzięki, Przemek. Wiesz, za co.
środa, 13 stycznia 2010
Hurtownia Danych OLAP - BEZ AFINA!
http://afin.net/webcasts/HurtowniaDanych_Excel&Access&OLAP&HTML.swf
Streszczenie filmiku:
Będziemy wykorzystywać tylko STANDARDOWE aplikacje Microsoft
Office(!)
1. Tworzymy nowy plik Accessa i w nim łączymy (jako tabele
dołączone!) tabele 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')
Tabele pobrane są, dla uproszczenia, bez żadnych filtrów i
uszlachetnień
2. Tworzymy relację pomiędzy tabelami
3. Budujemy 'kwerendę składającą' o nazwie 'SzerokaTabela'
4. Uruchamiamy Excela, tworzymy w nim kwerendę DO ACCESSOWEJ
KWERENDY 'SzerokaTabela', pobieramy wszystkie pola i 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. Otwieramy kostkę OLAP w Excelu, tworzymy tabelę przestawną i
wykres przestawny
6. Publikujemy wykres przestawny jako stronę internetową,
używając opcji 'Dodaj interakcję', czyli używamy OWC (Office Web
Components)
7. 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ą -
'Warszawka', a potem, w tym samym celu, zmieniamy w ogóle
regionalizację na 'MójRegion1' i 'MójRegion2'
9. Gotowe. Tworzymy analizy, jakie tylko chcemy.
Wnioski:
Do budowy aplikacji "Business Intelligence", posiadającej WSZYSTKIE
JEJ STANDARDOWE CECHY, tj.:
1. Program ETL (tu: pobranie 'dynamiczne' danych z różnych baz
danych)
2. Przetwarzanie danych na poziomie hurtowni (tu: relacja,
złączenie tabel, stworzenie dodatkowej kwerendy)
3. Przetwarzanie na poziomie narzędzia analizy wielowymiarowej OLAP
(tzw. DTS) - tu: kostka OLAP
4. Publikacja - tu: opublikowanie i używanie w interfejsie WEB-owym
5. Analiza - przestawianie, drążenie, zmiana słowników, itp.,
itd.
6. Wszystko odświeżalne (w tym kostka, której już ani nie
otwieramy, ani nie edytujemy) z poziomu interfejsu WEB-owego, jednym
kliknięciem myszy.
... nie potrzeba nic więcej, tylko ... trochę wiedzy.
WSZYSTKO JEST MOŻLIWE. ZA DARMO.
Streszczenie filmiku:
Będziemy wykorzystywać tylko STANDARDOWE aplikacje Microsoft
Office(!)
1. Tworzymy nowy plik Accessa i w nim łączymy (jako tabele
dołączone!) tabele 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')
Tabele pobrane są, dla uproszczenia, bez żadnych filtrów i
uszlachetnień
2. Tworzymy relację pomiędzy tabelami
3. Budujemy 'kwerendę składającą' o nazwie 'SzerokaTabela'
4. Uruchamiamy Excela, tworzymy w nim kwerendę DO ACCESSOWEJ
KWERENDY 'SzerokaTabela', pobieramy wszystkie pola i 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. Otwieramy kostkę OLAP w Excelu, tworzymy tabelę przestawną i
wykres przestawny
6. Publikujemy wykres przestawny jako stronę internetową,
używając opcji 'Dodaj interakcję', czyli używamy OWC (Office Web
Components)
7. 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ą -
'Warszawka', a potem, w tym samym celu, zmieniamy w ogóle
regionalizację na 'MójRegion1' i 'MójRegion2'
9. Gotowe. Tworzymy analizy, jakie tylko chcemy.
Wnioski:
Do budowy aplikacji "Business Intelligence", posiadającej WSZYSTKIE
JEJ STANDARDOWE CECHY, tj.:
1. Program ETL (tu: pobranie 'dynamiczne' danych z różnych baz
danych)
2. Przetwarzanie danych na poziomie hurtowni (tu: relacja,
złączenie tabel, stworzenie dodatkowej kwerendy)
3. Przetwarzanie na poziomie narzędzia analizy wielowymiarowej OLAP
(tzw. DTS) - tu: kostka OLAP
4. Publikacja - tu: opublikowanie i używanie w interfejsie WEB-owym
5. Analiza - przestawianie, drążenie, zmiana słowników, itp.,
itd.
6. Wszystko odświeżalne (w tym kostka, której już ani nie
otwieramy, ani nie edytujemy) z poziomu interfejsu WEB-owego, jednym
kliknięciem myszy.
... nie potrzeba nic więcej, tylko ... trochę wiedzy.
WSZYSTKO JEST MOŻLIWE. ZA DARMO.
Kreator Kostek OLAP - Poważna kostka na poważnej bazie
Poważna kostka (5 wymiarów, 3 miary)
na poważnej bazie (MySQL na serwerze internetowym)
Film:
http://afin.net/webcasts/Demo_AfinNetCubeBuilder_SalesCubeMySqlOnInternetServer.swf
Opis:
Właściwie wszystko wiadomo. Tylko skala inna: dużo wymiarów, w
tym ad-hoc zdefiniowane, dużo miar, poważna baza, dostęp jeszcze
poważniejszy, bo przez Internet.
Wnioski:
Działa i to jak!
* Czas stworzenia - 15 minut (sic!). I można poprawiać,
modyfikować, ulepszać...
* W Excelu 2007, nie wychodząc z arkusza Excela (czytaj:
Wszyscy to potrafią.)
* Koszt: FREE lub prawie 'free' ;) - Klienta kosztuje
właściwie TYLKO usługa.
Zaproszenie:
Zapraszam do stworzenia poważnej oferty usługowej na bazie
AFIN.NET.
na poważnej bazie (MySQL na serwerze internetowym)
Film:
http://afin.net/webcasts/Demo_AfinNetCubeBuilder_SalesCubeMySqlOnInternetServer.swf
Opis:
Właściwie wszystko wiadomo. Tylko skala inna: dużo wymiarów, w
tym ad-hoc zdefiniowane, dużo miar, poważna baza, dostęp jeszcze
poważniejszy, bo przez Internet.
Wnioski:
Działa i to jak!
* Czas stworzenia - 15 minut (sic!). I można poprawiać,
modyfikować, ulepszać...
* W Excelu 2007, nie wychodząc z arkusza Excela (czytaj:
Wszyscy to potrafią.)
* Koszt: FREE lub prawie 'free' ;) - Klienta kosztuje
właściwie TYLKO usługa.
Zaproszenie:
Zapraszam do stworzenia poważnej oferty usługowej na bazie
AFIN.NET.
SQL - ciekawostki
Kolejna ciekawostka:
Funkcja DIFFERENCE() w SQLS
Do porównywania tekstów, im teksty bardziej do siebie pasują
względem jakiegoś tam ("fonetycznego"?) algorytmu, tym wartość
większa - zwraca wartość 0-4.
ZASTOSOWANIE:
Szukamy czegoś w bazie, np. jakiejś nazwy kontrahenta. Nie
pamiętamy jej literka po literce. Kojarzymy, że że coś z 'micro'
i coś z 'soft' ma w nazwie...
(a z jakiś powodów nie chcemy lub nie możemy użyć '%','_')
To piszemy SQLka:
SELECT nazwa FROM faktura ORDER BY DIFFERENCE(nazwa,'micro soft')
DESC
albo
SELECT nazwa FROM faktura WHERE DIFFERENCE(nazwa,'micro soft')>=3
Serio, działa (nawet ten algorytm niezgorszy).
Linki:
http://support.microsoft.com/kb/100365
http://oreilly.com/catalog/sqlnut/chapter/ch04.html
difference(character_expression, character_expression)
Compares how two arguments sound and returns a number from 0 to 4.
Higher result indicates better phonetic match.
Funkcja DIFFERENCE() w SQLS
Do porównywania tekstów, im teksty bardziej do siebie pasują
względem jakiegoś tam ("fonetycznego"?) algorytmu, tym wartość
większa - zwraca wartość 0-4.
ZASTOSOWANIE:
Szukamy czegoś w bazie, np. jakiejś nazwy kontrahenta. Nie
pamiętamy jej literka po literce. Kojarzymy, że że coś z 'micro'
i coś z 'soft' ma w nazwie...
(a z jakiś powodów nie chcemy lub nie możemy użyć '%','_')
To piszemy SQLka:
SELECT nazwa FROM faktura ORDER BY DIFFERENCE(nazwa,'micro soft')
DESC
albo
SELECT nazwa FROM faktura WHERE DIFFERENCE(nazwa,'micro soft')>=3
Serio, działa (nawet ten algorytm niezgorszy).
Linki:
http://support.microsoft.com/kb/100365
http://oreilly.com/catalog/sqlnut/chapter/ch04.html
difference(character_expression, character_expression)
Compares how two arguments sound and returns a number from 0 to 4.
Higher result indicates better phonetic match.
wtorek, 12 stycznia 2010
SQL - ciekawostki
Znalazłem (i uruchomiłem nawet) fajną ciekawostkę ad SQLka:
(Działa tylko w SQL Server, nie działa w Accessie, Excelu, itp.)
Ale AFIN może to uruchamiać - uruchomiłem to właśnie w AFINIE.
Funkcja UNPIVOT (stąd przykład):
http://technet.microsoft.com/en-us/library/ms177410.aspx
ZASTOSOWANIE:
Konsolidacja budżetów
Tłumaczenie na polski:
Mamy duuużo budżetów, oczywiście w arkuszach Excela. Stawiamy
komputer z SQL Serverem Expressem (żeby było taniej, żeby baza
była 'porządna', tzn. żeby informatyk nie marudził, że jakiś
Access, albo Excel).
I... (jedno kliknięcie w AFIN.NET.IS)... pyk... i mamy dane do
dowolnych budżetowych tabel przestawnych
Przygotowanie (przykładowych) danych
DROP TABLE pvt
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int, Emp3 int, Emp4
int, Emp5 int)
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
Normalizacja:
SELECT VendorID, Employee, Orders FROM (SELECT VendorID, Emp1, Emp2,
Emp3, Emp4, Emp5 FROM pvt) p UNPIVOT (Orders FOR Employee IN (Emp1,
Emp2, Emp3, Emp4, Emp5)) AS unpvt
Widok danych:
VendorID Emp1 Emp2 Emp3 Emp4 Emp5
1 4 3 5 4 4
2 4 1 5 5 5
3 4 3 5 4 4
4 4 2 5 5 4
5 5 1 5 5 5
Widok efektu końcowego (to działa!):
VendorID Employee Orders
1 Emp1 4
1 Emp2 3
1 Emp3 5
1 Emp4 4
1 Emp5 4
2 Emp1 4
2 Emp2 1
2 Emp3 5
2 Emp4 5
2 Emp5 5
3 Emp1 4
3 Emp2 3
3 Emp3 5
3 Emp4 4
3 Emp5 4
4 Emp1 4
4 Emp2 2
4 Emp3 5
4 Emp4 5
4 Emp5 4
5 Emp1 5
5 Emp2 1
5 Emp3 5
5 Emp4 5
5 Emp5 5
Pytania?
(Działa tylko w SQL Server, nie działa w Accessie, Excelu, itp.)
Ale AFIN może to uruchamiać - uruchomiłem to właśnie w AFINIE.
Funkcja UNPIVOT (stąd przykład):
http://technet.microsoft.com/en-us/library/ms177410.aspx
ZASTOSOWANIE:
Konsolidacja budżetów
Tłumaczenie na polski:
Mamy duuużo budżetów, oczywiście w arkuszach Excela. Stawiamy
komputer z SQL Serverem Expressem (żeby było taniej, żeby baza
była 'porządna', tzn. żeby informatyk nie marudził, że jakiś
Access, albo Excel).
I... (jedno kliknięcie w AFIN.NET.IS)... pyk... i mamy dane do
dowolnych budżetowych tabel przestawnych
Przygotowanie (przykładowych) danych
DROP TABLE pvt
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int, Emp3 int, Emp4
int, Emp5 int)
INSERT INTO pvt VALUES (1,4,3,5,4,4);
INSERT INTO pvt VALUES (2,4,1,5,5,5);
INSERT INTO pvt VALUES (3,4,3,5,4,4);
INSERT INTO pvt VALUES (4,4,2,5,5,4);
INSERT INTO pvt VALUES (5,5,1,5,5,5);
Normalizacja:
SELECT VendorID, Employee, Orders FROM (SELECT VendorID, Emp1, Emp2,
Emp3, Emp4, Emp5 FROM pvt) p UNPIVOT (Orders FOR Employee IN (Emp1,
Emp2, Emp3, Emp4, Emp5)) AS unpvt
Widok danych:
VendorID Emp1 Emp2 Emp3 Emp4 Emp5
1 4 3 5 4 4
2 4 1 5 5 5
3 4 3 5 4 4
4 4 2 5 5 4
5 5 1 5 5 5
Widok efektu końcowego (to działa!):
VendorID Employee Orders
1 Emp1 4
1 Emp2 3
1 Emp3 5
1 Emp4 4
1 Emp5 4
2 Emp1 4
2 Emp2 1
2 Emp3 5
2 Emp4 5
2 Emp5 5
3 Emp1 4
3 Emp2 3
3 Emp3 5
3 Emp4 4
3 Emp5 4
4 Emp1 4
4 Emp2 2
4 Emp3 5
4 Emp4 5
4 Emp5 4
5 Emp1 5
5 Emp2 1
5 Emp3 5
5 Emp4 5
5 Emp5 5
Pytania?
piątek, 8 stycznia 2010
Kreator kostek OLAP
Microsoft wyciął - AFIN.NET ma i to lepszy ;).
Film:
http://afin.net/webcasts/Demo_AfinNetCubeBuilder.swf
Kluczowe funkcjonalności:
1. Działa w E2003, E2007, E2010, E2013...
(w standardowym było: tylko do E2003)
2. Kostki można POPRAWIAĆ w nieskończoność
(w standardowym było: zawsze wszystko od nowa)
3. A jaki miodzio ;) edytorek, znaczy się, interfejs...
Czyż efektywność nie zależy od prostoty?
(Dlaczego do budowania kostki nie używać narzędzia, które jest
wykorzystywane do jej... przeglądania? CZYLI ZWYKŁEJ TABELI PRZESTAWNEJ.)
4. Jest zupełnie ZA DARMO - Działa bez żadnych ograniczeń
w wersji testowej AFIN.NET
5. Można dodawać jedno pole do wielu wymiarów, nawet pod tą
samą nazwą
(W standardowym było to utrudnione - trzeba było zduplikować pole
przed uruchomieniem kreatora - utrudnieniem było to, że potrzeba
powstawała dopiero w kreatorze i trzeba było najpierw z niego
wyjść, dodawać pola, potem ponownie uruchamiać kreatora i
definiować wszystko od nowa). Ale już nie trzeba.
6. Przy okazji przeglądnąłem trochę Internet w poszukiwaniu
takich kreatorów. Znalazłem parę, ale wszystkie one to
'aplikacje' - robią, owszem, kostki i... już, tzn. robią plik
'.cub', ale nie robią pliku '.oqy'. Niby drobnostka, ale to
POWODUJE UZALEŻNIENIE od tejże aplikacji. Czyli, żeby
odświeżyć (tylko odświeżyć) kostkę, trzeba tej aplikacji za
każdym razem użyć, a sam Excel nie potrafi jej odświeżyć.
W przypadku kreatora AFIN.NET budowany jest STANDARDOWY plik .OQY,
'rozumiany' i odświeżany przez samego Excela (na filmie kilka
ostatnich kliknięć odświeżało kostkę w 'czystym' Excelu).
Ma to jeszcze dodatkową zaletę - może być programowo i
automatycznie odświeżane przez AFIN.NET.InformationServices, czyli
jeden klik administratora może odświeżyć wiele tak zbudowanych
kostek, a analitycy mają centralnie zarządzaną hurtownię danych.
Wnioski:
1. Cuby żyją!
Efektywny sposób zarządzania danymi, czyli tani (znaczy: darmowy)
OLAP, szybko odświeżalny, szybko kopiowalny (małe pliczki) po
sieci, o funkcjonalności dużo większej niż zapowiadał sam MS
(twierdził, że kostki są efektywne do 32 MB, ja robiłem kostki
po 100 MB - po prostu komputery są lepsze i RAMu dużo...), łatwo
i dokładnie odczytywalny przez AFINA (Funkcje, kostki księgowe,
itp) - to żyje!!!
W każdym razie jest lepsze, niż PowerPivot Excela 2010.
Tak nawiasem - odświeżenie kostki dla 10.000.000 rekordów trwa
dokładnie tyle samo (6 minut), ile zaciągnięcie danych przez
PowerPivota (nowość: 'calculation in memory'), ale robi się plik
mały, oferuje dostęp po sieci, itp.
2. Teraz już AFIN nie ma ograniczeń, co do typu bazy:
Prototypy OLAPowe można robić od razu (!) w cubach (przedtem
zalecaliśmy najpierw tabele przestawne na danych płaskich), bo to
trwa dokładnie tyle, ile ustawienie tabel przestawnych, można je
przebudowywać do skutku - robi się przy okazji gotowy MDX do
przeniesienia na SQLS AS, jak ktoś lubi.
3. NIE TRZEBA DZWONIĆ DO WOJCIECHA G., żeby zrobić kostkę
(kostki)
Nie wiem, czy to ważne, bo ja lubię, jak klienci (szczególnie
klientki) dzwonią, ale już nie trzeba, bo, żeby zrobić i 100
kostek, nie trzeba rozumieć OLAPa - WYSTARCZY ROZUMIEĆ TABELĘ
PRZESTAWNĄ.
To istotna nowość - podstawowym powodem nieużywania analiz
wielowymiarowych było powszechne niezrozumienie OLAPa.
P.S.
Dla tych, co nie wiedzą, co to OLAP:
http://www.databaseanswers.org/designing_olap_cubes.htm
Film:
http://afin.net/webcasts/Demo_AfinNetCubeBuilder.swf
Kluczowe funkcjonalności:
1. Działa w E2003, E2007, E2010, E2013...
(w standardowym było: tylko do E2003)
2. Kostki można POPRAWIAĆ w nieskończoność
(w standardowym było: zawsze wszystko od nowa)
3. A jaki miodzio ;) edytorek, znaczy się, interfejs...
Czyż efektywność nie zależy od prostoty?
(Dlaczego do budowania kostki nie używać narzędzia, które jest
wykorzystywane do jej... przeglądania? CZYLI ZWYKŁEJ TABELI PRZESTAWNEJ.)
4. Jest zupełnie ZA DARMO - Działa bez żadnych ograniczeń
w wersji testowej AFIN.NET
5. Można dodawać jedno pole do wielu wymiarów, nawet pod tą
samą nazwą
(W standardowym było to utrudnione - trzeba było zduplikować pole
przed uruchomieniem kreatora - utrudnieniem było to, że potrzeba
powstawała dopiero w kreatorze i trzeba było najpierw z niego
wyjść, dodawać pola, potem ponownie uruchamiać kreatora i
definiować wszystko od nowa). Ale już nie trzeba.
6. Przy okazji przeglądnąłem trochę Internet w poszukiwaniu
takich kreatorów. Znalazłem parę, ale wszystkie one to
'aplikacje' - robią, owszem, kostki i... już, tzn. robią plik
'.cub', ale nie robią pliku '.oqy'. Niby drobnostka, ale to
POWODUJE UZALEŻNIENIE od tejże aplikacji. Czyli, żeby
odświeżyć (tylko odświeżyć) kostkę, trzeba tej aplikacji za
każdym razem użyć, a sam Excel nie potrafi jej odświeżyć.
W przypadku kreatora AFIN.NET budowany jest STANDARDOWY plik .OQY,
'rozumiany' i odświeżany przez samego Excela (na filmie kilka
ostatnich kliknięć odświeżało kostkę w 'czystym' Excelu).
Ma to jeszcze dodatkową zaletę - może być programowo i
automatycznie odświeżane przez AFIN.NET.InformationServices, czyli
jeden klik administratora może odświeżyć wiele tak zbudowanych
kostek, a analitycy mają centralnie zarządzaną hurtownię danych.
Wnioski:
1. Cuby żyją!
Efektywny sposób zarządzania danymi, czyli tani (znaczy: darmowy)
OLAP, szybko odświeżalny, szybko kopiowalny (małe pliczki) po
sieci, o funkcjonalności dużo większej niż zapowiadał sam MS
(twierdził, że kostki są efektywne do 32 MB, ja robiłem kostki
po 100 MB - po prostu komputery są lepsze i RAMu dużo...), łatwo
i dokładnie odczytywalny przez AFINA (Funkcje, kostki księgowe,
itp) - to żyje!!!
W każdym razie jest lepsze, niż PowerPivot Excela 2010.
Tak nawiasem - odświeżenie kostki dla 10.000.000 rekordów trwa
dokładnie tyle samo (6 minut), ile zaciągnięcie danych przez
PowerPivota (nowość: 'calculation in memory'), ale robi się plik
mały, oferuje dostęp po sieci, itp.
2. Teraz już AFIN nie ma ograniczeń, co do typu bazy:
Prototypy OLAPowe można robić od razu (!) w cubach (przedtem
zalecaliśmy najpierw tabele przestawne na danych płaskich), bo to
trwa dokładnie tyle, ile ustawienie tabel przestawnych, można je
przebudowywać do skutku - robi się przy okazji gotowy MDX do
przeniesienia na SQLS AS, jak ktoś lubi.
3. NIE TRZEBA DZWONIĆ DO WOJCIECHA G., żeby zrobić kostkę
(kostki)
Nie wiem, czy to ważne, bo ja lubię, jak klienci (szczególnie
klientki) dzwonią, ale już nie trzeba, bo, żeby zrobić i 100
kostek, nie trzeba rozumieć OLAPa - WYSTARCZY ROZUMIEĆ TABELĘ
PRZESTAWNĄ.
To istotna nowość - podstawowym powodem nieużywania analiz
wielowymiarowych było powszechne niezrozumienie OLAPa.
P.S.
Dla tych, co nie wiedzą, co to OLAP:
http://www.databaseanswers.org/designing_olap_cubes.htm
poniedziałek, 4 stycznia 2010
10 MILIONÓW REKORDÓW
Uczcijmy Nowy Rok 2010 czymś specjalnym...
Film:
http://afin.net/webcasts/Demo_10mlnsRecordsDatabase.swf
(Czyli - 10 milionów na 2010!)
Opis środowiska:
Standardowy plik przykładu AFIN.NET pn. 'faktura' (19-to wierszowy
rejestr faktur) zaimportowałem do Oracle Database 10g Express
Edition (Tak nawiasem, Oracle jest strasznie tajemny.) do tabeli
'faktura'. Następnie stworzyłem bliźniaczą tabelę 'faktura2',
składając tabelę 'faktura' ponad 500.000 razy. Powstała tabela o
prawie 10 milionach rekordów.
Na filmie pokazano:
1. Przegląd środowiska, czyli tabel w webowym interfejsie Oracle
(kiepski, nie można np. tabel przewijać)
2. Program, tworzący mini-hurtownię danych
a) ranking klientów wg sprzedaży (grupowanie, sumowanie,
sortowanie)
b) ranking miast wg sprzedaży (jak wyżej + złączenie tabel ze
słownikiem 'odbiorca')
c) jak w pkcie a) z dodatkową miarą - zliczanie rekordów
Program uruchomiono najpierw na tabeli 19-to rekordowej, a
następnie na tabeli o 10 milionach rekordów. Czasy: dla tabeli
'19' - kilka sekund, dla tabeli '10.000.000' - mniej niż 50 sekund,
łącznie z odtworzeniem bazy, wyklejaniem danymi, eksportem, itp.
3. Przegląd mini-hurtowni, czyli pliku Accessa z danymi oraz pliku
eksportowego (xls)
Wnioski:
1. Słyszeliście te jęki BIajków, że w Excelu nie da się nic
zrobić, z czymś, co ma więcej, niż 1.000.000 wierszy? A to, że
tylko ich aplikacje są efektywne? A to, że jakiś tam Pan na kilka
zapytań na 4 milionach rekordów dawał mi 10 minut?
Śmieszne, no nie?
2. Odświeżenie ogromnej hurtowni danych z bardzo poważnej bazy
danych trwa stosunkowo krótko - minutę lub kilka.
3. Wszystko niskokosztowymi narzędziami. Wszystko dostępne
sieciowo.
4. Wszystko sterowane Excelem (+ AFIN.NET). Jawne, przejrzyste,
poprawialne, czytelne.
Pomyślcie teraz, ile kosztują narzędzia i usługi BIajków.
A efekt taki sam lub... gorszy (bo sztywny)
Film:
http://afin.net/webcasts/Demo_10mlnsRecordsDatabase.swf
(Czyli - 10 milionów na 2010!)
Opis środowiska:
Standardowy plik przykładu AFIN.NET pn. 'faktura' (19-to wierszowy
rejestr faktur) zaimportowałem do Oracle Database 10g Express
Edition (Tak nawiasem, Oracle jest strasznie tajemny.) do tabeli
'faktura'. Następnie stworzyłem bliźniaczą tabelę 'faktura2',
składając tabelę 'faktura' ponad 500.000 razy. Powstała tabela o
prawie 10 milionach rekordów.
Na filmie pokazano:
1. Przegląd środowiska, czyli tabel w webowym interfejsie Oracle
(kiepski, nie można np. tabel przewijać)
2. Program, tworzący mini-hurtownię danych
a) ranking klientów wg sprzedaży (grupowanie, sumowanie,
sortowanie)
b) ranking miast wg sprzedaży (jak wyżej + złączenie tabel ze
słownikiem 'odbiorca')
c) jak w pkcie a) z dodatkową miarą - zliczanie rekordów
Program uruchomiono najpierw na tabeli 19-to rekordowej, a
następnie na tabeli o 10 milionach rekordów. Czasy: dla tabeli
'19' - kilka sekund, dla tabeli '10.000.000' - mniej niż 50 sekund,
łącznie z odtworzeniem bazy, wyklejaniem danymi, eksportem, itp.
3. Przegląd mini-hurtowni, czyli pliku Accessa z danymi oraz pliku
eksportowego (xls)
Wnioski:
1. Słyszeliście te jęki BIajków, że w Excelu nie da się nic
zrobić, z czymś, co ma więcej, niż 1.000.000 wierszy? A to, że
tylko ich aplikacje są efektywne? A to, że jakiś tam Pan na kilka
zapytań na 4 milionach rekordów dawał mi 10 minut?
Śmieszne, no nie?
2. Odświeżenie ogromnej hurtowni danych z bardzo poważnej bazy
danych trwa stosunkowo krótko - minutę lub kilka.
3. Wszystko niskokosztowymi narzędziami. Wszystko dostępne
sieciowo.
4. Wszystko sterowane Excelem (+ AFIN.NET). Jawne, przejrzyste,
poprawialne, czytelne.
Pomyślcie teraz, ile kosztują narzędzia i usługi BIajków.
A efekt taki sam lub... gorszy (bo sztywny)
Subskrybuj:
Posty (Atom)