Parte III — Progettazione logica · Capitolo 12

Viste materializzate e scenari temporali

~45 min di lettura6 widget interattivi9 tavole

In questo capitolo

  1. Le viste: fact table con dati aggregati
  2. Aggregazioni parziali: misure derivate
  3. Le misure di supporto
  4. Classificazione degli operatori di aggregazione
  5. Schemi relazionali e viste
  6. L'aggregate navigator
  7. La scelta delle viste da materializzare
  8. Frammentazione orizzontale e verticale
  9. Scenari temporali: attualizzazione, verità storica, retrodatazione
  10. Gerarchie dinamiche: tipo I, II e III
  11. Verifica le tue conoscenze

Il capitolo 11 ha tradotto gli schemi di fatto in schemi relazionali; questo capitolo completa la progettazione logica con gli ultimi due passi della metodologia — la scelta delle viste da materializzare e le altre forme di ottimizzazione — e affronta poi il problema che il modello multidimensionale aveva rimandato: le gerarchie dinamiche. Le viste materializzate sono la risposta logica al carico di lavoro del capitolo 10: dati aggregati precalcolati che riducono il costo delle interrogazioni frequenti. Gli scenari temporali sono invece la risposta a una domanda scomoda: che cosa succede quando i valori delle gerarchie cambiano nel tempo? Le slide rispondono con tre scenari e tre tipi di gerarchie dinamiche — la materia degli ultimi quesiti d'esame di questa parte del corso.

1. Le viste: fact table con dati aggregati

L'analisi dei dati al massimo livello di dettaglio è spesso troppo complessa e non interessante per gli utenti, che richiedono dati di sintesi. L'aggregazione rappresenta il principale strumento per ottenere informazioni di sintesi — ma ha un elevato costo computazionale, che induce a precalcolare i dati di sintesi maggiormente utilizzati.

Definizione — vista

Con il termine vista si denotano le fact table contenenti dati aggregati. Le viste possono essere identificate in base al livello (group-by set) di aggregazione che le caratterizza.

Nell'esempio delle slide, la vista di base v₁ è la fact table alla granularità più fine {prodotto, data, negozio}; da essa si possono definire viste via via più aggregate:

VistaGroup-by set
v₁{prodotto, data, negozio}
v₂{tipo, data, città}
v₃{categoria, mese, città}
v₄{tipo, mese, regione}
v₅{trimestre, regione}
v₁ {prodotto, data, negozio} v₂ {tipo, data, città} v₃ {categoria, mese, città} v₄ {tipo, mese, regione} v₅ {trimestre, regione} ogni vista è una fact table con dati aggregati, identificata dal proprio group-by set
Tavola 12.1 — Le viste come fact table con dati aggregati. Ogni vista è identificata dal proprio group-by set; le frecce indicano la direzione dell'aggregazione (dalla vista più fine alle viste più sintetiche).
Nota del redattore

Ogni vista è una fact table a sé: ha le sue dimension table (o le condivide, come vedremo nella sezione 5) e contiene una riga per ogni combinazione dei valori del suo group-by set. La risolvibilità del capitolo 10 dice esattamente quali interrogazioni ciascuna vista può servire: la v₃, per esempio, può risolvere un'interrogazione su {categoria, trimestre, regione} aggregando le sue righe.

2. Aggregazioni parziali: misure derivate

Per la corretta gestione dei dati aggregati può essere necessario introdurre nuove misure. Le misure derivate si ottengono applicando operatori matematici a due o più valori appartenenti alla stessa tupla — per esempio l'incasso è il prodotto di quantità per prezzo.

DATI ALLA GRANULARITÀ PRODOTTO AGGREGATI PER TIPO Tipo Prodotto Quantità Prezzo Incasso T1 P1 5 1,00 5,00 T1 P2 7 1,50 10,50 T2 P3 9 0,80 7,20 Tipo Quantità Prezzo Incasso T1 12 1,25 15,00 T2 9 0,80 7,20 Sum AVG 22,20 ? il vero totale è 22,70 aggregare l'incasso dai dati parzialmente aggregati (SUM delle medie) dà un risultato errato la soluzione corretta è sempre quella che si ottiene aggregando i dati direttamente dalla vista primaria
Tavola 12.2 — Aggregazione parziale di una misura derivata. La misura incasso = quantità × prezzo non può essere ricostruita aggregando quantità (SUM) e prezzo (AVG): il risultato 22,20 è sbagliato. Il totale corretto, 22,70, si ottiene solo aggregando gli incassi della vista primaria.

La lezione è duplice. Prima: le misure derivate vanno aggregate come misure, non ricostruite dalle loro componenti dopo l'aggregazione. Seconda: quando una vista materializzata non contiene la misura richiesta, l'aggregazione parziale può produrre errori — ed è questo il motivo per cui le viste si scelgono in base al carico di lavoro (sezione 7).

3. Le misure di supporto

Le misure di supporto sono necessarie in presenza di operatori di aggregazione non distributivi. L'esempio delle slide è la media del livello di inventario: la media dei livelli di un trimestre non si può calcolare dalla media dei livelli dei mesi — serve anche il conteggio dei valori che hanno contribuito a ciascuna media parziale.

DATI PRIMARI AGGREGATI PER TRIMESTRE ANNO Data Livello di inventario 1/1/1999 100 10/2/1999 200 31/4/1999 60 5/6/1999 85 18/7/1999 125 31/12/1999 110 Trimestre Livello Count 4/1999 120 3 8/1999 105 2 12/1999 110 1 1999 111,66 113,33 media delle medie = 111,66 media corretta = 113,33 la media richiede il numero dei dati elementari che hanno contribuito a formare ciascun dato parzialmente aggregato
Tavola 12.3 — Le misure di supporto. La media annuale (113,33) non coincide con la media delle medie trimestrali (111,66): per aggregare correttamente una media serve il conteggio dei valori elementari, da memorizzare come misura di supporto nella vista.

La media corretta si calcola come somma dei valori elementari diviso il numero dei valori elementari — e la somma dei valori elementari si ottiene moltiplicando ogni media parziale per il suo count. Senza il count, l'aggregazione della media è impossibile: la misura di supporto è l'informazione aggiuntiva che rende l'operatore algebrico aggregabile.

4. Classificazione degli operatori di aggregazione

I problemi visti nelle sezioni 2 e 3 derivano dalla natura degli operatori di aggregazione, che le slide classificano in tre categorie:

CategoriaDefinizioneEsempi
Distributivi Permettono di calcolare dati aggregati a partire direttamente da dati parzialmente aggregati somma, massimo, minimo
Algebrici Richiedono un numero finito di informazioni aggiuntive (le misure di supporto) per calcolare dati aggregati a partire da dati parzialmente aggregati media — richiede il numero dei dati elementari che hanno contribuito a formare un singolo dato parzialmente aggregato
Olistici Non permettono di calcolare dati aggregati a partire da dati parzialmente aggregati, nemmeno con un numero finito di informazioni aggiuntive mediana, moda
Per l'esame

Il quesito classico chiede di classificare un operatore: SUM, MAX, MIN sono distributivi; AVG è algebrico (ha bisogno del count come misura di supporto); MEDIAN e MODE sono olistici. La distinzione ha conseguenze pratiche immediate: gli aggregate navigator dei sistemi commerciali gestiscono solo gli operatori distributivi, riducendo così l'utilità delle misure di supporto (sezione 6).

Esercizio: che operatore è?

Classificate l'operatore di aggregazione descritto.

5. Schemi relazionali e viste

Come si memorizzano le viste in uno schema relazionale? Le slide presentano quattro soluzioni, in ordine crescente di costo e prestazioni.

1. Un'unica fact table

La soluzione più semplice consiste nell'utilizzare lo schema a stella memorizzando tutti i dati in una sola fact table. Svantaggi: la dimensione dell'unica fact table cresce considerevolmente a discapito delle prestazioni; le dimension table contengono tuple relative a diversi livelli di aggregazione, e il valore NULL viene utilizzato per identificare l'origine delle tuple. Nell'esempio delle slide, la dimension table Prodotti contiene righe con Prodotto = '-' per rappresentare il livello aggregato per tipo, categoria o fornitore.

2. Snowflake con fact table separate

Adottando lo snowflake schema è possibile memorizzare in fact table separate dati appartenenti a diversi group-by set. La regola: lo snowflaking deve essere applicato in corrispondenza dei livelli di aggregazione a cui sono presenti viste — la dimension table secondaria della vista primaria coincide con la dimension table primaria della vista secondaria.

3. Constellation schema

Una soluzione intermedia prevede di memorizzare in fact table separate dati relativi a group-by set diversi senza però ricorrere alla normalizzazione delle dimension table (constellation schema): l'accesso alle fact table è ottimizzato, quello alle dimension table no. Le fact table sono di dimensione di molto superiore a quella delle dimension table, e conseguentemente la loro ottimizzazione gioca un ruolo fondamentale.

4. Replicazione completa delle dimension table

Il massimo livello delle prestazioni si ottiene memorizzando in fact table separate dati a diversi livelli di aggregazione e replicando completamente anche le dimension table: ogni vista ha le sue dimension table private, senza condivisioni. È la soluzione più costosa in spazio e la più veloce in esecuzione.

Unica fact table NULL = origine Snowflake DT condivise per livello Constellation FT separate, DT no Replicazione FT e DT separate da sinistra a destra: più spazio, più prestazioni lo snowflaking si applica in corrispondenza dei livelli di aggregazione a cui sono presenti viste la dimension table secondaria della vista primaria coincide con la primaria della vista secondaria
Tavola 12.4 — Le quattro soluzioni per memorizzare le viste. Il trade-off è sempre lo stesso: spazio contro prestazioni, con la condivisione delle dimension table come leva intermedia.

Esercizio: quale soluzione per le viste?

Data la situazione, scegliete la soluzione di memorizzazione delle viste più adatta.

6. L'aggregate navigator

La presenza di più fact table contenenti i dati necessari a risolvere una data interrogazione pone il problema di determinare la vista che determinerà il minimo costo di esecuzione.

Definizione — aggregate navigator

Gli aggregate navigator sono i moduli preposti a riformulare le interrogazioni OLAP sulla «migliore» vista a disposizione. Gli aggregate navigator dei sistemi commerciali gestiscono attualmente solo gli operatori distributivi, riducendo così l'utilità delle misure di supporto.

Il legame con il capitolo 10 è diretto: l'aggregate navigator usa la risolvibilità per capire quali viste possono rispondere a un'interrogazione, e sceglie quella che minimizza il costo di esecuzione — tipicamente la più piccola fra quelle che la risolvono. Il vincolo sugli operatori distributivi è la ragione pratica per cui, come visto nella sezione 4, le misure di supporto restano sulla carta: un navigator che non sa aggregare le medie non può servire interrogazioni con AVG da viste parzialmente aggregate.

Interrogazione group-by set q Aggregate navigator risolvibilità + costo Vista migliore costo minimo Viste materializzate v₁ … v₅, con i propri group-by set l'aggregate navigator riformula l'interrogazione sulla «migliore» vista a disposizione gestisce solo gli operatori distributivi: le misure di supporto restano inutilizzate
Tavola 12.5 — L'aggregate navigator. Fra le viste materializzate che risolvono l'interrogazione (risolvibilità del capitolo 10), il navigator sceglie quella che minimizza il costo di esecuzione e riformula la query su di essa.

7. La scelta delle viste da materializzare

La scelta delle viste da materializzare è un compito complesso: la soluzione rappresenta un trade-off tra numerosi requisiti in contrasto:

  1. minimizzazione di funzioni di costo — il costo di esecuzione del carico di lavoro (meno viste = costo maggiore, più viste = costo minore);
  2. vincoli di sistema — lo spazio su disco disponibile e il tempo a disposizione per l'aggiornamento dei dati;
  3. vincoli utente — il tempo massimo di risposta delle interrogazioni e la freschezza dei dati.

Il capitolo 10 ha introdotto le viste candidate: le viste potenzialmente utili a ridurre il costo di esecuzione del carico di lavoro, ricavate dal reticolo multidimensionale. La scelta vera e propria seleziona fra le candidate quelle da materializzare davvero, rispettando i vincoli. Le slide danno i criteri:

IL TRADE-OFF DELLA SCELTA Minimizzazione di funzioni di costo Vincoli di sistema spazio disco · tempo aggiorn. Vincoli utente tempo risposta · freschezza q₁ · q₂ · q₃ → viste candidate materializzare quando: risolve direttamente un'interrogazione frequente; permette di ridurre il costo di esecuzione di molte interrogazioni non materializzare: group-by set simile a uno già materializzato · molto fine · riduzione < un ordine di grandezza
Tavola 12.6 — La scelta delle viste da materializzare come trade-off fra minimizzazione del costo, vincoli di sistema e vincoli utente. Le interrogazioni q₁…q₃ del carico di lavoro individuano le viste candidate; i criteri delle slide decidono quali materializzare davvero.
Quando è utile materializzare una vista
Quando non è consigliabile materializzare una vista

Esercizio: materializzare o no?

Data la situazione descritta, decidete se materializzare la vista e perché.

8. Frammentazione orizzontale e verticale

Con il termine frammentazione si intende la suddivisione delle fact table (primarie e secondarie) in più frammenti, al fine di aumentare le prestazioni del sistema. Le specifiche caratteristiche dei DW — ridondanza dei dati, cubi correlati, e così via — rendono particolarmente utile questa forma di ottimizzazione.

Definizione — frammentazione orizzontale e verticale

La frammentazione orizzontale suddivide la relazione in più parti, ognuna delle quali contiene tutti gli attributi ma solo una parte delle tuple di quella di origine. La frammentazione verticale suddivide la relazione in più parti, ognuna delle quali contiene tutte le tuple ma solo una parte degli attributi di quella di origine.

La frammentazione orizzontale

La frammentazione verticale

ORIZZONTALE frammento per mese frammento per trimestre tutti gli attributi, solo parte delle tuple VERTICALE chiavi + misure più usate chiavi + misure per carico specifico tutte le tuple, solo parte degli attributi orizzontale: nessun costo di spazio · verticale: replica delle chiavi, ma si evita di materializzare misure inutili
Tavola 12.7 — Frammentazione orizzontale (per condizioni di selezione, tipicamente il tempo) e verticale (per misure utili a un carico di lavoro specifico). La prima non costa spazio, la seconda replica le chiavi ma evita di materializzare misure inutili.

Esercizio: orizzontale o verticale?

Data la situazione descritta, scegliete la forma di frammentazione appropriata.

9. Scenari temporali: attualizzazione, verità storica, retrodatazione

Il modello multidimensionale assume che gli eventi che istanziano un fatto siano dinamici, e che i valori degli attributi che popolano le gerarchie siano statici. Questa visione non è realistica: anche i valori presenti nelle gerarchie variano nel tempo, dando vita alle gerarchie dinamiche (slowly-changing dimension). L'adozione di gerarchie dinamiche implica un sovraccosto in termini di spazio e può comportare una forte riduzione delle prestazioni.

Il problema si pone in termini precisi: quando la configurazione di una gerarchia cambia, come si interpretano gli eventi passati? Le slide definiscono tre scenari temporali:

ScenarioNomeInterpretazione dei datiImplementabile
Oggi per ieri attualizzazione I dati vengono interpretati in base all'attuale configurazione della gerarchia Sullo schema a stella
Oggi o ieri verità storica I dati vengono interpretati in base alla configurazione valida al momento in cui sono stati registrati Sullo schema a stella
Ieri per oggi retrodatazione I dati vengono interpretati in base alla configurazione della gerarchia valida in un particolare istante Richiede la storicizzazione dei dati

L'esempio delle slide segue il responsabile di quattro negozi nell'arco di un anno, mentre i negozi cambiano responsabile (NonSoloPane passa da Bianchi a Rossi l'1/7/2011; DiTutto passa da Rossi a Bianchi l'1/1/2012; nasce DiTuttoDiPiù). Sui dati di vendita registrati nel periodo, l'incasso totale per responsabile calcolato al 16/7/2011 è diverso a seconda dello scenario:

INCASSI PER RESPONSABILE (al 16/7/2011) attualizzazione (oggi per ieri) verità storica (oggi o ieri) retrodatazione (ieri per oggi, al 25/6/2011) Rossi 100 · Bianchi 30 Rossi 65 · Bianchi 65 Rossi 40 · Bianchi 90 attualizzazione: tutte le vendite di NonSoloPane a Rossi (responsabile attuale) verità storica: le vendite seguono il responsabile in carica alla data dell'evento retrodatazione: si usa la configurazione valida al 25/6/2011, prima del passaggio di NonSoloPane il totale complessivo (130) è identico: cambia la distribuzione per responsabile
Tavola 12.8 — Gli incassi per responsabile nei tre scenari temporali. Gli stessi eventi producono totali diversi per responsabile: la scelta dello scenario è una decisione di progetto, non un dettaglio implementativo.

Simulazione: i tre scenari sul caso NonSoloPane

Avanzate gli scenari e osservate come cambiano gli incassi per responsabile.

10. Gerarchie dinamiche: tipo I, II e III

I tre scenari temporali si realizzano con tre tipi di gerarchie dinamiche, che differiscono per come la dimension table registra i cambiamenti.

Tipo I — sovrascrittura

Le gerarchie dinamiche di tipo I supportano solo lo scenario oggi per ieri: tutti gli eventi, anche quelli passati, vengono interpretati in base all'attuale configurazione delle gerarchie, senza tenere traccia del passato. La soluzione è realizzabile sullo schema a stella sovrascrivendo il vecchio valore con quello nuovo ogni volta che si verifica un cambiamento: quando NonSoloPane passa a Rossi, la riga della dimension table viene aggiornata, e tutte le vendite di NonSoloPane vengono attribuite a Rossi — anche quelle effettuate durante la gestione di Bianchi.

Tipo II — nuovo record

Le gerarchie dinamiche di tipo II supportano solo lo scenario oggi o ieri, e consentono di registrare la verità storica: gli eventi memorizzati nella fact table vengono associati ai dati dimensionali che erano validi quando si è verificato l'evento. Ogni modifica a una gerarchia comporta l'inserimento di un nuovo record che codifichi le nuove caratteristiche nella dimension table corrispondente: dopo l'1/7/2011 i record della fact table relativi a NonSoloPane importeranno il valore di chiaveN = 4 (la nuova riga con Rossi). Nota delle slide: solo le selezioni su campi che hanno subito modifiche sono sensibili alle modifiche stesse. È possibile adottare strategie diverse per attributi appartenenti alla stessa gerarchia.

Tipo III — storicizzazione

Le gerarchie dinamiche di tipo III supportano tutti gli scenari temporali. La loro adozione richiede la storicizzazione dell'attributo e non può pertanto essere basata sul classico schema a stella. Gli elementi necessari sono:

In uno schema così modificato, la dinamicità viene gestita aggiungendo, per ogni modifica, un nuovo record nella dimension table e aggiornando di conseguenza i valori dei time-stamp e dell'attributo master. La tabella Negozi del tipo III, al 1/1/2012, contiene sette righe: le tre originali, il nuovo NonSoloPane–Rossi (valido dall'1/7/2011), PaneEPizza–Rossi (dall'1/11/2011), DiTuttoDiPiù–Rossi (dall'1/1/2012) e il DiTutto–Bianchi aggiornato.

TIPO I — sovrascrittura TIPO II — nuovo record TIPO III — time-stamp + master chiaveN negozio responsabile 1 DiTutto Rossi 2 NonSoloPile Bianchi 3 NonSoloPane Rossi chiaveN negozio responsabile 1 DiTutto Rossi 2 NonSoloPile Bianchi 3 NonSoloPane Bianchi 4 NonSoloPane Rossi chiaveN negozio resp. da a Master 1 DiTutto Rossi 1/1/11 31/12/11 1 3 NonSoloPane Bianchi 1/1/11 30/6/11 3 4 NonSoloPane Rossi 1/7/11 31/10/11 3 7 DiTutto Bianchi 1/1/12 — 1 tipo I: il vecchio valore è perso · tipo II: la verità storica è preservata, la riga cresce tipo III: ogni modifica è una riga con intervallo di validità e attributo master oggi per ieri: tuple attualmente valide · oggi o ieri: come tipo II ieri per oggi: tuple valide in un istante prefissato (retrodatazione)
Tavola 12.9 — I tre tipi di gerarchie dinamiche sulla dimensione Negozi. Tipo I: sovrascrittura, nessun passato. Tipo II: un record per configurazione, verità storica. Tipo III: intervallo di validità e master, tutti gli scenari.

Con la soluzione di tipo III è facile realizzare i differenti scenari:

Verifica le tue conoscenze

Che cos'è una vista e come si identifica?

Con il termine vista si denotano le fact table contenenti dati aggregati, identificate in base al group-by set di aggregazione che le caratterizza. Esempio: v₁ = {prodotto, data, negozio}, v₃ = {categoria, mese, città}, v₅ = {trimestre, regione}. Le viste precalcolano i dati di sintesi maggiormente utilizzati, perché l'aggregazione ha un costo computazionale elevato.

Che cosa sono le misure derivate e perché la loro aggregazione parziale è insidiosa?

Le misure derivate si ottengono applicando operatori matematici a due o più valori della stessa tupla (es. incasso = quantità × prezzo). Aggregare una misura derivata da dati parzialmente aggregati produce errori: nel caso delle slide, aggregando quantità (SUM) e prezzo (AVG) per tipo si ottiene un incasso di 22,20 contro il valore corretto 22,70. La soluzione corretta è sempre aggregare i dati direttamente dalla vista primaria.

Che cosa sono le misure di supporto e quando servono?

Sono informazioni aggiuntive necessarie in presenza di operatori di aggregazione non distributivi: per esempio il conteggio dei valori elementari che hanno contribuito a una media parziale. Senza il count, la media annuale del livello di inventario (113,33) non si può ricavare dalla media delle medie trimestrali (111,66).

Come si classificano gli operatori di aggregazione?

In tre categorie. Distributivi: calcolano dati aggregati direttamente da dati parzialmente aggregati (somma, massimo, minimo). Algebrici: richiedono un numero finito di informazioni aggiuntive, le misure di supporto (media → count). Olistici: non lo permettono nemmeno con un numero finito di informazioni aggiuntive (mediana, moda).

Quali sono le quattro soluzioni per memorizzare le viste in uno schema relazionale?

(1) Unica fact table con NULL per identificare l'origine delle tuple ai diversi livelli; (2) snowflake con fact table separate, con lo snowflaking applicato in corrispondenza dei livelli a cui sono presenti viste; (3) constellation schema: fact table separate senza normalizzare le dimension table; (4) replicazione completa delle dimension table per ogni vista. Da sinistra a destra: più spazio, più prestazioni.

Che cos'è l'aggregate navigator e qual è il suo limite?

È il modulo preposto a riformulare le interrogazioni OLAP sulla «migliore» vista a disposizione, cioè quella che determina il minimo costo di esecuzione. Il limite: gli aggregate navigator dei sistemi commerciali gestiscono solo gli operatori distributivi, riducendo così l'utilità delle misure di supporto.

Quali requisiti in contrasto bilancia la scelta delle viste da materializzare?

Tre: la minimizzazione di funzioni di costo (il costo di esecuzione del carico di lavoro); i vincoli di sistema (spazio su disco e tempo a disposizione per l'aggiornamento dei dati); i vincoli utente (tempo massimo di risposta e freschezza dei dati). È utile materializzare una vista che risolve direttamente un'interrogazione frequente o riduce il costo di molte interrogazioni; non conviene se il group-by set è simile a uno già materializzato, molto fine, o se non riduce di almeno un ordine di grandezza il costo.

Che differenza c'è fra frammentazione orizzontale e verticale?

La orizzontale divide la relazione in parti con tutti gli attributi ma solo una parte delle tuple, in base alle condizioni di selezione più usate (tipicamente il tempo); non comporta costi aggiuntivi di spazio e facilita la gestione degli aggiornamenti. La verticale divide in parti con tutte le tuple ma solo una parte degli attributi (le misure utili per uno specifico carico di lavoro); può richiedere spazio aggiuntivo per la replica delle chiavi, ma evita di materializzare misure inutili.

Quali sono i tre scenari temporali e come interpretano i dati?

Oggi per ieri (attualizzazione): i dati vengono interpretati in base all'attuale configurazione della gerarchia; implementabile sullo schema a stella. Oggi o ieri (verità storica): i dati vengono interpretati in base alla configurazione valida al momento in cui sono stati registrati; implementabile sullo schema a stella. Ieri per oggi (retrodatazione): i dati vengono interpretati in base alla configurazione valida in un particolare istante; richiede la storicizzazione dei dati.

Quali sono i tre tipi di gerarchie dinamiche e che cosa supportano?

Tipo I: sovrascrive il vecchio valore, supporta solo oggi per ieri, nessuna traccia del passato. Tipo II: inserisce un nuovo record per ogni modifica, supporta oggi o ieri (verità storica); solo le selezioni su campi modificati sono sensibili alle modifiche. Tipo III: aggiunge per ogni modifica un record con marche temporali (da, a) e attributo master; supporta tutti gli scenari, incluso ieri per oggi.

Come si realizza lo scenario ieri per oggi con gerarchie di tipo III?

Fissata una particolare data, si individuano le tuple della dimension table valide in quel momento (in base ai time-stamp), quindi si procede come per l'attualizzazione. In SQL si usa un doppio self-join: la tupla N1 valida alla data (N1.Da ≤ data AND N1.A > data) viene collegata, tramite l'attributo Master, alle tuple N2 che la fact table importa (Vendite.ChiaveN = N2.ChiaveN).