2009-08-24 12 views
11

Estoy escribiendo un ETL (en python con un backend de mongodb) y me preguntaba: ¿qué tipo de funciones y herramientas estándar debería tener un ETL como ETL?¿Cuáles son las funcionalidades requeridas de los marcos de ETL?

Este ETL tendrá el propósito más general posible, con un enfoque modificable por secuencias de comandos y modular. En su mayoría, se usará para sincronizar diferentes bases de datos y para importar/exportar conjuntos de datos en diferentes formatos (xml y csv). No necesito herramientas multidimensionales, pero existe la posibilidad de que las necesite más adelante.

+0

¿Qué casos de uso tiene en este momento? ¿Qué necesitas que haga? Por favor, enumere sus casos de uso actuales para que podamos comentar sobre ellos. –

Respuesta

16

Pensemos en los casos de uso de ETL por un momento.

  1. Extracto.
    • Lectura de bases de datos a través de un adaptador DB-API genérico.
    • Lea archivos planos a través de un adaptador similar.
    • Lea las hojas de cálculo a través de un adaptador similar.
  2. Limpiar.
    • reglas arbitrarias
    • Filtrar y rechazar
    • Reemplazar
    • añadir columnas de datos
  3. perfil de datos.
    • Tablas estadísticas de frecuencia.
  4. Transform (ver limpian, son dos casos de uso con la misma aplicación)
  5. realizar búsquedas de conformidad dimensionales.
    • Reemplazar valores o agregar valores.
  6. Agregado.
    • En cualquier punto de la tubería
  7. carga.
    • O prepare un archivo plano y ejecute el cargador del producto DB.

Además, hay algunos requisitos adicionales que no son casos de un solo uso.

  • cada operación individual tiene que ser un proceso independiente que se puede conectar en una tubería Unix, con registros individuales que fluyen desde un proceso a otro. Esto usa todos los recursos de la CPU.

  • Necesita algún tipo de planificador basado en el tiempo para los lugares que tienen problemas para razonar sobre sus precondiciones de ETL.

  • Necesita un cronograma basado en eventos para los lugares que pueden descifrar las condiciones previas para los pasos de procesamiento de ETL.

Nota. Dado que ETL está vinculado a E/S, múltiples hilos le hacen poco bien. Como cada proceso se ejecuta durante un tiempo prolongado, especialmente si tiene miles de filas de datos para procesar, la sobrecarga de los procesos de "peso pesado" no hace daño.

4

He aquí una lista aleatoria, en ningún orden en particular:

  1. Conectarse a una amplia gama de fuentes, incluyendo todas las principales bases de datos relacionales.
  2. Gestione orígenes de datos no relacionales, como archivos de texto, Excel, XML, etc.
  3. Permita que se asignen múltiples orígenes en un único destino.
  4. Proporcione una herramienta para ayudar a asignar los campos de origen a destino.
  5. Ofrezca un marco para inyectar transformaciones a voluntad.
  6. API programable para escribir transformaciones complejas.
  7. Optimizar el proceso de carga para la velocidad.
+0

Me gustaría ver que se elimine "gráfico" del n. ° 4. Mientras que las imágenes son lindas, siempre terminamos leyendo el código para ver qué está sucediendo realmente. –

+0

@S. Lott - Hecho. – duffymo

0

Asignación automática/heurística de los nombres de las columnas. Por ejemplo asignaciones simples de cadena:

DB1: customerId

DB2: Customer_Id

Encuentro una gran parte del trabajo I (he) hecho en DTS/SSIS podría haber sido generada automáticamente.

  • no necesariamente "funcionalidad requerida", pero mantendría a muchos de sus usuarios muy contentos.
Cuestiones relacionadas