Table of Contents
Concetti di base di Data Warehousing
Una solida comprensione dei dati che ripercuotono i fondamentali è la prima cosa che gli intervistatori valutano, è necessario non solo definire i termini, ma anche spiegare come si applicano negli scenari del mondo reale.
Cos'è un data warehouse?
Un data warehouse è un repository centralizzato che memorizza grandi volumi di dati strutturati e storici da sistemi di sorgenti multiple. E 'ottimo per query e analisi piuttosto che per il trattamento delle transazioni. I depositi di dati supportano attività di intelligence aziendale come reportage, dashboard e analisi ad-hoc.
Quali sono le caratteristiche chiave di un data warehouse?
- Ambito orientato al pubblico:[] Organizzato intorno a soggetti principali (ad esempio, clienti, prodotti, vendite) piuttosto che processi applicativi.
- Integrated:[] I dati provenienti da fonti disparate vengono purificati, trasformati e standardizzati in un formato coerente.
- Non volatile:[ I dati sono di sola lettura una volta caricati; i cambiamenti storici vengono tracciati tramite la versione, non sovrascritture.
- variante temporale:[] I dati contengono attributi di dimensione temporale (ad esempio, timbri di data, periodi) per sostenere l'analisi storica.
Come fa un data warehouse differire da un data lake?
Un data lake memorizza dati grezzi, non elaborati nel suo formato nativo (strutturato, semi-strutturato o non strutturato).Un data warehouse di dati elaborati, puliti e strutturati dati. Le organizzazioni spesso utilizzano sia: il lago per analisi esplorative e machine learning, sia il magazzino per la segnalazione strutturata.
Cos'è un Data Store Operativo (ODS)?
A differenza di un data warehouse, l'ODS viene aggiornato frequentemente (spesso in tempo reale) e in genere non mantiene istantanee storiche, funge da area di staging per la reportistica operativa prima che i dati vengano spostati nel data warehouse.
Modellazione dati in Data Warehousing
La modellazione dei dati è il modello di un data warehouse, due approcci comuni sono lo schema stellare e lo schema del fiocco di neve.
Cos'è uno schema stellare?
Lo schema stellare ha una tabella di fatto centrale collegata a una o più tabelle di dimensione tramite chiavi straniere. Le dimensioni sono denormalizzate (ad esempio, una tabella di dimensione del prodotto contenente categoria, marca e sottocategoria). Questa struttura semplifica le domande e migliora le prestazioni di lettura.
Cos'è uno schema di fiocco di neve?
Uno schema di fiocco di neve normalizza le tabelle di dimensione in più tabelle correlate. Ad esempio, una dimensione del prodotto potrebbe essere divisa in prodotti separati, brand e tabelle di categoria. Mentre questo riduce la ridondanza dei dati, aumenta il numero di uni e può rallentare le prestazioni di query.
Che cosa è una tabella di fatto? Quali sono i tipi di fatti?
Una tabella di fatto memorizza misure quantitative (ad esempio, quantità di vendita, quantità, profitto) e chiavi straniere che collegano alle tabelle di dimensione.
- Transactional[] – registra eventi individuali (ad esempio, ogni voce della linea di vendita).
- Istantanea periodica[[] – cattura misure a intervalli regolari (ad esempio, livelli di inventario giornalieri).
- Sistantanea accattivante[[] – traccia i processi con un inizio e una fine fissi (ad esempio, fasi di adempimento dell'ordine).
Gli intervistatori possono chiedere di scegliere il tipo di fatto appropriato per un determinato scenario di business.
Quali sono i tavoli di dimensione? Spiegare dimensioni conformi.
Le tabelle di dimensionamento contengono attributi descrittivi (ad esempio, nome del cliente, colore del prodotto, posizione del negozio). Le dimensioni conformi sono condivise in più tabelle di fatto all'interno di un data warehouse o in diverse caselle di dati. Essi garantiscono coerenza in modo che i rapporti possano essere combinati in modo significativo. Ad esempio, una dimensione della data utilizzata sia nelle tabelle di fatto di vendita che di inventario deve avere la stessa struttura e granulosità.
Lentamente cambiando dimensioni (SCD)
La gestione delle variazioni di dimensione degli attributi nel tempo è un'abilità critica nel design ETL.
Spiegare il tipo 1, il tipo 2 e il tipo 3 cambiando lentamente le dimensioni.
- Tipo 1:[] Sovrascrive il vecchio valore con il nuovo valore. Non viene conservata alcuna storia. Adatto quando non è richiesta l'accuratezza storica (ad esempio, correggere un typo in un nome del prodotto).
- Tipo 2:[] Aggiunge una nuova riga per monitorare il cambiamento, con intervalli di date efficaci (data di inizio, data di fine) e una bandiera corrente.
- Tipo 3:[] Aggiunge una nuova colonna per memorizzare il valore precedente mantenendo il valore corrente. Questo consente una storia limitata (solitamente una versione precedente).
Preparatevi a discutere i trade-off: il Type 2 aumenta il numero di righe ma dà il percorso completo di audit; il tipo 1 è semplice ma perde la storia.
Panoramica dei processi ETL
Il processo ETL è la colonna portante dell'integrazione dei dati, e la comprensione approfondita di ogni fase e delle sfide comuni è essenziale.
Spiegare ogni passo dell'ETL in dettaglio.
Estratto:[] I dati vengono estratti da vari sistemi sorgente — database relazionali, file piatti (CSV, JSON, XML), API, cloud storage o piattaforme di streaming. L'estrazione può essere completa (tutti i dati) o incrementale (solo nuovi/modificati record dall'ultima esecuzione).
[LT] I dati vengono puliti, convalidati e convertiti in un formato coerente. Le trasformazioni includono:
- ]
- Conversioni di tipo dati (ad esempio, stringa a data)
- Deduplicazione e null handling ]
- Data quality Issues[[] – valori mancanti, duplicati, formati inconsistenti. Mitigazione: implementare le regole di profilazione e validazione presto; utilizzare tabelle di staging per quarantena record cattivi.
- I colli di bottiglia di conformità[[[] – estrazione lenta dai sistemi sorgente, dalle trasformazioni pesanti o dai carichi inefficienti.
- Data volume development[[] – caricamento terabytes giornaliero. Mitigazione: implementare la potatura delle partizioni, la compressione e l'infrastruttura cloud scalabile.
- Requisiti di latenza dati[[ – bisogno di aggiornamenti in tempo reale. Mitigazione: utilizzare la cattura dei dati di cambiamento (CDC) e strumenti di ingestione di streaming (Kafka, Kinesis).
- Gestione della dipendenza[[[] – Lavori ETL che non riescono a causa di contenziosi delle risorse o conflitti di pianificazione.
- Estratto:[]] Utilizzare l'estrazione incrementale invece di carichi pieni; implementare CDC (ad esempio, a base di log o timestamp), utilizzare le utility di copia in massa.
- Trasformazione:[] Spingere trasformazioni laddove possibile (ad esempio, utilizzare SQL nel database); evitare operazioni di riga per riga; usare logica impostata; parallelizzare compiti indipendenti.
- Carico:[ Disattiva indici e vincoli durante il carico e ricostruisci dopo; usa gli inserti in batch; considera il commutatore di partizione per grandi tabelle.
- Infrastruttura:[[]] Usare SSD, risorse di calcolo della scala e utilizzare strati di caching.
- Utilizzare blocchi di tentativo e errori di registro in una tabella di errore separata con ID lavoro, timestamp, dati di riga e descrizione di errore.
- Definire le regole di qualità dei dati e rifiutare i record che non riescono a convalidare in una cartella di quarantena o in una tabella.
- Impostare avvisi (email, Slack) per guasti critici.
- L'implementazione di logica di riprova per errori transitori (oraggi di rete).
- Mantenere una tabella di storia di esecuzione per monitorare il successo / lo stato di difficoltà per ogni fase di lavoro.
- CDC basato su Log (ad esempio, Oracle GoldenGate, Debezium) ]
-
Domande di Intervista Avanzate
7. Come si progetta un processo ETL per un data warehouse che supporta sia in batch che in ingestione in tempo reale?
Per il lotto: programmare lavori notturni utilizzando carichi incrementali. Per il tempo reale: utilizzare uno strato di streaming (ad esempio, Kafka) per catturare eventi, quindi applicare trasformazioni leggere e caricare in una tabella di fatto in tempo reale o uno strato delta (ad esempio, in una casa lacustre). I percorsi batch e in tempo reale dovrebbero convergere nel magazzino utilizzando la logica upsert Structure.
8. Spiegare la linea di dati e perché è importante.
Il datalinege traccia l'origine, le trasformazioni e il movimento dei dati da fonte a destinazione. Aiuta nell'analisi degli impatti (quali rapporti a valle si rompono se una fonte cambia), debugging (per cui un valore è sbagliato), e auditing (conformità con regolamenti come GDPR o SOX). Strumenti come Apache Atlas, Marquez, o soluzioni commerciali (Collibra, Alation) forniscono lineage automatizzato.
9. Qual è la differenza tra un data warehouse e un data mart?
Un data mart è un sottoinsieme focalizzato su una singola funzione aziendale (ad esempio, vendite, finanza). I data mart possono essere costruiti in cima al magazzino (dipendente) o indipendentemente (dipendente). La scelta tra loro comporta trade-off in costi, governance e agilità.
10. Come si gestisce le dimensioni in ETL in modo da cambiare lentamente?
L'approccio dipende dal tipo SCD:
- Tipo 1:[] Usare le dichiarazioni di UPDATE per sovrascrivere il record.
- Tipo 2:[] Usare un MERGE (upsert) per chiudere la versione precedente (set end date) e inserire una nuova riga con data di inizio = ora e bandiera corrente = vera.
- Tipo 3:[] ABBIA la colonna corrente e sposta il vecchio valore nella colonna precedente.
Per dimensioni grandi, implementare una cache di ricerca per ridurre i viaggi rotondi del database. Inoltre, si consideri l'utilizzo di confronto hash per rilevare cambiamenti effettivi ed evitare aggiornamenti inutili.
ETL migliori pratiche
Gli intervistatori cercheranno di sperimentare la pratica. Menzione di queste migliori pratiche durante le discussioni:
- Diffusione di lavori ETL in componenti riutilizzabili (ad esempio, carico di staging riutilizzabile, libreria di trasformazione standard).
- Idempenza:[] Assicurarsi che il re-in esecuzione di un lavoro produce lo stesso risultato (non duplicati).
- Gestione dei dati:[] Mantenere un grafico di dipendenza dal processo e dal dizionario di dati.
- Monitoraggio delle prestazioni:[] Traccia metriche chiave: righe processate al minuto, durata, tassi di errore e skew.
- Controllo di domanda:[ Conservare il codice ETL in Git insieme a script SQL e file di configurazione.
- Testing:[]] Scrivere test di unità per trasformazioni, test di integrazione per condotte end-to-end e test di comparazione dei dati contro sorgente e obiettivo.
Riferire le risorse esterne per l'apprendimento approfondito: [IBM su ETL, []Snowflake: ETL vs ELT[, e Martin Fowler sui dati evolutivi.
Conclusioni
La padronanza delle interviste sui processi di data warehousing e ETL richiede conoscenze teoriche e esperienza pratica. Concentrati sui concetti fondamentali – caratteristiche del data warehouse, modellazione dimensionale, ottimizzazione SCD e ETL – e preparati a discutere le sfide del mondo reale con soluzioni specifiche.
Carico:[] I dati trasformati vengono inseriti nel data warehouse di destinazione. Strategie di caricamento: full rinfresco (truncate e ricarica), append incrementale e upsert (merge).
Qual è la differenza tra ETL e ELT?
ELT (Extract, Load, Transform) carica prima i dati grezzi e poi lo trasforma utilizzando la potenza di elaborazione del data warehouse (ad esempio, SQL o MapReduce). ELT è comune nei moderni data warehouse cloud come Snowflake, BigQuery e Redshift, dove lo storage e la compute vengono decoupled. ETL è ancora preferito quando le trasformazioni richiedono dati aziendali complessi.
Quali sono gli strumenti ETL comuni?
Gli strumenti più diffusi includono Informatica PowerCenter, Talend, IBM DataStage, Microsoft SSIS, Apache NiFi e servizi cloud-native come AWS Glue, Azure Data Factory e Google Dataflow. Opzioni open-source: Pentaho (Kettle), Apache Airflow (orchestrazione), e dbt (data build tool for transformation).
Domande e risposte dettagliate
1. Quali sono le principali sfide affrontate nei processi ETL, e come li mitigate?
Le sfide includono:
2. Come ottimizzare i processi ETL per le prestazioni?
L'ottimizzazione delle prestazioni abbraccia più aree:
3. Qual è la differenza tra i sistemi OLAP e OLTP?
OLTP (Online Transaction Processing) è progettato per operazioni ad alto volume, brevi e atomiche (ad esempio, voce dell'ordine, aggiornamenti dell'inventario). I dati sono normalizzati e le query toccano un piccolo numero di record. OLAP (Online Analytical Processing) è progettato per domande complesse che aggregano grandi volumi di dati storici.
4. Spiegare il concetto di chiavi surrogate vs chiavi naturali in data warehousing.
Una chiave surrogata è un identificatore univoco artificiale generato dal sistema (ad esempio, sequenza interi) utilizzato come chiave principale in una tabella di dimensione. Una chiave naturale è un identificatore di affari dalla fonte (ad esempio, codice prodotto, ID cliente). Le chiavi di Surrogate sono raccomandate perché sono stabili (le chiavi di affari possono cambiare, causando effetti di increspatura), supportano SCD Type 2 (le righe multiple per chiave di controllo), e migliorano le prestazioni.
5. Come si gestisce la gestione degli errori in un eTL pipeline?
Implementare un solido framework di gestione degli errori:
6. Che cosa è la cattura dei dati di cambiamento (CDC)?
CD-LT è una tecnica per catturare i cambiamenti (inserti, aggiornamenti, cancellazioni) nei dati di origine e applicarli a un sistema di destinazione. I metodi includono: