11
votes

Quelles sont les fonctionnalités requises des frameworks ETL?

J'écris un ETL (en python avec un backend de MongoDb) et je me demandais: quel type de fonctions et outils standard un ETL devrait avoir à appeler une ETL?

Cet ETL sera aussi général que possible, avec une approche scriptable et modulaire. Surtout, il sera utilisé pour conserver différentes bases de données en synchronisation et importer / exporter des ensembles de données dans différents formats (XML et CSV), je n'ai pas besoin d'outils multidimensionnels, mais il est possible que cela nécessiterait plus tard.

etl

1 commentaires

Quels cas d'utilisation avez-vous en ce moment? De quoi avez-vous besoin pour faire? Veuillez énumérer vos cas d'utilisation actuels afin que nous puissions commenter ceux-ci.


3 Réponses :


4
votes

Voici une liste aléatoire, sans ordre particulier:

  1. Connectez-vous à une large gamme de sources, y compris toutes les principales bases de données relationnelles.
  2. gérer des sources de données non relationnelles telles que des fichiers texte, Excel, XML, etc.
  3. Autoriser plusieurs sources à être mappées dans une seule cible.
  4. Fournissez un outil pour aider à la carte de la source aux champs cibles.
  5. offre un cadre pour injecter des transformations à volonté.
  6. API programmable pour écrire des transformations complexes.
  7. Optimiser le processus de charge de la vitesse.

1 commentaires

J'aimerais voir "graphique" retiré de # 4. Pendant que les images sont mignonnes, nous finissons toujours à lire le code pour voir ce qui est vraiment .



16
votes

Pensons aux cas d'utilisation de l'ETL un instant.

  1. extrait.
    • Lire des bases de données via un adaptateur Générique DB-API.
    • Lire des fichiers plats via un adaptateur similaire.
    • Lire des feuilles de calcul via un adaptateur similaire.
    • nettoyer.
      • règles arbitraires
      • filtre et rejet
      • remplacer
      • Ajouter des colonnes de données
      • Données de profil.
        • Tables de fréquences statistiques.
        • transformer (voir nettoyer, ce sont deux cas d'utilisation avec la même implémentation)
        • Cherches de conformité dimensionnelles.
          • Remplacez les valeurs ou ajoutez des valeurs.
          • agrégat.
            • à tout moment du pipeline
            • charge.
              • ou préparez un fichier plat et exécutez le chargeur du produit de la DB.

                En outre, il existe des exigences supplémentaires qui ne sont pas des cas d'utilisation unique.

                • Chaque opération doit être un processus distinct pouvant être connecté dans un pipeline UNIX, avec des enregistrements individuels qui découlent du processus au processus. Cela utilise tous les ressources de la CPU .

                • Vous avez besoin d'une sorte de planificateur de temps pour des endroits qui ont du mal à raisonner leurs conditions préalables ETL.

                • Vous avez besoin d'une planification basée sur des événements pour des endroits pouvant déterminer les conditions préalables aux étapes de traitement ETL.

                  note. Etant donné que l'ETL est I / O lié, plusieurs threads vous sont peu bons. Étant donné que chaque processus fonctionne pendant une longue période - surtout si vous avez des milliers de lignes de données à traiter - les frais généraux des processus "poids lourd" ne font pas mal.


0 commentaires

0
votes

Mappage automatique / heuristique des noms de colonne. E.g Mappages de chaîne simples:

DB1: CustomerID

DB2: Customer_ID

Je trouve beaucoup de travail que je (ai) effectué dans DTS / SSIS aurait pu être généré automatiquement.

  • pas nécessairement "fonctionnalité requise", mais conserverait beaucoup de vos utilisateurs très heureux.

0 commentaires