Top Banner
NETEZZA APPLIANCE Danilo De Benedictis [email protected] NETEZZA DEVELOPMENT
41

NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

Mar 23, 2018

Download

Documents

hanguyet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

NETEZZA

APPLIANCEDanilo De Benedictis – [email protected]

NETEZZA

DEVELOPMENT

Page 2: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

NETEZZA DEVELOPMENT

STORED PROCEDURES

ANALYTIC FUNCTIONS

Page 3: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

NETEZZA DEVELOPMENT

STORED PROCEDURES

Page 4: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURES

Definizione: Le Stored Procedure sono la

combinazione di SQL + linguaggio

procedurale:

Branch

Loop

Subprogram

NZPLSQL: linguaggio (interpretato) di

programmazione per le stored procedures di

Netezza

Basato sul precedente Postgres PL/pgSQL

Page 5: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURES

NZPLSQL: CARATTERISTICHE

Condizioni (IF/ELSE)

Loop (WHILE/FOR)

SQL e dynamic SQL

Variabili

Return:Scalar

Result Set

Argomenti in input

Esecuzione nel contesto chiamanteSession

Transaction

Page 6: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

NZPLSQL: SINTASSI

CREATE OR REPLACE PROCEDURE

sp_nome(varchar(6))

RETURNS INT4 LANGUAGE NZPLSQL AS

BEGIN_PROC

DECLARE str varchar;

BEGIN

str := $1;

END;

RETURN select length(str);

END_PROC;

STORED PROCEDURES

Page 7: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURE : PARAMETRI INPUT

I Parametri input alla SP vengono righiamati

come $1, $2, etc., da 0 a 64 parametric.

VARARGS: specifica una LISTA DI

PARAMETRI (max 64)

Netezza salva nell’array

PROC_ARGUMENT_TYPES i datatypes (in

format OID) dei parametri input.

Page 8: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURES CREATE OR REPLACE PROCEDURE sp_varargs01(varargs)

RETURNS INT4

LANGUAGE NZPLSQL

AS

BEGIN_PROC

DECLARE

num_args int4;

typ oid;

idx int4;

BEGIN

num_args := PROC_ARGUMENT_TYPES.count;

RAISE NOTICE 'Number of arguments is %', num_args;

for i IN 0 .. PROC_ARGUMENT_TYPES.count - 1 LOOP

typ := PROC_ARGUMENT_TYPES(i);

idx := i+1;

RAISE NOTICE 'argument $% is type % value ''%''', idx, typ,

$idx;

END LOOP;

END;

END_PROC;

Page 9: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURES

Demo PROC_ARGUMENT_TYPES

Per convertire il datatype nel nome del datatype:

SELECT DISTINCT FORMAT_TYPE, ATTTYPID

FROM _V_RELATION_COLUMN;

Page 10: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

MYDB(USER)=> CALL updateacct();

MYDB(USER)=> EXEC updateacct();

MYDB(USER)=> EXECUTE updateacct();

MYDB(USER)=> EXECUTE PROCEDURE

updateacct();

MYDB(USER)=> SELECT updateacct();

MYDB(ADMIN)=> EXEC

OTHERDB..UPDATEACCT();

STORED PROCEDURES

Page 11: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

STORED PROCEDURES

NZPLSQL supporta gli array.

Per dichiarare un array: name VARRAY(size) OF type;

Tutti gli elementi dell’array inizialmente contengono ilvalore SQL NULL.

Per assegnare un valore: name(idx) := value;

Supportati: name.EXTEND(size)

name.COUNT

name.TRIM(size)

Page 12: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

LOOP

Query Processing in Loops FOR rec in SELECT * from mytable LOOP

IF rec.type = ‘d’ THEN

EXECUTE IMMEDIATE ‘DELETE FROM mytable2 WHERE

recid = ‘ || rec.id;

END IF;

END LOOP;

Page 13: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

LOOP

Query Processing in Loops

La outer SELECT viene eseguita, ed il risultato

messo in CACHE.

La inner DELETE viene eseguita solo

successivamente, quindi non impatta il risultato della

DELETE.

La precedente query non è ottimale. Rewrite: DELETE from mytable2

where recid in

(select recid from my table

where type = 'd') ;

Page 14: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

NETEZZA DEVELOPMENT

ANALYTIC FUNCTIONS

Page 15: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

Definizione: Le Funzioni Analitiche calcolano un valore aggregato (per ogni riga) basato su un gruppo di righe, definite da una finestra.

La dimensione della finestra è data da un numero o da un intervallo logico.

Funzioni Analitiche VS Funzioni Aggregate

Le Funzioni Analitiche restituiscono 1 valore per ogni riga dell’insieme di aggregazione.

Le Funzioni Aggregate (...count(*) ... Group by...) restituiscono 1 valore per ogni insieme di aggregazione.

Page 16: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE DI GRUPPO:

restituiscono il risultato calcolato su 0-n

righe.

SELECT max(temp_lo) FROM weather;

Es. MAX, MIN

Usate anche con GROUP BY

Usate anche con GROUP BY .. HAVING ..

Page 17: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE SU FINESTRA (i.e.

WINDOWS ANALYTIC FUNCTIONS)

restituiscono il risultato calcolato su UN

GRUPPO DI 0-n righe DEFINITE DA UNA

FINESTRA.

ESEMPIO: data la tabella...

Page 18: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE SU FINESTRA:

Esempio 1:

SELECT year,

month,

salesk,

avg(salesk) OVER (PARTITION BY year ORDER BY month ROWS BETWEEN 1

PRECEDING AND 1 FOLLOWING)

FROM monthlysales;

Ogni riga, utilizza la precedente (se esiste) e la successiva (se esiste) in una finestra con ordinamento desiderato, per fare un calcolo aggregato.

Page 19: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE SU FINESTRA: risultato 1:

AVG(20,22,25) = (20+22+25)/3 = 67/3 = 22.33333

AVG(22,25,30) = (22+25+30)/3 = 77/3 =25.66666 Dov’è l’errore ???

Page 20: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE SU FINESTRA:

Esempio 2:

SELECT *,

sum(salesk)OVER (PARTITION BY year ORDER BY

month ROWS UNBOUNDED PRECEDING)

FROM monthlysales;

Ogni riga, utilizza tutte le precedenti della PARTITION.

Page 21: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

FUNZIONI DI AGGREGAZIONE

AGGREGAZIONE SU FINESTRA: risultato

2:

SUM(30,35,50) = 115

Page 22: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

Benefici

Ottimizzazione query processing

Spesso le funzioni analitiche si traducono in algoritmi

con complessità lineare, rispetto a soluzioni

equivalenti (nel risultato) con complessità di ordine

superiore.

Codice maggiormente leggibile

In una singola riga si trova la codifica di interi

statement composti da query e subquery

Codice più facile da manutenere

La leggibilità del codice si traduce in una facilità di

manutenzione

Page 23: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

Classificazione in Famiglie.

Window Aggregate: utilizzo dei valori delle singole righe della partizione (=window=cluster) unitamente al valore aggregato: avg, sum, min, max, count, variance, stddev, ...

Lag/Lead: singole righe della partizione (=window=cluster) aventi un offset tra loro: lag, led, ...

First/Last: primo ed ultimo valore della partizione (=window=cluster) di righe: first_value, last_value

Ranking: classificazione delle righe, all’interno della partizione (=window=cluster): ntile, dense_rank, percent_rank, cume_dist, rank

Page 24: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

Classificazione in Famiglie.

Row Count: progressivo di riga all’interno della

partizione.

Hypotetical Set: funzioni che indicano il rank

percentile che una riga avrebbe se fosse inserita

in una partizione:

dense_rank, percent_rank, cume_dist, rank

Inverse Distribution: restituiscono il valore di riga,

all’interno di una partizione, che ha un

determinato percentile:

percentile_cont and, percentile_disc

Page 25: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

PROCESSING ORDER:

1. Query JOINS, WHERE, GROUP BY, HAVING

2. Analytic Function: calcolo delle funzioni

analitiche all’interno della finestra definita

3. ORDER BY

Page 26: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

WINDOW PARTITIONING:

tutte le righe che hanno uguali caratteristiche

compongono la finestra di partizione

Nessuna specifica = intero row set restituito dalla

query

WINDOW ORDERING:

Ordinamento all’interno della partizione.

WINDOW FRAMING:

Intervallo, all’interno della Window Partition, per

cui eseguire un calcolo

Page 27: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

ALL Specifica di agire su tutti i valori (default, quindi non specificare)

ASC | DESC Sequenza di ordinamento

BETWEEN … AND Intervallo della finestra, qualora definiti esplicitamente

CURRENT ROW Si riferisce alla riga corrente

DISTINCT Aggregazione per valori unici. Non supportata da tutte le Function.

EXCLUDE CURRENT ROW Esclude la riga corrente.

EXCLUDE GROUP Esclude un intero gruppo di righe che soddisfano una condizione.

EXCLUDE NO OTHERS Specifica di non escludere alcuna riga (default).

EXCLUDE TIES Specifica di escludere tutte le altre righe collegate alla riga corrente, tranne

la riga corrente.

Page 28: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

NULLS {FIRST | LAST} Indica come trattate il NULL negli ordinamenti (default FIRST).

ORDER BY Indica come ordinare le righe nell’ambito della partizione (anche su campi

multipli).

OVER Indica che la funzione opera su un risultato di righe calcolate dopo FROM,

WHERE, HAVING clause. E’ usato per definire la finestra di righe a cui applicare la Function

PARTITION BY Definisce la partizione (default = all rows)

ROWS | RANGE Definisce la porzione della partizione su cui calcolare la funzione

(ROWS = righe fisiche / RANGE = intervallo logico )

UNBOUNDED FOLLOWING Specifica che la finestra si estende anche dopo l’ultima riga della partizione.

UNBOUNDED PRECEDING Specifica che la finestra si estende anche precedentemente la prima riga

della partizione.

Page 29: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

DEFINIZIONE:

FUNZIONE(C) OVER PARTITION (FRAME)

La funzione da applicare al FRAME della

PARTITION può essere:

AVG(C): media sul campo C della finestra definita

nella partizione.

COUNT(C / *):

C = #valori NOT NULL del campo C sulla finestra definita

nella partizione.

* = #righe contenute nella finestra definita nella partizione.

SUM(C): somma sul campo C della finestra definita

nella partizione.

Page 30: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

DEFINIZIONE:

FUNZIONE(C) OVER PARTITION (FRAME)

La funzione da applicare al FRAME della

PARTITION può essere:

MAX(C): massimo valore del campo C nella finestra

definita nella partizione.

MIN(C): minimo valore del campo C nella finestra

definita nella partizione.

Page 31: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

DEFINIZIONE:

FUNZIONE(C) OVER PARTITION (FRAME)

La funzione da applicare al FRAME della

PARTITION può essere:

VAR_SAMP(C): varianza dei campioni, esclusi i NULL:

= sum (expr**2) - ((sum (expr) **2) / (count (*)))) / (count (*)- 1)

VARIANCE(C):

0 per 1 riga

VAR_SAMP(C) per N righe

STDDEV_SAMP(C): calcola la deviazione standard di C

= sqr_root(VAR_SAMP(C))

Page 32: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

DEFINIZIONE:

FUNZIONE(C) OVER PARTITION (FRAME)

La funzione da applicare al FRAME della

PARTITION può essere:

VAR_POP(C): varianza della popolazione di C dopo

aver scartato i NULL

= ( sum(C^2) - sum(C)2 / count(C)) / count(C)

STDDEV_POP(C): deviazione standard della

popolazione di C.

= sqr_root(VAR_POP)

STD_DEV(C): deviazione standard di C

= sqr_root(VARIANCE)

Page 33: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

LAG / LEAD

LAG N: accesso alla riga precedente nella

finestra con un offset N dalla current row

LEAD N: accesso alla riga successiva nella

finestra con un offset N dalla current row

Se N è fuori range

Default (se specificato)

NULL (se default non specificato)

Page 34: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

FIRST / LAST

FIRST N: accesso alla prima riga della finestra

LAST N: accesso all’ultima riga della finestra

Se il FIRST / LAST value è NULL

se usato IGNORE NULLS -> primo valore NOT NULL

nella finestra

else NULL

Page 35: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

RANKING RANK(C): classifica il valore del campo sulla finestra ordinata.

Se N righe hanno pari valore, il rank R tra loro è uguale, ma il rank successivo è R+N.

DENSE_RANK(C): classifica il valore del campo sulla finestra ordinata, con valori interi consecutivi. Se N righe hanno pari valore, il rank R tra loro è uguale, ed il rank

successivo è R+1.

PERCENT_RANK(C): calcola il valore percentuale del rank nella finestra. (RANK(C) – 1) / (#righe nella partizione -1)

0 se la partizione ha 1 riga

CUME_DIST: distribuzione cumulativa. # righe precedenti / # righe della partizione

se esistono pari, vengono contati come 1

NTILE(K): divide l’insieme delle righe nella finestra in K sottoinsiemi numerati da 1 a K, ciascuno con lo stesso numero di righe (+/- 1). La funzione restituisce il # del sottoinsieme a cui è assegnata la riga.

Page 36: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

RANK SAMPLE

RANK() OVER (PARTITION BY CITY

ORDER BY amt DESC) AS ranking

RANK() OVER

(PARTITION BY region

ORDER BY SUM(amt)

) as rnk

Page 37: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

DENSE_RANK SAMPLE

DENSE_RANK() OVER

(PARTITION BY CITY

ORDER BY amt DESC) AS

ranking

Page 38: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

HYPOTETICAL RANK(K): calcola il Rank di un ipotetico valore K

sulla finestra ordinata.Se N righe hanno pari valore, il rank R tra loro è uguale,

ma il rank successivo è R+N.

DENSE_RANK(K): calcola il dense_rank di un ipotetico valore K sulla finestra ordinata, con valori interi consecutivi.Se N righe hanno pari valore, il rank R tra loro è uguale, ed

il rank successivo è R+1.

PERCENT_RANK(K): calcola il percent_rank di un ipotetico valore K sulla finestra ordinata. Il risultato è calcolato come se l’ipotetico valore facesse parte della finestra.

CUME_DIST(K): calcola la cume_dist di una ipotetica riga aggiunta alla finestra ordinata.

Page 39: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

ISTOGRAMMI

width_bucket(<espressione>,<inizio_range>,

<fine_range>, <num_intervalli>)

Restituisce l’intervallo (tra quelli definiti) a cui

l’espressione appartiene.

Else: underflow ; num_intervalli + 1

Esempio: width_bucket(profit_margin, 15,21, 3)

Page 40: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

AVG OVER PARTITION:

SELECT *

,avg(profit_margin)

over (partition by

region order by city, quarter

rows between 1 preceding and

1 following)

FROMZDDB_SALES_TBL

order by 3,2,1,4

Page 41: NETEZZA APPLIANCE - di.univaq.it DEVELOPMENT STORED PROCEDURES. STORED PROCEDURES Definizione: Le Stored Procedure sono la ... RETURN select length ...

ANALYTIC FUNCTION

SELECT *

, lag(quarter,2) over (partition by region order by city, quarter)

, lead(quarter,2) over (partition by region order by city, quarter)

, first_value(amt) over (partition by city order by quarter)

, last_value(amt) over (partition by city ) /*order by quarter)*/

FROM ZDDB_SALES_TBL

order by 3,2,1,4