Statistika v PostgreSQL pomocí R-project
Transkript
Prague PostgreSQL Developers Day 2012 Statistika v PostgreSQL pomocí R-project Vratislav Beneš [email protected] 09.02.2012 Prague PostgreSQL Developers Day 2012 1. 2. 3. 4. 5. 6. 7. 8. Potřeba statistiky v praxi Proč řešit statistické analýzy v DB serveru Možnosti SQL v PostgreSQL R-project Propojení R-project s PostgreSQL Jazyk plr Příklad analýzy predikce v krátkém období -- SQL dotazy použité při prezentaci -- 09.02.2012 Prague PostgreSQL Developers Day 2012 Potřeba statistiky v praxi PREDIKTIVNÍ ANALYTIKA Obchodní firmy (CRM) ● Odhad vývoje příležitostí ● Analýza chování zákazníka Výrobní firmy (ERP) ● Plánovaní výroby ● Analýzy důvodů poruchovosti linek ● Predikce poruchovosti linek Obchodní oddělení ● Odhad vývoje kurzu měn Marketingová oddělení ● Analýzy a modelování nad daty z průzkumů trhů 09.02.2012 Prague PostgreSQL Developers Day 2012 Proč řešit statistické analýzy v DB serveru ● Snadná dostupnost z aplikací ● Žádné speciální nároky na aplikaci/aplikační server ● Výkonnost ● Škálovatelnost ● Rozšiřitelnost ● Snadná údržba ● SQL – častokrát plně postačí 09.02.2012 Prague PostgreSQL Developers Day 2012 Možnosti SQL v PostgreSQL ● Agregační funkce ● AVG, směrodatné odchylky ● Lineární regrese ● ● ● Jednouché predikce ● Trendy Korelace Window funkce – od verze 8.4 ● Klouzavé průměry ● Odpadají nadbytečné joiny ● Zjednodušení práce 09.02.2012 Prague PostgreSQL Developers Day 2012 R-project ● Opensource projekt pro statistiku pod GPL - www.r-project.org ● R–jazyk implementující S–jazyk ● Modulární systém ● Pomocí balíčků - cran.r-project.org/web/packages ● Časové řady ● Bayesovské sítě ● Neuronové sítě ● Nelineární modely ● ... ● TUI, GUI ● Podpora distribuovaných výpočtů ● Podpora GPU ● Multiplatformní ● Silná komunita 09.02.2012 Prague PostgreSQL Developers Day 2012 Propojení R-project s PostgreSQL ● ● Jazyk do PostgreSQL http://www.joeconway.com/plr/ Instalace ● Nakopírovat do contrib a skompilovat ● Statická knihovna plr.so ● Import plr.sql do každé DB, kde má být plr používán ● Jednoduchý test: select r_version(); 09.02.2012 Prague PostgreSQL Developers Day 2012 Jazyk plr ● Do těla funkce vepsat R kód ● Pozor na typ návratové hodnoty skalár/vektor ● Využívat array ● ● SELECT array(SELECT x FROM TBL) -> array ● UNNEST array -> recordset Funkce s návratovým typem recordset 09.02.2012 Prague PostgreSQL Developers Day 2012 Příklad analýzy predikce v krátkém období Zadání: Vypracovat technickou analýzu pro kráktokobé predikce 500 výrobků Zdrojová data: ● ~12GB ● ~25M řádků ● 12 atributů Výstup: dynamický systém reflektující na změnu vstupních dat s výstupy do tabulky a grafu Řešení: ● PostgreSQL 8.4 a R-project ● ARIMA, vícerozměrná lineární regrese, korelace ● Doba realizace 3 týdny ● Doba výpočtu na Opteron 3.4GHz ~ 10min ● Vizualizace pomocí Pentaho 09.02.2012 Prague PostgreSQL Developers Day 2012 Příklady --nejnizsi namerene teploty v jednotlivych mesicich select datum, teplota From (select rank() over (PARTITION by extract(year from datum)*100 + extract(month from datum) order by teplota),* from pocasi) t1 where t1.rank=1 --klouzavy prumer select yd, t, avg(t) OVER (order BY yd ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) t from (select extract(year from datum)*1000 + extract(doy from datum) yd, avg(teplota) t from pocasi group by yd order by yd) a -- vytvoreni funkce CREATE OR REPLACE FUNCTION r_arima_x(x double precision[], per integer) RETURNS double precision[] AS $BODY$ myx<-ts(x,start=1,frequency=48) myx.hw<-HoltWinters(myx) predict(myx.hw,n.ahead=per) $BODY$ LANGUAGE plr VOLATILE COST 100; ALTER FUNCTION r_arima_x(double precision[], integer) OWNER TO postgres; --zavolani fce select r_arima_x(array(select teplota from pocasi),48) --tabulka vysledku select unnest(r_arima_x(array(select teplota from pocasi),48)) 09.02.2012 Prague PostgreSQL Developers Day 2012 Otázky 09.02.2012 Prague PostgreSQL Developers Day 2012 Děkuji za pozornost Vratislav Beneš [email protected] 09.02.2012
Podobné dokumenty
Základní příkazy v R
y<-ts(x,start=1990,frequency=4)
filter(x, filter=rep(1/5,5))
decompose(x)
stl(x)
m<-HoltWinters(y)
predict(m,n.ahead=5)
acf(y)
pacf(y)
diff(y)
res=armasubsets(y=y,nar=5,nma=5)
PostgreSQL jako platforma pro DWH
MSSQL 2005 - IBM 3500 – 2 x DC Xeon, 4GB RAM - Win 2003, 6 x SAS 15k RAID 10, MOLAP
jeden dotaz: ~90s => celkem: ~42.25h
Pentaho BI + GridSQL 2 - IBM 3650, QC Xeon, 16GB RAM, Fedora 13, PostreSQL 8...
GridSQL a pg-pool II
2. pg-pool II
1. Infrastrukutra
2. Využití pro datové sklady
3. GridSQL
1. Infrastuktura
2. Vytvoření DB a tabulek
3. Nahrávání dat
4. Test výkonosti
5. Přednosti a slabiny
4. Závěrečné shrnutí
informace - GlobTech
demux
popis komponenty
komponenta demux slouží k přímému zápisu dat do souborů na disku. funkčností se podobá vestavěné
komponentě router transformation, která ale data rozděluje mezi výstupní sku...
collate "cs_CZ"
CREATE FUNCTION foo(a int = 3, b int = 0)
RETURNS ...
SELECT foo();
SELECT foo(10,20);
SELECT foo(10, b := 30);
SELECT foo(10);
SELECT foo(b := -1, a := 20);
Výstavba datového skladu s použitím open source
databázi, případně vícero databází nebo schémat. Data v této části datového skladu jsou obvykle uspořádána do tzv. Data Martů. Data Mart je množina dat relevantních pro konkrétní
oddělení v podniku...
بت أجءأحإ ء بض سعز سذف
materiálu o vysoké hodnot¥ modulu pruºnosti a s p°í£nými rozm¥ry podstatn¥ v¥t²ími,
neº jsou rozm¥ry zkoumaného vzorku. Pak lze kalibra£ní vzorek pokládat za absolutn¥
tuhý. Výsledkem m¥°ení tuhost...
PostgreSQL 9.1 efektivne
Návrh vlastnı́ch funkcı́
C, PL/pgSQL, PL/SQL, PL/Perl, PL/Python, PL/Java, PL/Php, PL/R
Podpora OUT parametrů
Podpora Set Returning Functions (výsledkem je tabulka)
Podpora ošetřenı́ chyb
Podp...