Dimensioni che cambiano lentamente (SCD) – dimensioni che cambiano lentamente nel tempo, piuttosto che cambiare in base al calendario regolare, time-base. In Data Warehouse è necessario tenere traccia delle modifiche negli attributi delle dimensioni per segnalare i dati storici. In altre parole, l’implementazione di uno dei tipi SCD dovrebbe consentire agli utenti di assegnare il valore dell’attributo della dimensione corretta per una determinata data. Esempio di tali dimensioni potrebbe essere: cliente, geografia, dipendente.,
Ci sono molti approcci su come affrontare SCD. I più popolari sono:
- Tipo 0 – Il metodo passivo
- Tipo 1 – Sovrascrivendo il vecchio valore
- Tipo 2 – Creazione di un nuovo record aggiuntivo
- Tipo 3 – Aggiunta di una nuova colonna
- Tipo 4 – Utilizzo di tabella storica
- Tipo 6 – Combinare approcci di tipi 1,2,3 (1+2+3=6)
Digitare 0 – Il metodo passivo. In questo metodo non viene eseguita alcuna azione speciale su cambiamenti dimensionali. Alcuni dati di dimensione possono rimanere gli stessi inseriti per la prima volta, altri possono essere sovrascritti.,
Tipo 1-Sovrascrivendo il vecchio valore. In questo metodo non viene mantenuta alcuna cronologia delle modifiche alle dimensioni nel database. Il vecchio valore della dimensione viene semplicemente sovrascritto come quello nuovo. Questo tipo è facile da mantenere e viene spesso utilizzato per i dati le cui modifiche sono causate dall’elaborazione di correzioni (ad esempio rimozione di caratteri speciali, correzione di errori di ortografia).,
Prima della modifica:
Customer_ID | Customer_Name | Tipo_cliente |
---|---|---|
1 | Cust_1 | Aziendale |
Dopo la modifica:
Customer_ID | Customer_Name | Tipo_cliente |
---|---|---|
1 | Cust_1 | Retail |
Digitare 2 – Creazione di un nuovo record., In questa metodologia tutta la cronologia delle modifiche alle dimensioni è conservata nel database. È possibile acquisire la modifica degli attributi aggiungendo una nuova riga con una nuova chiave surrogata alla tabella delle dimensioni. Sia le righe precedenti che quelle nuove contengono come attributi la chiave naturale (o un altro identificatore durevole). In questo metodo vengono utilizzate anche le colonne “data effettiva” e “indicatore corrente”. Potrebbe esserci un solo record con l’indicatore corrente impostato su ‘Y’. Per le colonne’ data effettiva’, ad esempio start_date e end_date, end_date per il record corrente di solito è impostato sul valore 9999-12-31., L’introduzione di modifiche al modello dimensionale nel tipo 2 potrebbe essere un’operazione di database molto costosa, quindi non è consigliabile utilizzarlo in dimensioni in cui un nuovo attributo potrebbe essere aggiunto in futuro.,
Prima della modifica:
Customer_ID | Customer_Name | Tipo_cliente | Data_inizio | End_Date | Current_Flag |
---|---|---|---|---|---|
1 | Cust_1 | Aziendale | 22-07-2010 | 31-12-9999 | Y |
Dopo la modifica:
Tipo 3 – Aggiunta di una nuova colonna. In questo tipo di solito solo il valore corrente e precedente della dimensione viene mantenuto nel database., Il nuovo valore viene caricato nella colonna’ current/new ‘e quello vecchio nella colonna ‘old / previous’. In generale, la cronologia è limitata al numero di colonne create per la memorizzazione dei dati storici. Questa è la tecnica meno comunemente necessaria.,iv id=”2f5bdb6350″>
Dopo la modifica:
Customer_ID | Customer_Name | Current_Type | Previous_Type |
---|---|---|---|
1 | Cust_1 | Retail | Aziendale |
Tipo 4 – Utilizzo di tabella storica., In questo metodo viene utilizzata una tabella storica separata per tenere traccia delle modifiche storiche degli attributi di tutte le dimensioni per ciascuna dimensione. La tabella delle dimensioni ‘principale’ mantiene solo i dati correnti, ad esempio le tabelle customer e customer_history.
Corrente tabella:
Customer_ID | Customer_Name | Tipo_cliente |
---|---|---|
1 | Cust_1 | Aziendale |
tabella Storica:
Tipo 6 – Combinare approcci di tipi 1,2,3 (1+2+3=6)., In questo tipo abbiamo nella tabella delle dimensioni colonne aggiuntive come:
- current_type – per mantenere il valore corrente dell’attributo. Tutti i record della cronologia per un determinato elemento di attributo hanno lo stesso valore corrente.
- historical_type – per mantenere il valore storico dell’attributo. Tutti i record della cronologia per un determinato elemento di attributo potrebbero avere valori diversi.
- start_date-per mantenere la data di inizio della’ data effettiva ‘ della cronologia degli attributi.
- end_date-per mantenere la data di fine della’ data effettiva ‘ della cronologia degli attributi.,
- current_flag-per mantenere le informazioni sul record più recente.
In questo metodo per catturare la modifica degli attributi aggiungiamo un nuovo record come nel tipo 2. Le informazioni current_type vengono sovrascritte con quella nuova come nel tipo 1. Memorizziamo la cronologia in un historical_column come nel tipo 3.