Question

Arrière-plan

J'ai une table de dimension qui contient un seul enregistrement pour chaque jour. Chaque enregistrement a une clé primaire. Les exemples de données sont:

Dimension Table
---------------

---------------------------------
| ID   | DateTime               |
---------------------------------
| 1083 | 04/10/2008 10:02:00 PM |
---------------------------------

Ce que j'essaie de faire est de prendre ma colonne de données source qui a une valeur date / heure SQL (telle que 04/10/2008 10:02:00 PM ) et de faire en sorte que SSIS dérive ce que le primaire La clé de la table de dimension doit être ( 1083 dans l'exemple ci-dessus). J'essaie de l'intégrer au flux de données de mon package et d'éviter d'utiliser des tables de transfert.

Je voudrais appeler une fonction de base de données pendant mon flux de données pour que mon package SSIS découvre le timeid d'un enregistrement datetime . J'ai essayé d'utiliser DeriveColumn mais cela ne semble pas autoriser l'utilisation de T-SQL; plutôt que des fonctions qui sont intégrées à ANSI SQL.

Question

Existe-t-il un autre moyen de faire cela dans le flux de données? Ou devrais-je utiliser des tables de transfert et utiliser un SQLTask en dehors du flux de données pour manipuler mes données?

Était-ce utile?

La solution

Si je vous comprends bien, vous avez un datamart avec une dimension temporelle et vous devez obtenir le timeId correspondant à une heure particulière.

Si cela est correct, vous souhaitez utiliser un composant de recherche. Pour la table de référence, utilisez quelque chose comme SELECT timeId, timeStamp FROM TimeDimension , puis recherchez dans la colonne d'entrée contenant l'horodatage. Utilisez timeId en tant que colonne de sortie et chaque ligne de votre flux de données aura l'heure timeId correspondant à son horodatage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top