Data warehouse in Oracle

Documenti analoghi
Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1. Data warehouse in Oracle

Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1.

Data warehouse in Oracle

Data warehouse Analisi dei dati

Analysis Service. Dutto Riccardo IPSI - tel Dutto Riccardo - SQL Server 2008.

Estensioni del linguaggio SQL per interrogazioni OLAP

SQL Server BI Development Studio. SQL Server Business Intelligence Development Studio. Analysis Services

Elena Baralis 2007 Politecnico di Torino 1

SQL - Structured Query Language

<Nome Tabella>.<attributo>

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Linguaggio SQL seconda parte

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

Caratteristiche dei linguaggi per Database

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Manuale SQL. Manuale SQL - 1 -

Basi di Dati: Corso di laboratorio

Esempi SQL con Access. Orazio Battaglia

Un problemino semplice semplice: in una tabella

Interrogazioni nidificate

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Structured Query Language

Laboratorio Architettura

Architetture per l analisi dei dati

Silvia Chiusano, Paolo Garza 1

Interrogazioni nidificate

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

SQL - Sottointerrogazioni

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Schema Del DB Operazionale TELEFONATE

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Le query di comando e di servizio in Access

Definizione e calcolo delle misure

Interrogazioni$e$il$valore$NULL$

Basi di Dati: Corso di laboratorio

Laboratorio di Basi di Dati

ESERCITAZIONE: Fornitore-Fornisce-Articolo

SQL: DDL, VI, Aggiornamenti e Viste

MODULO 2. Query normali e parametriche Query di:

Il linguaggio SQL: le viste

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Corso di Basi di Dati

Laboratorio Architettura. Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Esercizio con attributo cross-dimensionale - transazionale

MS Access Un DBMS relazionale per Windows?

ESERCITAZIONI ACCESS

DATABASE PER IL WEB. Programmazione Web 1

Pag Politecnico di Torino 1

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL - Sottointerrogazioni correlate

Corso di Basi di Dati

Esercitazione: Interrogazioni SQL

Business Intelligence

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

Operatori aggregati: COUNT

Monday, January 24, 2011 SQL

NETEZZA APPLIANCE. Danilo De Benedictis NETEZZA DEVELOPMENT

2011 Politecnico di Torino 1

Relazioni e tabelle. Introduzione alle Basi di Dati Relazionali. Relazioni uno a uno. Esempio

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Esercitazione 4 SQL: cataloghi e viste

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Oracle Database 11g: Introduzione a SQL Release 2

SQL Server BI Development Studio

PARTITIONING PARTITIONING. 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Come fare il debug di query SQL complicate usando le CTE scrivibili

PROGETTAZIONE DI DATABASE Linguaggio SQL

Oracle Database 10g: Introduction to SQL - LVC

σ data 15/12/2013 data 20/12/2014

Basi di Dati: Corso di laboratorio

2.4. Creare ed operare con le query

Il linguaggio SQL: viste e tabelle derivate

Basi di Dati: Corso di laboratorio

Access. P a r t e t e r z a

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Data Warehousing. Esercitazione 2

Esercitazione 3 SQL 2

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

Linguaggio SQL. Prof. Giuseppe Tandoi

ISTITUTO PARITARIO MICHELANGELO - RIMINI- PIANO DI LAVORO

2011 Politecnico di Torino 1

marca (1,n) (1,1) nome prezzou prodotto nome responsabile quantità nome datai dataf (0,n) vendite (0,n) (0,n) (0,n) tempo acquisti quantità (0,n)

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

SQL Server Data Trasformation Services

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Basi di dati. Linguaggio SQL: fondamenti - Introduzione. Elena Baralis 2007 Politecnico di Torino 1 D B M G 2 D B M G D B M G 4 D B M G 6

Transcript:

Data warehouse in Oracle Viste materializzate e estensioni al linguaggio SQL per l analisi dei dati presenti nei data warehouse Viste materializzate Paolo Garza 1

Viste materializzate Viste materializzate sono viste il cui risultato viene precalcolato e memorizzato su disco permettono di velocizzare i tempi di risposta precalcolo degli aggregati, join,... solitamente sono associate a interrogazioni che operano aggregazioni possono essere usate anche per interrogazioni che non operano aggregazioni Viste materializzate La vista materializzata può essere usata in qualunque interrogazione di selezione come se fosse una tabella Paolo Garza 2

Viste materializzate e riscrittura delle interrogazioni Queries rewriting il DBMS può trasformare le interrogazione al fine di ottimizzarne l esecuzione le viste materializzate possono essere usate automaticamente in fase di riscrittura delle interrogazioni in modo trasparente all utente usate per risolvere interrogazioni simili a quella alla quale sono associate Creazione viste materializzate CREATE MATERIALIZED VIEW Nome [BUILD {IMMEDIATE DEFERRED}] [REFRESH {COMPLETE FAST FORCE NEVER} {ON COMMIT ON DEMAND}] [ENABLE QUERY REWRITE] AS Query Paolo Garza 3

Creazione viste materializzate Name: nome della vista materializzata Query: interrogazione associata alla vista materializzata Creazione viste materializzate BUILD IMMEDIATE crea la vista materializzata e carica immediatamente i risultati dell interrogazione al suo interno DEFERRED crea la vista materializzata ma non carica i dati associati all interrogazione al suo interno Paolo Garza 4

Creazione viste materializzate REFRESH COMPLETE ricalcola il risultato dell interrogazione eseguendo l interrogazione su tutti i dati FAST aggiorna il contenuto della vista materializzata basandosi sulle variazioni avvenute dall ultima operazione di refresh ad ora Creazione viste materializzate REFRESH FORCE se possibile viene eseguito il refresh in modalità FAST altrimenti viene usata la modalità COMPLETE NEVER il contenuto della vista non viene aggiornata con le procedure standard di Oracle Paolo Garza 5

Creazione viste materializzate Opzioni ON COMMIT refresh effettuato automaticamente quando le operazioni sql eseguite comportano una variare del contenuto della vista materializzata ON DEMAND refresh effettuato solo su richiesta esplicita dell utente usando la procedura DBMS_MVIEW.REFRESH Creazione viste materializzate ENABLE QUERY REWRITE abilita il DBMS ad utilizzare la vista materializzata come blocco base per eseguire più velocemente altre interrogazioni Paolo Garza 6

Vincoli sulla creazione delle viste materializzate Data un interrogazione è possibile creare una vista materializzata associata a tale interrogazione solo se sono soddisfatti alcuni vincoli vincoli sugli attributi rispetto ai quali si opera il raggruppamento vincoli sulle tabelle usate e sul tipo di join ecc. Esempio di vista materializzata Schema tabelle FRN(Cod_F, Nome, Sede_F ) ART(Cod_A, Tipo, Colore) PRG(Cod_P, Nome, Sede_P) FAP(Cod_F, Cod_P, Cod_A, Q) Paolo Garza 7

Esempio di vista materializzata Voglio materializzare l interrogazione SELECT Cod_F, Cod_A, SUM(Q) FROM FAP GROUP BY Cod_F, Cod_A; Opzioni Caricamento dei dati immediato, refresh completo operato solo su richiesta dell utente e abilitazione alla riscrittura delle interrogazioni Esempio di vista materializzata CREATE MATERIALIZED VIEW Frn_Art_sumQ BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND ENABLE QUERY REWRITE AS SELECT Cod_F, Cod_A, SUM(Q) FROM FAP GROUP BY Cod_F, Cod_A; Paolo Garza 8

Fast refresh Richiede l uso di apposite strutture di appoggio per il log delle variazioni relative alle tabelle usate nell interrogazione associata alla vista materializzata MATERIALIZED VIEW LOG memorizza le variazioni che avvengono sulla tabella a cui è associato ogni materialized view log è associato ad una sola tabella e ad alcuni dei suoi attributi Fast refresh L opzione REFRESH FAST può essere usata solo se l interrogazione associata alla vista soddisfa un insieme di vincoli devono esistere le materialized view log per le tabelle e gli attributi utilizzati nell interrogazione quando si usa la group by deve sempre essere presente COUNT(*), SUM(..), o una funzione simile nella SELECT ecc. Paolo Garza 9

Esempio di materialized view log Creare un materialized view log associato alla tabella FAP e in particolare agli attributi Cod_F, Cod_A, Q abilitare le opzioni SEQUENCE e ROWID abilitare la gestione di nuovi valori Esempio di materialized view log CREATE MATERIALIZED VIEW LOG ON FAP WITH SEQUENCE, ROWID (Cod_F, Cod_A, Q) INCLUDING NEW VALUES; Paolo Garza 10

Esempio di vista materializzata con opzione fast refresh Voglio materializzare l interrogazione SELECT Cod_F, Cod_A, SUM(Q) FROM FAP GROUP BY Cod_F, Cod_A; Opzioni Caricamento dei dati immediato, fast refresh eseguita automaticamente dopo ogni commit e abilitazione alla riscrittura delle interrogazioni Esempio di vista materializzata con opzione fast refresh CREATE MATERIALIZED VIEW LOG ON FAP WITH SEQUENCE, ROWID (Cod_F, Cod_A, Q) INCLUDING NEW VALUES; Paolo Garza 11

Esempio di vista materializzata con opzione fast refresh CREATE MATERIALIZED VIEW Frn_Art_sumQ BUILD IMMEDIATE REFRESH FAST ON COMMIT ENABLE QUERY REWRITE AS SELECT Cod_F, Cod_A, SUM(Q) FROM FAP GROUP BY Cod_f, Cod_a; Procedura per il refresh delle viste materializzate L utente, o un job di sistema, può richiedere il refresh del contenuto di una vista materializzata usando la procedura DBMS_MVIEW.REFRESH( vista, { C F }) vista: nome vista da aggiornare C : refresh di tipo COMPLETE F : refresh di tipo FAST Paolo Garza 12

Procedura per il refresh delle viste materializzate Esempio refresh in modalità COMPLETE della vista materializzata Frn_Art_sumQ EXECUTE DBMS_MVIEW.REFRESH( Frn_Art_sumQ, C ); Eliminazione e modifica delle viste materializzate Eliminazione DROP MATERIALIZED VIEW Nome; Modifica ALTER MATERIALIZED VIEW Nome opzioni; Paolo Garza 13

Analisi delle viste materializzate La procedura DBMS_MVIEW.EXPLAIN_MVIEW permette di analizzare le caratteristiche delle viste materializzate tipo di refresh operazioni su cui il fast refresh è abilitato query rewrite abilitato, possibile, vietato errori Piano d esecuzione Analizzando il piano d esecuzione delle interrogazioni frequenti è possibile verificare se le viste materializzate sono utilizzate oppure no Si può vedere il piano d esecuzione delle interrogazioni abilitando l opzione autotrace di SQLPLUS SQLPLUS> set autotrace on; Paolo Garza 14

Estensioni al linguaggio SQL per l analisi dei dati presenti nei data warehouse Funzioni OLAP disponibili Finestre di calcolo window Funzioni di ranking rank, dense rank,... Estenzione della clausola group by rollup, cube,... Paolo Garza 15

Schema tabella Tabella d esempio VENDITE(Città, Data, Importo) Esempio di raggruppamento a livello fisico Selezionare per ogni data l importo e la media dell importo considerando la riga corrente e le due righe che la precedono Paolo Garza 16

Esempio di raggruppamento a livello fisico SELECT Data, Importo, AVG(Importo) OVER ( ORDER BY Data ROWS 2 PRECEDING ) AS MediaMobile FROM Vendite ORDER BY Data; Esempio di raggruppamento a livello logico Selezionare per ogni data l importo e la media dell importo considerando la riga corrente e le vendite avvenute nei due giorni precedenti Paolo Garza 17

Esempio di raggruppamento a livello logico SELECT Data, Importo, AVG(Importo) OVER ( ORDER BY Data RANGE BETWEEN INTERVAL 2 DAY PRECEDING AND CURRENT ROW ) AS MediaUltimi3Giorni FROM Vendite ORDER BY Data; Schema tabelle Tabelle d esempio FRN(COD_F, Nome, Sede_F, ) ART(COD_A, Tipo, Colore, Peso) PRG(COD_P, Nome, Sede_P) FAP(COD_F, COD_P, COD_A, Q) Paolo Garza 18

Esempio di ranking Selezionare per ogni articolo la quantità totale venduta e il ranking in funzione delle quantità totali vendute per ogni articolo Esempio di ranking SELECT COD_A, SUM(Q), RANK() OVER ( ORDER BY SUM(Q) ) AS RankVendite FROM FAP GROUP BY COD_A; Paolo Garza 19

Esempio di ranking COD_A SUM(Q) RankVendite --------------- ---------- ---------------- A2 300 1 A5 1100 2 A4 1300 3 A6 1300 3 A1 1900 5 A3 4500 6 Esempio di dense ranking SELECT COD_A, SUM(Q), DENSE_RANK() OVER ( ORDER BY SUM(Q) ) AS DenseRankVendite FROM FAP GROUP BY COD_A; Paolo Garza 20

Esempio di dense ranking COD_A SUM(Q) DenseRankVendite --------------- ---------- ----------------------- A2 300 1 A5 1100 2 A4 1300 3 A6 1300 3 A1 1900 4 A3 4500 5 Esempio di doppio ranking Selezionare per ogni articolo il codice, il peso, la quantità totale venduta, il ranking in funzione del peso e il ranking in funzione delle quantità totali vendute per ogni articolo Paolo Garza 21

Esempio doppio ranking SELECT ART.COD_A, ART.Peso, SUM(Q), RANK() OVER (ORDER BY ART.Peso ) AS R_Peso, RANK() OVER (ORDER BY SUM(Q) ) AS R_Vend FROM FAP,ART WHERE FAP.COD_A=ART.COD_A GROUP BY ART.COD_A, ART.Peso ORDER BY R_Peso; Esempio di doppio ranking COD_A PESO SUM(Q) R_Peso R_Vend ---------- -------- ---------- ----------- ----------- A1 12 1900 1 5 A5 12 1100 1 2 A4 14 1300 3 3 A2 17 300 4 1 A3 17 4500 4 6 A6 19 1300 6 3 Paolo Garza 22

Selezione Top N nel ranking Se voglio solo i primi due articoli nel ranking posso usare l interrogazione che calcola il ranking come sottointerrogazione e poi fare una selezione in base al campo di ranking La sottointerrogazione è specificata tra parentesi tonde subito dopo la FROM e viene utilizzata come se fosse una tabella Selezione Top N nel ranking SELECT * FROM (SELECT COD_A, SUM(Q), RANK() OVER (ORDER BY SUM(Q)) AS RankVendite FROM FAP GROUP BY COD_A) WHERE RankVendite<=2; Paolo Garza 23

Selezione Top N nel ranking SELECT * FROM (SELECT COD_A, SUM(Q), RANK() OVER (ORDER BY SUM(Q)) AS RankVendite FROM FAP GROUP BY COD_A) WHERE RankVendite<=2; Viene gestita come una tabella temporanea creata a runtime ed eliminata alla conclusione dell esecuzione della query principale Selezione Top N nel ranking COD_A SUM(Q) RankVendite --------------- ---------- ---------------- A2 300 1 A5 1100 2 Paolo Garza 24

ROW_NUMBER ROW_NUMBER all interno di ogni partizione assegna un numero progressivo ad ogni riga Esempio ROW_NUMBER Partizionare gli articoli in base alla tipologia e enumerare in modo progressivo i dati all interno di ogni partizione. All interno di ogni partizione i dati sono ordinati in base al peso. Paolo Garza 25

Esempio ROW_NUMBER SELECT Tipo, Peso, ROW_NUMBER OVER ( PARTITION BY Tipo ORDER BY Peso ) AS RowNumberPeso FROM ART; Esempio ROW_NUMBER Tipo Peso RowNumberPeso --------------- ---------- ------------------------- Barra 12 1 Partizione 1 Ingranaggio 19 1 Partizione 2 Vite 12 1 Partizione 3 Vite 14 2 Vite 16 3 Vite 16 4 Vite 16 5 Vite 16 6 Vite 17 7 Vite 17 8 Vite 18 9 Vite 20 10 Paolo Garza 26

CUME_DIST CUME_DIST all interno di ogni partizione (gruppo) viene assegnato un peso tra 0 e 1 ad ogni riga in funzione del numero di valori che precedono il valore assunto dal campo usato per effettuare l ordinamento all interno delle partizioni CUME_DIST Data una partizione contenente N dati, per ogni riga x calcolo CUME_DIST come CUME_DIST(x)=numero valori che precedono o hanno lo stesso valore assunto dal campo di ordinamento all interno di x diviso N Paolo Garza 27

Esempio CUME_DIST Partizionare gli articoli in base alla tipologia degli articoli ed effettuare un ordinamento nei gruppi in base al peso degli articoli. Associare ad ogni riga il rispettivo valore di CUME_DIST Esempio CUME_DIST SELECT Tipo, Peso, CUME_DIST() OVER ( PARTITION BY Tipo ORDER BY Peso ) AS CumePeso FROM ART; Paolo Garza 28

Esempio CUME_DIST Tipo Peso CumePeso --------------- ---------- ------------- Barra 12 1 ( = 1/1) Partizione 1 Ingranaggio 19 1 ( = 1/1) Partizione 2 Vite 12.1 ( = 1/10) Partizione 3 Vite 14.2 ( = 2/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 17.8 ( = 8/10) Vite 17.8 ( = 8/10) Vite 18.9 ( = 9/10) Vite 20 1 ( = 10/10) NTILE(n) NTILE permette di dividere ogni partizione in n sottogruppi (se possibile) ognuno con lo stesso numero di dati/record. Ad ogni sottogruppo viene associato un numero identificativo Paolo Garza 29

Esempio NTILE Partizionare gli articoli in base alla tipologia ed effettuare un ulteriore suddivisione in 3 sottogruppi ognuno contenente lo stesso numero di dati. All interno di ogni partizione i dati sono ordinati in base al peso degli articoli Esempio NTILE SELECT Tipo, Peso, NTILE(3) OVER ( PARTITION BY Tipo ORDER BY Peso ) AS Ntile3Peso FROM ART; Paolo Garza 30

Esempio NTILE Tipo Peso Ntile3Peso --------------- ---------- ------------- Barra 12 1 Partizione 1 Ingranaggio 19 1 Partizione 2 Vite 12 1 Partizione 3 Vite 14 1 Vite 16 1 Sottogruppo 1 Vite 16 1 Vite 16 2 Vite 16 2 Sottogruppo 2 Vite 17 2 Vite 17 3 Vite 18 3 Sottogruppo 3 Vite 20 3 Paolo Garza 31