2009-10-06 5 views
2

Nous envisageons d'utiliser SSIS pour gérer un entrepôt de données PostgreSQL. Je l'ai utilisé auparavant entre les serveurs SQL sans problème, mais j'ai beaucoup de mal à le faire fonctionner correctement avec Postgres. J'utilise la version d'évaluation du fournisseur de données OLEDB PGNP (http://www.postgresql.org/about/news.1004). Je voulais commencer par quelque chose de simple comme UPSERT sur la table des faits (10k-15k lignes sont mises à jour/insérées tous les jours), mais cela s'avère très difficile (sans parler du fait que je vais utiliser des clés de substitution à l'avenir).Data Warehousing Postgres

J'ai essayé (http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx) et (http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx) qui sont effectivement les mêmes (sauf que je ne comprends pas vraiment l'union tout à la fin quand je suis en train d'augmenter) Mais je rencontre le même problème avec paramètres lors de la mise à jour en utilisant une commande OLEDb - que j'ai essayé de surmonter en utilisant (http://technet.microsoft.com/en-us/library/ms141773.aspx) mais cela ne semble pas fonctionner, je reçois une erreur de validation -

Les colonnes externes pour complent .... sont hors de synchronisation avec les colonnes de source de données ... la colonne externe "Param_2" doit être supprimée des colonnes externes. (cette erreur est répétée pour les deux premiers paramètres également - jamais rencontré cela en utilisant la connexion sql car il prend en charge les paramètres nommés)

Quelqu'un at-il rencontré cela?

ET:

Le fait que cette tâche simple est apparemment si difficile à faire dans SSIS Je suggère d'utiliser le mauvais outil pour le travail - moyen est-il une meilleure (et encore souple) de le faire? Ou un autre package ETL serait-il préférable de l'utiliser entre deux bases de données Postgres? -Les autres options incluent toutes celles listées sur (http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks). Je pourrais juste aller écrire une charge de SQL pour le faire pour moi, mais je voulais une solution nette et facilement maintenable.

+0

Je me rends compte que postgres a une option except et intersection. Mais je ne veux que mettre à jour les lignes qui ont changé et insérer des lignes qui n'existent pas –

Répondre

0

SCD est beaucoup trop lent pour ce que je veux. J'ai besoin d'utiliser set sql.

Il s'est avéré que beaucoup de mes problèmes étaient avec des bogues dans le fournisseur. J'ai ouvert un sujet de forum (http://www.pgoledb.com/forum/viewtopic.php?f=4&t=49) et j'ai eu une discussion utile avec le modérateur/support/développeur.

également Postgres ne vous traversez pas laisser db querys, donc je résolu le problème de cette façon:

  • Source de données de la production DB à une table temporaire Archive DB
  • Exécuter ensemble de requêtes entre température Table et archives
  • tronquer table temporaire

Notez que la table temporaire n'est pas atchally une table temporaire, mais une copie du schéma de la table d'archivage des données stockées temporairement dans.

Cela a pris un certain temps, mais je suis arrivé à la fin.

Cette tâche simple va prendre un peu de travail dans les deux sens. SSIS n'est en aucun cas un produit ETL de classe entreprise, mais il vous offre des fonctionnalités simples et rapides, et est suffisant pour la plupart des travaux ETL. Je suppose que c'est aussi votre niveau de confort avec ça.

Quelle solution ETL d'entreprise suggérez-vous?

+0

PGNP s'est grandement amélioré au cours de la dernière année et répond bien à nos exigences. –

0

J'ai utilisé l'assistant Dimension à changement lent pour cela avec succès. Il peut vous donner ce que vous cherchez en particulier avec l'Assistant

http://msdn.microsoft.com/en-us/library/ms141715.aspx

Les colonnes extérieures désynchronisés: SSIS est sensible à la casse - je rencontré ce problème à plusieurs reprises et il me donne envie de tirer mes cheveux .

Cette tâche simple va prendre un peu de travail dans les deux sens. SSIS n'est en aucun cas un produit ETL de classe entreprise, mais il vous offre des fonctionnalités simples et rapides, et est suffisant pour la plupart des travaux ETL. Je suppose que c'est aussi votre niveau de confort avec ça.