środa, 21 marca 2012

Jeszcze nie wiosna, chociaż dzisiaj 21. marca

Cześć biajki.

Powiem tak - niestety, wszystkie moje, chore, przepowiednie się    
sprawdzają.
Microsoft dalej olewa swój główny target, a mianowicie    
użytkowników Excela.

Na przecieku Microsoft Office 15 Technical Preview tylko jeden,    
słownie JEDEN! (bo przecież nie będziemy liczyć okienka    
startowego), obrazek dotyczy Excela, a w tym Excelu do pokazania    
jest...

...dashboard. Ależ oni są kre(a)ty(w)ni.

Całość:
http://www.winsupersite.com/article/office/microsoft-office-15-preview-142569

Życzę Wam zdrowia i dobrego samopoczucia jeszcze na kilka lat.
Niestety, dzisiejszy 21. marca wiosny jeszcze nie czyni.

poniedziałek, 19 marca 2012

Czy można nauczyć serwer (i to z poziomu Excela!) robić dla nas hurtownię danych?

Stawiam sobie DARMOWY serwer
http://www.microsoft.com/sqlserver/en/us/editions/express.aspx

i...

puszczam z AFINA kilka komend SQL.

1. Tworzy funkcjonalność - procedurę SQL Server, dzięki której    
będzie umiał odczytać tabelę danych z komendami SQL i je    
wykonywać na nasze żądanie.

2. Ładuję ową tabelę na serwer. Jest to tabela z komendami SQL -    
tak, jak mają być wykonane na serwerze. To tzw. "metadane", czyli    
nie dane sensu stricte, tylko dane, opisujące inne dane lub proces.

Tabela jest w pliku Excela, więc łatwo ją edytować,    
parametryzować, poprawiać do woli. Takich tabel może być też    
wiele - do różnych zadań.
Nad wszystkim panujemy my - analitycy. Z poziomu Excela.

3. Uruchamiam procedurę, opisaną w punkcie pierwszym, na serwerze, która    
skądś tam odczytuje jakieś dane i zapisuje je z nowym,    
wymyślonym przeze mnie, polem, potem robię drugą, podobną do    
poprzedniej, czynność, potem trzecią. Ile chcę.

(To symuluje nawet bardzo skomplikowany proces przetwarzania danych    
- wszystko na serwerze!)

Powstaje tabela docelowa, którą sobie ściągam do Excela, kiedy    
chcę lub odpytuję funkcjami detalicznymi według dowolnych moich    
potrzeb raportowych.

Tu powinienem dodać jeszcze jeden element - TRIGGER    
(samoczynnie uruchamiający się automat), żeby pokazać, ŻE TO SIĘ    
JESZCZE MOŻE W OGÓLE SAMO URUCHAMIAĆ, ale nie chciałem już    
zaciemniać obrazu, o triggerze był inny film.


Podsumowanie:

Zrób sobie hurtownię danych w bardzo poważnym narzędziu sam i to    
jeszcze nie wychodząc z Excela. Sama Ci będzie robić dowolne    
przetworzenia danych, a Ty będziesz tylko ściągał sobie gotowe    
rezultaty.

Od czasu, do czasu, poprawisz swój proces - też nie wychodząc z    
Excela.

JESTEM W EXCELU, NIGDZIE SIĘ Z NIEGO NIE RUSZAM, A CAŁY ŚWIAT    
DANYCH WIRUJE WOKÓŁ MNIE. PONIEWAŻ ARKUSZ KALKULACYJNY TO CENTRUM ANALIZ.

Film:
http://afin.net/webcasts/Demo_CreateAndExecSqlsProcExecutingSqlScrypt.swf

piątek, 16 marca 2012

Czy można nadać serwerowi robotę według naszego przepisu?

Kolejna rewolucja tutaj.

Temat jest taki:
Nasza grupka analityków robi raporty - dużo raportów. W tych    
raportach jest strasznie dużo zapytań do bazy danych - a mamy    
bazę poważną - SQL Server. Informatycy się złoszczą, że ciągle    
zapychamy im łącze do tej bazy tysiącami zapytań detalicznych    
(Zakładam, że to już umiemy).
Więc, jak zrobić, żebyśmy mieli możliwość tworzenia DOWOLNYCH    
zapytań detalicznych, przesłali je jakoś zgrabnie na serwer,    
potem coś uruchomili, żeby serwer nam to policzył (on ma do    
danych blisko, bo są one na tym samym serwerze, tylko w innej bazie    
danych), a potem ściągnęli GOTOWE WYNIKI, oczywiście do Excela?

Uparłem się żeby to zrobić. Ale serwer NIE    
DYSPONUJE funkcjonalnością odpowiadania na MOJE pytania. Potrafi    
dużo rzeczy, ale nie potrafi mi odpowiedzieć na pytanie zadane    
w SQL w tabeli takich SQL. A ja takich pytań mam, załóżmy,    
tysiąc - to taki bardzo, bardzo duży raport, rzadko w praktyce    
spotykany, ale my tu lubimy przesadzać.

Więc mam pytanie - jeżeli serwer nie umie, to JAK GO    
NAUCZYĆ?

Trzeba mu zrobić procedurę, ale jak?

Mamy tablicę z tysiącem zapytań SQL - wszystkie detaliczne,    
wszystkie tak napisane, żeby zwracały tylko jedną wartość.    
Czyli totalny DETAL, jak to w naszych raportach. Gdzie tabela    
przestawna nie daje rady, tam musi być detal.

1. Tworzę więc taką procedurę jednym kliknięciem i więcej już do    
niej nie wracam, bo, jak serwer się nauczył, to już umie.
2. Uruchamiam ową procedurę. Przelatuje ona przez wszystkie    
rekordy zapisanej na serwerze tabeli, odczytuje zapytania SQL, czyli moje    
zapytania detaliczne, oblicza wartości i wpisuje je w pole    
wartości, obok owych zapytań.
Potem tę tabelkę ściągam do Excela.

Razem wszystko - 15 sekund / 1000 zapytań DETALICZNYCH.

Ilość kontaktów z serwerem można policzyć na palcach jednej    
ręki, więc IT śpi spokojnie.
A my mamy TO, CO CHCEMY, a nie to, co serwer nam łaskawie oferuje.    

Film:
http://afin.net/webcasts/Demo_CreateAndExecSqlsProcExecutingRetailQueries.swf

środa, 14 marca 2012

Import prostego pliku tekstowego


1. Ustawiany jeden jedyny raz
2. Ustawiany bardzo prosto, łatwo i przyjemnie
3. Bezbłędnie
4. POWTARZALNIE
5. Bez dłubaniny w makrach
6. Od razu do jakiejś sensownej bazy danych, np. Accesska
7. Może tak przerabiać DOWOLNĄ ilość plików za jednym zamachem, trzeba tylko ustawić WZORZEC nazwy pliku, a nie konkretną nazwę. (W tym filmie tego nie pokazano)

http://afin.net/webcasts/HowTo_GetDataFromPlainTextFil...

To bardzo dobry przykład testowy do nauki AFINA
Plik tekstowy do ćwiczeń tutaj: http://afin.net/excel/PlikTekstowy.txt
Powodzenia!

poniedziałek, 12 marca 2012

Architektura MSBI 2012 = porażka.

Architektura Microsoft Business Intelligence 2012 / Project Crescent
(Pełna nazwa produktu: SQL Server 2012 Business Intelligence / nazwa kodowa: SQLS Denali)

NIE MA W NIEJ EXCELA.


Źródło: Prezentacja "Using Project Crescent" MS 2012

Czy ja śnię?
Jeżeli właściciel NAJLEPSZEGO narzędzia analitycznego świata    
nie wie, że go ma i wciska jakieś Share Point'y (bardzo kulawy    
serwer dokumentów i nic więcej) oraz Power Pivot'y (Bardzo kulawy    
OLAP o archaicznej architekturze super-grubego klienta), to co ma    
zrobić pani Basia z controllingu? WYSZUKAJ.PIONOWO (VLOOKUP), oczywiście.

Tu już wszyscy wiedzą (wiemy), że biaja można kopać, bo leży i    
nawet nie piśnie. Ale Microsoft tego nie wie - odporność MS na praktykę    
jest porównywalna do tejże naszych uczelni biznesowych.

Ci, co mają wiedzieć, prowadzić i uczyć, są na końcu.
Wszyscy jesteśmy lepsi od naszych przywódców.

Śmieszne? Ja bym powiedział, że tragiczne.

poniedziałek, 5 marca 2012

Użycie funkcjonalności zewnętrznego serwera do danych lokalnych

Czy można użyć serwera zewnętrznego (serwer MySQL w Internecie,    
w moim przypadku oddalony ok. 800 km) do przetworzenia moich    
własnych danych, które posiadam na dysku lokalnym, tu: w pliku    
Excela?

Oczywiście, zawsze, pojawia się pytanie "Po co?" Po co wysyłać    
dane gdzieś tam, żeby je zaraz potem ściągać z powrotem?

Ano po to, że tylko MySQL dysponuje funkcją GROUP_CONCAT, która    
potrafi łączyć (grupować w jednym polu tekstowym) teksty pola    
grupowanego według innego pola tabeli. A zrobienie tego innymi    
metodami to nie lada ekwilibrystyka.

Np.
Moje dane:
ID    F1    F2    F3    F4
c    c1    c2    c3    c4
b    b1    b2    b3    b4
b    b5    b6    b7    b8
a    a1    a2    a3    a4
a    a5    a6    a7    a8
a    a9    a10    a11    a12


Oczekiwany wynik:
ID    GROUP_CONCAT(WG1_Arkusz1_0.F5)
a    a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12
b    b1,b2,b3,b4,b5,b6,b7,b8
c    c1,c2,c3,c4


Pewnie, że można.
Wszystkie dane OTWARTEGO serwera MySQL, specjalnie przeznaczonego do    
takich prób i zabaw - na filmie. Wszystkie SQLki tamże.

Film:
http://afin.net/webcasts/Demo_UseExternalServerToProcessLocalData.swf

czwartek, 1 marca 2012

Czytanie informacji zapisanej hierarchicznie (Ciekawostka SQL)


Jak przeczytać coś takiego SQLem?
F1    F2
Klucz1
    Wart1
    Wart2
    Wart3
Klucz2
    Wart1
Klucz3
    Wart10
    Wart11
    Wart12
    Wart13
    Wart14
    Wart15
Klucz153
    Wart1234
    Wart1235


żeby otrzymać taką śliczną, równą tabelkę:
KLUCZ    WARTOŚĆ
Klucz1    Wart1
Klucz1    Wart2
Klucz1    Wart3
Klucz2    Wart1
Klucz3    Wart10
Klucz3    Wart11
Klucz3    Wart12
Klucz3    Wart13
Klucz3    Wart14
Klucz3    Wart15
Klucz153    Wart1234
Klucz153    Wart1235


A jeżeli nie SQLem, to czym?
AFIN.NET.TextConverter da radę, ale mówimy o sytuacji, gdy go np.    
nie ma albo dane mają miliony wierszy i trudno to czytać    
linia-po-linii. I co wtedy?

Makro VBA to duża robota. Trzeba też sporo umieć, żeby je    
napisać. I makro, nawet najlepsze, i tak musi czytać    
linia-po-linii.

Ja się jednak uparłem, żeby SQLem.

Niemożliwe?
Do dzisiaj też tak myślałem.

Film:
http://afin.net/webcasts/Demo_SqlReadingTheHierarchicalInformation.swf