2010-03-22 7 views
4

J'ai beaucoup lu sur les schémas en étoile, sur les tables de faits/démosions, sur les instructions de sélection pour raporter rapidement les données, mais la saisie de données dans un schéma en étoile me semble indifférente. Comment "théoriquement" entrer des données dans un schéma-star db? tout en maintenant la table de faits. Est une série d'instruction INSERT INTO dans le proc stocké géant avec 20 params ma seule option (et comment peupler la table de faits). Merci beaucoup.Insérer dans un schéma en étoile

Répondre

5

Commencez par les dimensions en premier - une par une. Utilisez l'approche ECCD (Extract, Clean, Conform, Deliver).

Assurez-vous que chaque dimension possède une clé BusinessKey qui identifie de façon unique l '«objet» décrit par une ligne de dimension - comme un courrier électronique pour une personne.

Une fois les dimensions chargées, préparez un pipeline de recherche de clé. En général, pour chaque table de dimension, vous pouvez préparer une table de correspondance de clés (BusinessKey, PrimaryKey). Certains concepteurs choisissent de rechercher directement la table de dimension, mais la recherche de clé peut souvent être mise en mémoire cache, ce qui accélère le chargement des faits.

Utilisez également ECCD pour les données de base. La partie ECC se produit dans la zone de transit, vous pouvez choisir des tables (auxiliaires) ou des fichiers plats pour chaque étape de l'ECC, comme vous préférez. Lors de la livraison des tables de faits, remplacez chaque BusinessKey dans la ligne de faits par le PrimaryKey correspondant que vous obtenez à partir d'une table de recherche de clé. Une fois que tous les BusinessKeys sont remplacés par les clés primaires correspondantes, insérez la ligne dans la table des faits. Ne perdez pas de temps, utilisez l'outil ETL. Vous pouvez télécharger Pentaho Kettle (édition communautaire) gratuitement - il a tout ce qu'il faut pour y parvenir.

2

En général, vous ne pas insérer des données dans un schéma en étoile de la même manière que vous pourriez en une forme normale - à savoir une procédure stockée qui insère/mis à jour toutes les tables appropriées au sein d'une seule transaction. Rappelez-vous que le schéma en étoile est généralement un modèle de données dénormalisé en lecture seule - il est (rarement) traité transactionnellement, et est généralement chargé à partir de données déjà dénormalisées - généralement un fichier plat par étoile. Comme Damir le fait remarquer, typiquement, vous chargez toutes les dimensions (manipulez le changement lent, etc.), puis chargez les faits, en joignant les dimensions courantes appropriées pour trouver les ID de dimension (en utilisant les clés commerciales).

Questions connexes