Transformation de recherche
La transformation de recherche effectue des recherches en joignant des données de colonnes d'entrée à des colonnes d'un dataset de référence. Vous utilisez la recherche pour accéder à des informations supplémentaires dans une table associée se basant sur des valeurs dans des colonnes communes.
Le dataset de référence peut être un fichier cache, une table ou une vue existante, une nouvelle table ou le résultat d'une requête SQL. La transformation de recherche utilise un gestionnaire de connexions OLE DB ou un gestionnaire de connexions du cache pour se connecter au dataset de référence. Pour plus d'informations, consultez Gestionnaire de connexions OLE DB et Gestionnaire de connexions du cache.
Vous pouvez configurer la transformation de recherche comme suit :
Sélectionnez le gestionnaire de connexions que vous souhaitez utiliser. Si vous souhaitez vous connecter à une base de données, sélectionnez un gestionnaire de connexions OLE DB. Si vous souhaitez vous connecter à un fichier cache, sélectionnez un gestionnaire de connexions du cache.
Spécifiez la table ou la vue qui contient le dataset de référence.
Générez un dataset de référence en spécifiant une instruction SQL.
Définissez des jointures entre l'entrée et le dataset de référence.
Ajoutez des colonnes du dataset de référence à la sortie de la transformation de recherche.
Configurez les options de mise en cache.
La transformation de recherche prend en charge les fournisseurs de bases de données suivants pour le gestionnaire de connexions OLE DB :
SQL Server
Oracle
DB2
La transformation de recherche essaie de réaliser une équi-jointure entre les valeurs de l'entrée de transformation et celles du dataset de référence. (Une équi-jointure signifie que chaque ligne de l'entrée de transformation doit correspondre à au moins une ligne du dataset de référence.) Si une équi-jointure n'est pas possible, la transformation de recherche effectue l'une des actions suivantes :
En l'absence d'entrée correspondante dans le dataset de référence, aucune jointure n'est réalisée. Par défaut, la transformation de recherche traite les lignes sans entrées correspondantes comme des erreurs. Toutefois, vous pouvez configurer la transformation de recherche pour rediriger ces lignes vers une sortie sans correspondance. Pour plus d'informations, consultez Éditeur de transformation de recherche (page Général) et Éditeur de transformation de recherche (page Sortie d'erreur).
En présence de plusieurs correspondances dans la table de référence, la transformation de recherche retourne uniquement la première correspondance retournée par la requête de recherche. Si plusieurs correspondances sont trouvées, la transformation de recherche génère une erreur ou un avertissement uniquement lorsque la transformation a été configurée pour charger tout le dataset de référence dans le cache. Dans ce cas, la transformation de recherche génère un avertissement lorsque la transformation détecte plusieurs correspondances au moment où la transformation remplit le cache.
La jointure peut être une jointure composite, auquel cas vous pouvez joindre plusieurs colonnes de l'entrée de transformation à des colonnes du dataset de référence. La transformation prend en charge les colonnes de jointure de n'importe quel type de données, à l'exception des types DT_R4, DT_R8, DT_TEXT, DT_NTEXT ou DT_IMAGE. Pour plus d'informations, consultez Types de données d'Integration Services.
En règle générale, les valeurs du dataset de référence sont ajoutées à la sortie de la transformation. Par exemple, la transformation de recherche peut extraire un nom de produit d'une table à l'aide d'une valeur d'une colonne d'entrée, puis l'ajouter à la sortie de la transformation. Les valeurs de la table de référence peuvent remplacer des valeurs de colonne ou être ajoutées à de nouvelles colonnes.
Les recherches effectuées par la transformation de recherche respectent la casse. Pour éviter les échecs de recherche dus à des différences de casse dans les données, utilisez tout d'abord la transformation de la table des caractères pour convertir les données en majuscules ou minuscules. Incluez ensuite les fonctions UPPER ou LOWER dans l'instruction SQL qui génère la table de référence. Pour plus d'informations, consultez Transformation de la table de caractères, UPPER (Transact-SQL) et LOWER (Transact-SQL).
La transformation de recherche a les entrées et sorties suivantes :
Entrée.
Sortie avec correspondance. La sortie avec correspondance gère les lignes de l'entrée de transformation qui correspondent à au moins une entrée du dataset de référence.
Sortie sans correspondance. La sortie sans correspondance gère les lignes de l'entrée qui ne correspondent pas au moins à une entrée dans le dataset de référence. Si vous configurez la transformation de recherche pour traiter les lignes sans entrées correspondantes comme des erreurs, elles sont redirigées vers la sortie d'erreur. Sinon, la transformation redirige ces lignes vers la sortie sans correspondance.
Notes
Dans SQL Server 2005 Integration Services (SSIS), la transformation de recherche n'avait qu'une seule sortie. Pour plus d'informations sur l'exécution d'une transformation de recherche créée dans SQL Server 2005, consultez Mise à niveau de transformations de recherche.
Sortie d'erreur.
Mise en cache du dataset de référence
Un cache en mémoire stocke le dataset de référence et stocke une table de hachage qui indexe les données. Le cache reste en mémoire tant que l'exécution du package n'est pas terminée. Vous pouvez rendre le cache persistant dans un fichier cache (.caw).
Lorsque vous rendez le cache persistant dans un fichier, le système le charge plus rapidement, ce qui améliore les performances de la transformation de recherche et du package. N'oubliez pas que lorsque vous utilisez un fichier cache, vous travaillez avec des données qui ne sont pas autant à jour que celles de la base de données.
La persistance du cache dans un fichier présente les autres avantages suivants :
Partagez le fichier cache entre plusieurs packages. Pour plus d'informations, consultez Procédure : implémenter une transformation de recherche en mode Cache complet à l'aide de la transformation du gestionnaire de connexions du cache.
Déployez le fichier cache avec un package. Vous pouvez alors utiliser les données sur plusieurs ordinateurs. Pour plus d'informations, consultez Procédure : créer et déployer un cache pour la transformation de recherche.
Utilisez la source de fichier brut pour lire les données du fichier cache. Vous pouvez alors utiliser d'autres composants de flux de données pour transformer ou déplacer les données. Pour plus d'informations, consultez Source de fichier brut.
Notes
Le gestionnaire de connexions du cache ne prend pas en charge les fichiers cache qui sont créés ou modifiés avec la destination de fichier brut.
Effectuez des opérations et définissez des attributs sur le fichier cache en utilisant la tâche de système de fichiers. Pour plus d'informations, consultez Tâche de système de fichiers.
Les options de mise en cache sont indiquées ci-dessous :
Le dataset de référence est généré à l'aide d'une table, d'une vue ou d'une requête SQL et est chargé dans le cache, avant l'exécution de la transformation de recherche. Vous utilisez le gestionnaire de connexions OLE DB pour accéder au dataset.
Cette option de mise en cache est compatible avec l'option de mise en cache complète qui est disponible pour la transformation de recherche dans SQL Server 2005 Integration Services (SSIS).
Le dataset de référence est généré à partir d'une source de données connectée dans le flux de données ou à partir d'un fichier cache et est chargé dans le cache avant l'exécution de la transformation de recherche. Vous utilisez le gestionnaire de connexions du cache et éventuellement la transformation du cache pour accéder au dataset. Pour plus d'informations, consultez Gestionnaire de connexions du cache et Transformation du cache.
Le dataset de référence est généré à l'aide d'une table, d'une vue ou d'une requête SQL pendant l'exécution de la transformation de recherche. Les lignes avec des entrées correspondantes dans le dataset de référence et celles sans entrées correspondantes dans le dataset sont chargées dans le cache.
Lorsque la taille de mémoire du cache est dépassée, la transformation de recherche supprime automatiquement les lignes le moins fréquemment utilisées du cache.
Cette option de mise en cache est compatible avec l'option de mise en cache partielle qui est disponible pour la transformation de recherche dans SQL Server 2005 Integration Services (SSIS).
Le dataset de référence est généré à l'aide d'une table, d'une vue ou d'une requête SQL pendant l'exécution de la transformation de recherche. Aucune donnée n'est mise en cache.
Cette option de mise en cache est compatible avec l'option sans mise en cache qui est disponible pour la transformation de recherche dans SQL Server 2005 Integration Services (SSIS).
Integration Services et SQL Server diffèrent par leur manière de comparer les chaînes. Si la transformation de recherche est configurée pour charger le dataset de référence dans le cache avant l'exécution de la transformation de recherche, Integration Services effectue la comparaison de recherche dans le cache. Autrement, l'opération de recherche utilise une instruction SQL paramétrée et SQL Server effectue la comparaison de recherche. Cela signifie que la transformation de recherche peut retourner un nombre différent de correspondances à partir de la même table de recherche, selon le type de cache.
Résolution des problèmes liés à la transformation de recherche
Une transformation de recherche configurée pour ne charger aucun dataset de référence dans le cache échouera si une opération de recherche met en correspondance des colonnes qui contiennent des valeurs Null. Pour éviter cet échec, mettez à jour manuellement l'instruction SQL de manière à inclure une condition OR ISNULL(ColumnName). Si une transformation de recherche a été configurée pour charger le dataset de référence dans le cache avant l'exécution de la transformation de recherche, l'opération de recherche réussit.
Notes
Si possible, évitez d'utiliser dans les opérations de recherche des colonnes susceptibles de contenir des valeurs Null. Si une colonne contient des valeurs Null, configurez la transformation de recherche de manière à utiliser une sortie d'erreur qui dirige vers une sortie de transformation distincte les lignes auxquelles ne correspond aucune ligne dans la table de référence. Une autre solution peut consister à utiliser la mise en cache complète, qui prend en charge les opérations de recherche sur les valeurs Null.
Vous pouvez consigner les appels que la transformation de recherche effectue vers des fournisseurs de données externes. Cette fonctionnalité de journalisation permet de résoudre des problèmes liés au remplissage du cache qu'exécute la transformation de recherche depuis des sources de données externes. Pour consigner les appels que la transformation de recherche effectue vers des fournisseurs de données externes, activez la journalisation de package et sélectionnez l'événement Diagnostic au niveau du package. Pour plus d'informations, consultez Dépannage de l'exécution des packages.
Configuration de la transformation de recherche
Vous pouvez définir les propriétés par le biais du concepteur SSIS ou par programme.
Pour plus d'informations sur les propriétés définissables dans la boîte de dialogue Éditeur de transformation de recherche, cliquez sur l'une des rubriques suivantes :
Pour plus d'informations sur d'autres propriétés que vous pouvez définir, cliquez sur l'une des rubriques suivantes :
Pour plus d'informations sur la définition des propriétés, cliquez sur l'une des rubriques suivantes :
Ressources externes
Vidéo, Procédure : implémenter une transformation de recherche en mode Cache complet, sur msdn.microsoft.com
Entrée de blog, Best Practices for Using the Lookup Transformation Cache Modes (en anglais), sur blogs.msdn.com
Entrée de blog, Lookup Pattern: Case Insensitive, sur blogs.msdn.com
|