GoodData XAE - BI gamechanger

Z kraje léta spustila GoodData do ostrého provozu svůj nový analytický engine AQE (Algebraic Query Engine), který má oficiální produktové jméno GoodData XAE. XAE je ale určitě čínsky “podviživený kuře”, takže já zůstanu u AQE :-) Od prvního momentu je to pro mě věc s největší přidanou hodnotou - když mi to Miki ukazoval, zamiloval jsem se na první dobrou :-)

Úvod lehce ze široka

Každý systém, který má ambice vizualizovat data, potřebuje nějaký matematický aparát. Pokud jako vstup budu mít prodané položky a jména obchodníků a budu z toho chtít zjistit medián obratu obchodníka, musí nejprve někde na pozadí proběhnout sečtení všech prodaných položek v daném měsíci pro každého obchodníka a nad tímto výsledkem pak můžeme počítat medián. Levá tabulka je surový vstup, pravá je odvozená za pochodu a většinou si ani neuvědomujeme, že takové mezi výstupy vznikají. Nad tou pravou pak můžu počítat věci jako nejlepší obchodník měsíce, průměrný/“mediánový”, aj.:

Pokud nemám robustní analytický backend, nemůžu si dovolit dělat “co mě napadne”, ale musím uživatele svázat do nějakých předpřipravených “vertikálních” analýz (churn analýza zákazníků eshopu, RFM segmentace, kohorty předplatného, aj.). Vrtat se v datech je možné mnoha způsoby. Kromě GoodData, které tady chystám vyvrcholení :), máte na trhu BI nástroje jako Birst, Domo, Klipfolio, RJMetrics, Jaspersoft, Pentaho a mrtě dalších. Vypadají super! O některých z nich jsem se otřel dříve. Osamocený datový analytik pak ještě sáhne po Rku, SPSS, RapidMineru, Weku, aj. - ale to nejsou BI nástroje. 

Většina ze zmíněných BI nástrojů nemá propracovaný matematický aparát, takže vám umožní čísla sečíst, spočítat četnost prvků, zjistit maximum, minimum a průměr. Tady je to krásně vidět na promo videu RJMetrics.

Systémy jako je Domo.com nebo KlipFolio.com pak řeší problém absence matematického aparátu trochu trikem. Lidem nabízejí spoustu matematických funkcní - jak v excelu - které jdou ale aplikovat na jednotlivé tabulky, ale ne na celý datový model. Někdo si řekne, že je to jedno, ale opak je pravdou - tohle je prubířský kámen všeho kolem datové analytiky. Zkusím vysvětlit proč.

Hranice našeho pískoviště stojí na aplikaci zákona o zachování "business energie”: 

"pokud nedokážeme našemu zákazníkovi vydělat větší peníze než ho naše služby (a licence GoodData) stojí, nebude s náma spolupracovat"

Pokud vezmeme výpis faktur ze SAPu a nakreslíme graf “jak to roste”, poženou nás zákazníci jako sedláky u Chlumce. My potřebujeme trochu víc, potřebujeme dávat za pochodu jednotlivé datové dimenze do souvislostí (dimenze = tématický soubor dat, nejčastěji reprezentovaný jako tabulka dat - dimenze mezi sebou nemusí mít žádné jasně definované vazby; tabulku v analytickém projektu nazýváme datasetem). 

V momentě, kdy dáme jednotlivým dimenzím souvislosti, vznikne logický datový model. Logický model popisuje “business” souvislosti a často není shodný s technickým modelem, ve kterém ukládá data nějaký systém. Pokud má například Mironet e-shop, je databáze za tímto eshopem optimalizovaná pro potřeby e-shopu, nikoliv finanční, obchodní a/nebo subscription analytiky. Čím složitější je prostředí, jehož data se analyzují, tím méně podobností mají technické a analytické datové modely. Nízká (strukturální) podobnost zdrojových dat a dat, které potřebujeme k analýze, vyřazuje většinu GoodData konkurence. 

Dám příklad na našem interním projektu. Interní projekt jsem vybral proto, že obsahuje logický model, který potřebujeme používat sami pro sebe. Není to tedy uměle nafouklé “protože to zákazník zaplatí”.

Do GoodData nahráváme různé tabulky, které jsou spojené vazbama. Vazby definují logický model; logický model pak definuje “co jde s daty dělat". Náš interní projekt slouží k měření naší vlastní aktivity a spojuje data z českého účetnictví (Pohoda), kanadského účetnictví (QuickBooks), z vykazovací cloudové aplikace Paymo.biz a několik Google Drive dokumentů. V interním projektu máme 18 datasetů a 4 datumové dimenze.

Obecnější model vypadá takto a detailní model vypadá takto. Červeně jsem označil jméno klienta, černě jméno našeho analytika a modře odpracované hodiny. Chci tím ukázat, že jsou jednotlivé související informace v projektu bohatě rozprostřeny. Díky vazbám GoodData ví, co dohromady dává smysl.

Nad tímhle modelem stavíme dashboardy, ve kterých sledujeme, jak nám jde práce od ruky, srovnáváme mezi sebou měsíce, lidi, druhy práce, koukáme na náklady a výnosy, aj.

Cokoliv v tom našem dashboardu je přesně šité na míru naší potřebě. Nikdo nám nediktoval, jak se to bude chovat. Tahle volnost je pro nás kritická a jen díky ní dokážeme stavět nad GoodData cokoliv si zamaneme = je jen na naší schopnosti, jestli uspějeme a zákazník s náma bude spokojený. 

Trochu pastička na zákazníka je v tom, že podobný dashboard je možné na první pohled sestavit v ledasčem. Mám tady příklady dashboardů z KlipFolio. Jsou super, ale mají jedno podstatné “ale” - všechny vizuální komponenty jsou objekty, které načítají informace z předem připravených dat, které někdo designoval přesně pro účely toho dashboardu. Není možné to překroutit a začít třeba 2 čísla ze dvou podkladových tabulek podělit a sledovat jejich podíl v čase. A month-to-date toho podílu už vůbec ne. O situaci, kdy máte data, ve kterých jsou vazby “many to many”, nemá smysl vůbec mluvit. Velká výhoda těhle BI produktů (řikají si BI, ale BI to není) je v tom, že jsou líbivé a podbízivé. Člověk na startu neodhadne, že si kupuje křáp, který vlastně neumí o moc víc než jeho Excel.

Proč je trh zaplavený produkty, které hrají na maličkém hřišti se stěnama vylepenýma cool vizualizacema? Nevím, ale lidi jedou na vlně “Cool, BigData analytika!” a jsou hladový po čemkoliv co má podobu reportu. Tématická analytika se udělá za pár dní - transformace transakcí a počítání "Customer lifetime value" je snadná, dokud mi každý neřiká jak to chce mít podle sebe. 

"Nikdo na světě kromě GoodData nemá schopnost provozovat analytické projekty, které jsou 100% svobodné svojí podstatou (datovým modelem) a v těchto projektech nechat lidi dělat cokoliv chtějí, aniž by museli být low-level data analytici a/nebo programátoři. Bum!”

Jak to GoodData dělá?

V Excelu je každý zvyklý sečíst sloupeček “A” tím, že dá do libovolné buňky vzoreček “=SUM(A:A)”. V GoodData sečte sloupeček A tím, že napíše vzoreček “SELECT SUM(A)”. Jazyku kterým se v GoodData tyhle vzorečky píšou se říká MAQL - mnohodimenzionální analytický dotazovací jazyk (Multi-Dimension Analytical Query Language). Zní to děsivě, ale zatím to každéj dal, i Pavel Hacker má z Keboola Academy diplom na Report Mastera :-). Pokud se podíváte zpátky na ten můj datový model z našeho interního projektu, můžete si říct, že chcete průměrný počet hodin z jedné strany datového modelu, ale filtrovaný třeba typem úkonu, seskupený podle popisu projektů a jména klienta a to celé jen pro úkony, které proběhly o víkendu odpoledne. Všechny metriky budou vypadat jako “SELECT AVG(hours_entries) WHERE name(task) = úklid”. Multidimenzionalita toho jazyka je v tom, že neřešíte, v jaké dimenzi je jméno úkolu a v jakém je vztahu k počtu vykázaných hodin a nedejbože jménu klienta. GoodData, resp. vztahy v logickém modelu, který pro klienta navrhujeme my, za vás pořeší úplně všechno.

A teď jádro pudla: pokud vám připravím (denormalizovanou) tabulku do Excelu ve které to bude pěkně na zakázku sesypané dohromady, nebude to nikomu kdo tohle čte, dávat problém spočítat. Pokud vám dám data rozdělená podle dimenzí (a dimenze bude často jiný zdroj dat - jako jsou výstupy z našeho českého a kanadského účetnictví), bude to potřeba zpracovat mnohem složitějc (nejspíš začnete v SQL joinovat jako zuřivý). Jelikož se svět nedá popsat jednou tabulkou (teda asi dá - key value pair - ale nepůjde s ní moc pracovat), je pohled přes mnoho dimenzí tím podstatným. Bez něj je všechno jen takové to domácí počítáníčko :)

Kalibrace pozornosti: teď už byste pomalu mohli říct “wow”, protože pokud se vrtáte v datech, mohli byste mít vysokou míru afinity k popsané situaci :)

Jdeme do finále

Výroba dotazovacího jazyka je nejsložitější úkol, který v BI dneska můžete řešit. Není to o uložení velkých dat, není to o jejich zpracování, ani vykreslení grafů nebo příprava API, aby se dalo s váma perfektně spolupracovat. Dotazovací jazyk si nekoupíte ani za měsíc nenaprogramujete. 

Pokud bude jazyk složitej, nebude ho umět zákazník používat. Pokud bude jazyk hloupej, nebude s ním schopný dělat co chce. GoodData má jednoduchý jazyk na vyjádření jakkoliv složitých otázek směřovaných do dat a zároveň má aparát, kterým tento jazyk napasuje na jakkoliv složitý BI projekt (logický datový model). V případě GoodData je to právě MAQL/AQE - z mého pohledu je to tou jedinou věcí, která je na GoodData neopakovatelná. Kluci z Brna a Prahy - Tomáš Janoušek, David Kubečka a Tomáš Jirotka - navíc rozšířili AQE sadou matematických důkazů (složitá algebra), díky kterým je možné rychle testovat, že nové funkce v AQE platí pro jakékoliv druhy logických modelů. GoodData tak má jistotu, že překlady mezi (MAQL) metrikama a nějakým SQL na spodních databázích jsou správně. AQE tak pro běžného člověka překlene propast, která ho dělí od low-level scriptování. 

UPDATE 17.11.2013: MAQL je dotazovací jazyk, který je na základě logického modelu (LDM) překládaný pomocí MAQL interpretru (dříve QT - "Query Tree" engine) do stromu dotazů. Tyhle dotazy jsou vlastně definice "star joinů", ze kterých "Star Join Generator" (SJG) vyrábí podle fyzického datového modelu (PDM - leží pod LDM) vlastní SQL dotazy na DB backend. Celé to na začátku dal dohromady Michal Dovrtěl a Hynek Vychodil. Nová implementace AQE tohle všechno navíc položila na solidní matematický základ ROLAP algebry (podobá se relační algebře).

Po týdnech přemlouvání a úplatcích jsem vydyndal lehce cenzurované vzory dotazů, které AQE vyrábí z metrik, které jsem pro tenhle účel napsal. Tuším, že je to poprvé, kdy to někdo veřejně publikuje!

Pro srovnání jsem vzal datový model z Report Master kurzu v Keboola Academy a nad ním udělal report:

Graf mi na pravé Y ose ukazuje, kolik jsem udělal v Afgánistánu, Albánii, Alžíru a Americké Samoe kontraktů za posledních 13 měsíců. Na levé Y ose mi ukazuje modrou čárou, kolik mi přinesl průměrný obchodník a zelenou čárou mi ukazuje kolik byl medián obratu na obchodníka v daném měsíci (vstupy jsou de-facto shodné s ukázkovou tabulkou úplně na začátku).

Graf tedy obsahuje tři metriky (viz legenda pod grafem):

  • "# IDs” = SELECT COUNT(ID (Orders)) - spočítá počet prvků
  • “prumer na obchodnika” = SELECT AVG(obrat na obchodníka) - spočítá průměr z (pomocné) metriky počítající sumu obratu na obchodníka
  • “median na obchodnika” = SELECT MEDIAN(obrat na obchodníka) - spočítá medián z (pomocné) metriky počítající sumu obratu na obchodníka

a pomocná metrika

  • "obrat na obchodníka” = SELECT SUM(totalPrice (Orders)) BY employeeName (Employees) - spočítá hodnoty položek (nějaké prodeje) na úrovni obchodníka

Všechno je samovysvětlující, snad jedině “BY”, což mi definuje, že se mi peníze “totalPrice (Orders)” spočítají podle obchodníků a ne chaoticky mezi sebou. Troufám si tvrdit, že každý kdo je ochotný a bude se maličko snažit, se to naučí (ostatně to v Keboola Academy učíme jak na běžícím pásu). 

A teď to hlavní. AQE to přeloží na následující SQL:

S trochou nadsázky lze říct, že sestavení mého reportu je vlastně poměrně dost složité, ale mě to díky AQE vůbec netrápí. Platí-li hypotéza, že:

  1. pokud mi GoodData nevydělá balík peněz, tak ji nebudu používat
  2. balík peněz vydělám jen přesným používáním BI projektu, šitým na tělo
  3. BI šité na tělo je komplexní záležitost, kterou je možné obsloužit jen díky AQE

… pak je AQE základem úspěchu GoodData.

UPDATE 17.11.2013: jak to léta používám, vůbec mi nedošlo to zásadní - kontextovost MAQL metrik - úplně se mi to vrylo pod kůži a jinak si to neumím představit. Perfektně to pospal Hynek Vychodil v komentáři dole (nejde tu konkrétní komentář linkovat, tak tady je pro jistotu screenshot

Poznámka pod čarou: výše uvedené MAQL metriky jsou jednoduché příklady. Někdy je potřeba metriku postavit tak složitě, že je až nepředstavitelné, co se s daty musí na pozadí stát. Tady je příklad metriky z jednoho projektu, kde je analytika nad nestrukturovanými texty. Metrika počítá konverzační témata v aktuálním (zvoleném) období podle moderátorů:

Lukáš Křečan před časem blognul, že lidi jsou největší konkurenční výhoda GoodData. 

Lidi jsou základ, bez nich to určitě nejde a jsou to oni, kdo tvoří neopakovatelnou atmosféru ve které vznikají unikátní věci. Jeden za druhým jsou ale nahraditelní. Největší konkurenční výhoda GoodData (a zároveň zásadní duševní vlastnictví) je AQE. Pokud by ho neměla, musel by uživatel reporty klikat v sevřeném UI, které mu vezme tolik potřebnou flexibilitu. Bez AQE bude GoodData někde v partě mezi Tableau, Bime, Birst, aj. Stane se v zásadě nezajímavou a bude zhusta soupeřit s firmama, co si nad “Redshiftama" budou stavět vlastní UI.

AQE je pro GoodData neopakovatelná příležitost jak utéct konkurenci, která bude už jen ztrácet. Nikdo jiný dneska nedokáže implementovat novou funkci do produktu, kde mohou být libovolná data v libovolně rozměrech (dimenzích) a přitom si analyticky dokázat a otestovat správnost implementace. 

Hranice mezi falešnou představou že “ten cool dashboard je pro mě přínosný” a "opravdovým potenciálem vytěžitelným z dat", je velmi tenká... a jmenuje se customizace. Libovolný model pro libovolná data a nad ním libovolné výpočty. Může to kdokoliv nazvat jako extrém, ale bez schopnosti spočítat přes mnoho dimenzí přirozený logaritmus z podílu hodnot dvou období, do světa finanční analytiky díru neuděláte. AQE je gamechanger na poli BI a díky němu GoodData redefinuje pravidla hry. Dneska obecná odmocnina, zítra K-means... :)


Howg!


23 responses
Jak tak koukám na ty celostránkové dotazy s CREATE TABLE... co se stane, když se mi změní vstupní data (což se děje furt) - to se všechny ty tabulky se spoustou joinů počítají znova?
Ahoj, jaký je rozdíl mezi AQE/XAE a MDX v Analysis Services v Microsoft SQL Serveru? - Jako zjednodušená SQL syntaxe vypadá oboje, agregační funkce (sum, avg, median, topcount, YTD, rank atd.) jsou tam i tam. - Jestli se nepletu, MDX funguje ve více OLAPech (http://en.wikipedia.org/wiki/Multidimensional_E...). - Vazby dat probíhají v MSSQL obdobně graficky v Data Source View jako u vás v LDM.
Michal Illich: ty tabulky jsou cache s result sety pro danou metriku, počítané pro každý report. Pokud se změní struktura modelu, tak budou určitě vypadat jinak.
Pavel Jašek: MDX je pořád víc SQL-like. Pokud tohle v MDX počítá TOP10 a BOTTOM10: ==================== with set [OrderedBrands] as 'Order( [Product]. [Brand Name].Members, [Unit Sales], BDESC )' member [Measures].[Brand Rank] as 'Rank( [Product]. CurrentMember, [OrderedBrands] )' select {[Brand Rank], [Unit Sales]} on COLUMNS, Union( Head( [OrderedBrands], 10 ), Tail ( [OrderedBrands], 10 ) ) on ROWS from Sales ==================== Pak analogie v MAQL, která vrátí obrat TOP 5 průměrných obejdnávek vypadá takhle: SELECT Amount WHERE TOP(5) OF (Avg. Won) a když to budu chtít v každém regionu zvlášť, bude to: SELECT Amount WHERE TOP(5) OF (Avg. Won) WITHIN (Region) Miki k tomu dodává: "@paveljasek @PetrSimecek MAQL je kontextovy, obecna metrika pouzita v n-reportech a pocita se podle kontextu, tj. atributu, beze zmeny" (https://twitter.com/michaelstencl/statuses/4020...) Asi bych to popsal tak, že obojí má ambice perfektně řešit to samé, ale v případě GoodData si to líp najde zákazníka. Navíc je to obalené poměrně důležitou věcí - API. Takže něco s GoodData začít znamená zavolat na API "Create Project" a dostaneme za 0.5 sec - HA datawarehouse na Vertice - HA metadata servery - interpretaci LDM - OLAP kostky - AQE - vlastní provisioning kontext - REST API ke všem komponentám - frontend Do toho nadefinujeme model (2 minuty), nahrajeme data (tak 5 min / GB) a můžeme pracovat. Když jdem slepou cestou, pošleme na API "Delete Project". Z textu to možná nevyzní, ale AQE samozřejmě stojí na desítkách dobře poskládaných komponent, bez kterých jedno nebo druhé nedává smysl. Jeden old-fashion BI specialista mi popisoval, jak to dělají u nich, když mají nějaký pre-sale projekt - půjčí si HW - půjčí si od MS licenci MS - půjčí si licenci nějaké OLAP kostky nad tím - pár dní to instalují - pak to někdo ladí - pak tam lejou data - pak zjistí, že pre-sale nevyšel a všechno zase likvidují a na konci jim zbyde 200kKč sekera na práci a "favory" u vendorů. (asi to trochu přitáhl za vlasy...)
Pavel Jašek na twitteru (https://twitter.com/paveljasek/statuses/4020345...) ještě linkuje tohle: MAQL is no SQL: http://yirie.blogspot.cz/2010/02/maql-is-no-sql...
@Pavel Jašek: Rozdíl mezi MDX a MAQL je v tom, že MDX je co do úrovně abstrakce vlastně na tom úplně stejně jako SQL. V obou je potřeba explicitně vyjádřit co se má spočítat a jak přesně. Především jde o definice dimenzí, ve kterých se to počítá. MAQL je proti tomu mnohem abstraktnější jazyk, který je mnohem více deklarativní. Mezi MAQL a SQL/MDX je asi takový rozdíl jako mezi jazyky Prolog a C. V SQL a MDX musím explicitně vyjádřit z jaké tabulky/datového setu vezmu která data a jak je přesně spojím s jinými daty. V MAQLu definuji (deklaruji) jaký chci výsledek a zbytek za mě udělá XAE (AQE). Například, když napíšu v MAQLu SELECT SUM(Sales) / (SELECT SUM(Sales) BY Year) dostanu podíl prodeje na ročním prodeji a teď začne ta sranda. Když tuto metriku dám do reportu po měsících, dostanu podíl měsíčních prodejů na ročních prodejích. Když tu samou metriku dám do reportu po skupinách zboží a čtvrtletích, dostanu podíl čtvrtletního prodeje za čtvrtletí na ročním prodeji příslušné skupiny zboží za rok. A tak dále a tak dále s libovolnými filtry v libovolné dimenzi. A ta metrika je ten nejjednodušší případ na kterém jde sílu MAQLu předvést. Ty metriky mohou být mnohem mnohem složitější. Teď, aby jsme se zasmáli bych chtěl vidět tu samou metriku v MDX, nemluvě o tom jak bude fungovat v různých reportech s různou dimenzí. Disclaimer: Jsem jeden ze dvou lidí, který ten koncept vymysleli. Jsem autor jazyka MAQL, autor předchozí implementace AQE a designer XAE (AQE). Nejsem už zaměstnancem GoodData.
Michal Illich: Pokud by se, jak říkáš, vstupní data měnila furt, tak by se všechny ty tabulky, co na těch měnících se datech závisí, opravdu pořád přepočítávaly. Nicméně ta data se nemění zdaleka tak často, takže jsme zatím vyřešení téhle věci mohli s klidným svědomím odkládat. :-)
Díky moc Petrovi, Michalovi a Hynkovi za vysvětlení rozdílu oproti MDX. Jo, MAQL hezky řeší spoustu černé práce a kontextovost je super:)
Jestli se to s měnícími daty musí celé přepočítat, tak je to dost neefektivní - s tímhle tedy buď neuvidím aktuální data nebo to nebudu mít realtime.
Michal Illich: pokud se změní data, musí se vždycky všude všechno přepočítat, ať v GoodData nebo jinde. Nebo se pletu?
Michal Illich: Co presne je realtime? A jinak GD je nastroj urceny na reporting. Na monitoring bych urcite pouzil neco jineho...
Petře, ne, u spousty jiných nástrojů není potřeba vše přepočítávat odznova. V sql databázích si většinou uděláš triggery, které ti přepočítávají jen ty řádky, co se změní. A hodně databází (sql i nosql) mají základní metriky (max,min,průměr,count,atd.) rovnou zadrátované v sobě, takže se aktualizují samy. Vojta vystihl v následujícím komentáři rozdíl dobře: monitoring/analytics vs reporting. Podle toho, co píšeš, je to prima nástroj na reporting, ale nepoužitelný na realtime analytics. (realtime = zpoždění nejvýše v minutách)
Michal Illich: samozřejmě vím o triggerech a funkcích v SQL, šlo mi o to, že když měníš data, musí se to nějak zohlednit. Svým způsobem je jedno kde v tom stacku z tím máš práci. Pokud bych si triggerama něco předpočítával, šlo by to vniveč při změně kontextu reportu - viz komentáře od Hynka. GoodData je BI nástroj, takže tam primárně o stream analytiku nejde (u ní máš řádově jednodužší nároky na výstup nebo řádově vyšší náklady na cenu). Kam mi sahá paměť , máme nová data od zákazníka 1x denně, někdy po pár hodinách, extrém je 1x/5minut. Je dobré reflektovat, že spousta dat vznikne extrakcí ze SFDC/NetSuite/... při "realtime" sosání dat by se začali vztekat, Google Analytic by například zablokoval účet a u AdWordsu by tě ruinovaly placený API cally na Google Developer Tokenu. Long story short: Geewa si nad tím pohled na technické parametry kulečníku stavět nebude (aka operativní dashboard pro developery), ale v momentě kdy v tom začnou mít business a zamíchají se jim do toho prachy ze CRM a data z nějaké reklamní sítě, už to dává dost smysl (a ten kdo s tím bude pracovat, na to nebude koukat 24 hodin denně, takže mu 20 minut delay bude připada super cena za to, že si v tom může kroutit pohledy jak potřebuje, aniž by měl dva semestry SQL)
Jj, myslím, že si rozumíme. Já prostě nejsem moc cílovka Kebooly ani GoodData - kdykoliv jsem pracoval s většími daty, tak by se mi tohle řešení nehodilo: 1. Když jsme vyvíjeli Sklik - potřebovali jsme reporting v podstatě realtime (v reálu to bylo tuším po 5 minutových dávkách) 2. Jyxo Fulltext - stamiliony dokumentů, desítky miliard odkazů - potřebuje výrazně specifickou práci s daty a custom dělení paměť/disk, aby to bylo rychlé. Data jsou převážně textová, případně grafová. 3. Blog.cz - nejsou potřeba žádné divy, ale musí být realtime. Textová data. 4. Akcie - potřeba realtime a strojové učení. 5. Wikidi (extrakce dat z textu) - textová data, potřeba hodně specifický inteligentní algoritmus nad přirozeným jazykem... atd.
Jasne, nic z toho neni BI. IMHO lide ridici chod firmy (nasi zakaznici) v drtive vetsine pripadu nepotrebuji realtime data. Chteji videt vykon/naklad v urcite oblasti jejich firmy, ktera nebyva jednoznacne definovana - proto je pro ne dulezita moznost s tou analytikou dale pracovat a definovat si pohledy, ktere na zacatku nebyly soucasti zadani. A k tomu jim staci data ze vcerejska - protoze jsou kompletni a jdou porovnavat s minulymi obdobimi.
Michal Illich: určitě máš pravdu! Jsou to ale příklady z "dolního patra". Na každej ten bod cos napsal, bych odpověděl takhle (sorry za TL;DR odpověď): 1) dneska sklik reporting do 5 minut nedělá, včerejšek vrátí tak nejdřív v 9 ráno. máme klienty, který zapojují data Skliku do GoodData, protože Sklik má reporting, který se pro spoustu věcí vůbec nehodí - reportuje to samo sebe, je to spíš takový "log" operací. Příkladem je, že budeš mít kampaň, která běží na AdWordsech, Facebook Ads a Skliku, každý kanál má kus budgetu a časový plán. Chceš-li sledovat, jak "ti to běží", musíš použít něco jako GoodData, protože Sklik ti nedá žádný validní informace o tom, jak se ti daří 2) Databáze Vertica, ve které má GoodData naše data, taky nepotřebuje AQE. V případě Jyxo popisuješ úplně jiný usecase. 3) Kdybych chtěl sledovat čísla blog.cz v jiném kontextu, už bys to nedal dohromady. Pokud bys ty měl blog.cz a ten byl publikační platformou pro firmy a ty chtěli sledovat, jak jim jejich skupiny blogů frčej, nedej bože v souvislosti s jima prodávanou reklamou na jejich blogách, už bys tam GoodData potřeboval (hodili by se ti) 4) jako řídící jednotka v autě nepotřebuje GoodData pro řízení auta, nepotřebuje je robot na bidování na burze (jiný use-case). Pokud budu provozovat burzu, už se mi bude GoodData hodit 5) zase příklad z vedlejší koleje (GoodData taky není translátor nebo kompiler - obojí, jak překlad textu tak kompilace, je práce s daty) Řekni mi, kde máš víc jak jeden datovej zdroj a víc jak 5 lidí, co s tím mají ambice něco dělat a jakej nástroj jim dáš k dispozici, aby se mohli realizovat? Sklik jinak je super příklad, kde by měli použít GoodData podobně jako Zendesk a chargovat lidi za přístup k dashboardům (+ upselovat je s možností do toho nasypat vlastní data).
Vzpomínám si, jak jsem na jaře 2010 přivedl Michala s Hynkem na MFF UK za doc. Tůmou a v lavicích tam mezi jinými seděli studenti posledního ročníku Tomáš s Davidem. Jako jediní z toho semináře vydrželi až do konce a posléze pak už v rámci GoodData ještě spolu s Tomášem Janouškem proměnili matematický model, který v rámci algebraických seancí vzniknul, v realitu. Byl to běh na dlouhou trať, ale určitě se to vyplatilo. Díky za oslavný článek. :-)
@Jarda: Bylo to rozhodně klíčové rozhodnutí do toho investovat! Teď ještě custom funkce, aby se věci podobné jako tady: https://support.gooddata.com/entries/36396263-M... mohli vydavat za kompaktní funkce. Jinak neděkuj, dělám to dost sobecky sám pro sebe, díky tomu si spoustu věcí sesumíruju a uvědomím. Dělá mi to radost!
Jo, no, custom funkce aka parametrický metriky aka makra, ty by to chtělo. Tady ten článek, ještě když k tomu Roman napíše "brings … to masses" je imho spíš výsměch. :-)
Ten support článek je super. Byl jsem ale překvapenej, že jsem prošvihl něco tak "velkýho". Faktem je, že běžný CPU si taky vystačí s násobením, sčítáním a odčítáním + nějaký shifty v registrech a nad tím se pak postaví i besselovy funkce, ne? :-)
Hele tak prej to furt není gamechanger: “At least at the backend most of the code do nothing more than run few or more SQL queries, transform result to XML or JSON.” (http://www.dagblog.cz/2015/08/a-case-against-po...) :-)
@Pivnik: Dík. Dlouho jsem se tak nezasmál, jako když jsem četl tvůj komentář pod tím.
1 visitor upvoted this post.