2009-08-24 12 views
11

Sto scrivendo un ETL (in python con un backend mongodb) e mi chiedevo: che tipo di funzioni e strumenti standard un ETL dovrebbe essere chiamato ETL?Quali sono le funzionalità richieste dei framework ETL?

Questo ETL avrà lo scopo più generale possibile, con un approccio basato su script e modulare. Principalmente verrà utilizzato per mantenere sincronizzati diversi database e per importare/esportare set di dati in diversi formati (xml e csv) Non ho bisogno di strumenti multidimensionali, ma è una possibilità che servirà in seguito.

+0

Quali casi di utilizzo hai in questo momento? Cosa ti serve che faccia? Si prega di elencare i casi d'uso attuali in modo che possiamo commentare su quelli. –

risposta

16

Pensiamo ai casi d'uso ETL per un momento.

  1. Estratto.
    • Leggere i database tramite un adattatore DB-API generico.
    • Leggere file flat tramite un adattatore simile.
    • Leggere fogli di calcolo tramite un adattatore simile.
  2. Pulire.
    • regole arbitrarie
    • Filtrare e rifiutare
    • Sostituire
    • aggiungere colonne dei dati
  3. Profilo dati.
    • Tabelle di frequenza statistica.
  4. Trasforma (vedi pulire, sono due casi d'uso con la stessa implementazione)
  5. fare ricerche di conformità dimensionali.
    • Sostituire valori o aggiungere valori.
  6. Aggregato.
    • In qualsiasi punto in cantiere
  7. carico.
    • Oppure preparare un file flat ed eseguire il caricatore del prodotto DB.

Inoltre, ci sono alcuni requisiti aggiuntivi che non sono casi d'uso singola.

  • Ogni singola operazione deve essere un processo separato che può essere collegato in una pipeline Unix, con singoli record che scorre da un processo all'altro. Questo utilizza tutte le risorse della CPU.

  • È necessario un qualche tipo di pianificazione temporale per luoghi che hanno difficoltà a risolvere le loro precondizioni ETL.

  • È necessario un programma basato su eventi per i punti in cui è possibile individuare le condizioni preliminari per le fasi di elaborazione ETL.

Nota. Dato che ETL è vincolato all'I/O, più thread non ti servono. Poiché ogni processo viene eseguito per un lungo periodo di tempo, soprattutto se si dispone di migliaia di righe di dati da elaborare, il sovraccarico dei processi "pesanti" non guasta.

4

Ecco un elenco casuale, in nessun ordine particolare:

  1. Connessione a una vasta gamma di fonti, tra cui tutti i principali database relazionali.
  2. Gestire origini dati non relazionali come file di testo, Excel, XML, ecc.
  3. Consentire più origini di essere mappate in una singola destinazione.
  4. Fornire uno strumento per facilitare la mappatura dai campi di origine a quelli di destinazione.
  5. Offrire una struttura per l'iniezione di trasformazioni a piacere.
  6. API programmabile per la scrittura di trasformazioni complesse.
  7. Ottimizza il processo di caricamento per la velocità.
+0

Mi piacerebbe vedere "grafico" rimosso da # 4. Mentre le immagini sono carine, finiamo sempre per leggere il codice per vedere cosa sta succedendo * realmente *. –

+0

@S. Lott - Fatto. – duffymo

0

Mappatura automatica/euristica dei nomi di colonna. Per esempio semplici mappature stringa:

DB1: customerId

DB2: CUSTOMER_ID

trovo un sacco di lavoro I (ho) fatto in DTS/SSIS potrebbe essere stato generato automaticamente.

  • non necessariamente "funzionalità richiesta", ma terrebbe molto felici i vostri utenti.
Problemi correlati