Statistika v PostgreSQL pomocí R-project

Transkript

Statistika v PostgreSQL pomocí R-project
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

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)

Více

PostgreSQL jako platforma pro DWH

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

Více

GridSQL a pg-pool II

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í

Více

informace - GlobTech

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

Více

collate "cs_CZ"

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íce

Výstavba datového skladu s použitím open source

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

Více

بت أجءأحإ ء بض سعز سذف

بت أجءأحإ ء بض سعز سذف 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...

Více

PostgreSQL 9.1 efektivne

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

Více