Procédure : trier des données pour les transformations de fusion et de jointure de fusion
Dans Integration Services, les transformations de fusion et de jointure de fusion requièrent des données triées pour leurs entrées. Les données d'entrée doivent être triés physiquement et les options de tri doivent être définies sur les sorties et les colonnes de sortie dans la source ou dans la transformation amont. Si les options de tri indiquent que les données sont triées alors qu'elles ne le sont pas en réalité, les résultats de l'opération de fusion ou de jointure de fusion sont imprévisibles.
Tri des données
Pour trier ces données, procédez selon l'une des méthodes suivantes :
Dans la source, utilisez une clause ORDER BY dans l'instruction utilisée pour charger les données.
Dans le flux de données, insérez une transformation de tri avant la transformation de fusion ou de jointure de fusion.
Si les données sont des données de chaînes, les transformations de fusion ou de jointure de fusion requièrent que ces valeurs de chaîne soient triées en utilisant le classement Windows. Pour fournir des valeurs de chaîne aux transformations de fusion et de jointure de fusion triées à l'aide du classement Windows, procédez comme suit :
Pour fournir des valeurs de chaîne triées à l'aide du classement Windows
Utilisez une transformation de tri pour trier les données.
La transformation de tri utilise le classement Windows pour trier les valeurs de chaîne.
ou
Utilisez l'opérateur Transact-SQL CAST pour commencer par effectuer un cast des valeurs varchar en valeurs nvarchar, puis utilisez la clause Transact-SQL ORDER BY pour trier les données.
Important
Vous ne pouvez pas utiliser la clause ORDER BY seule parce qu'elle utilise un classement SQL Server pour trier les valeurs de chaîne. L'utilisation du classement SQL Server peut générer un ordre de tri différent du classement Windows, la transformation de fusion ou de jointure de fusion pouvant générer des résultats inattendus.
Définition d'options de tri sur les données
Deux propriétés de tri importantes doivent être définies pour la source ou la transformation amont qui fournit des données aux transformations de fusion et de jointure de fusion :
La propriété IsSorted de la sortie qui indique si les données ont été triées. Cette propriété doit avoir la valeur True.
Important
La définition de la propriété IsSorted à la valeur True ne permet pas de trier les données. Cette propriété indique uniquement aux composants en aval que les données ont été précédemment triées.
La Propriété SortKeyPosition des colonnes de sortie qui indique si une colonne est triée, son ordre de tri et la séquence dans laquelle plusieurs colonnes sont triées. Cette propriété doit être définie pour chaque colonne de données triées.
Si vous utilisez une transformation de tri pour trier les données, elle définit ces deux propriétés tel que requis par la transformation de fusion ou de jointure de fusion. Autrement dit, la transformation de tri définit la propriété IsSorted de sa sortie à True, puis définit les propriétés SortKeyPosition de ses colonnes de sortie.
Toutefois, si vous n'utilisez pas de transformation de tri pour trier les données, vous devez définir ces propriétés de tri manuellement sur la source ou la transformation amont. Pour ce faire, procédez comme suit :
Pour définir manuellement des attributs de tri sur un composant source ou de transformation
Dans Business Intelligence Development Studio, ouvrez le projet Integration Services contenant le package qui vous intéresse.
Dans l'Explorateur de solutions, double-cliquez sur le package pour l'ouvrir.
Sous l'onglet Flux de données, localisez la source ou la transformation amont appropriée, ou faites-la glisser de la Boîte à outils vers l'aire de conception.
Cliquez avec le bouton droit sur le composant, puis cliquez sur Afficher l'éditeur avancé.
Cliquez sur l'onglet Propriétés d'entrée et de sortie.
Cliquez sur Sortie <nom du composant>, puis définissez la propriété IsSorted sur True.
[!REMARQUE]
Si vous définissez manuellement la propriété IsSorted de la sortie à True et que les données ne sont pas triées, il se peut que des données soient manquantes ou que des comparaisons de données incorrectes figurent dans la transformation de fusion ou de jointure de fusion en aval lors de l'exécution du package.
Développez Colonnes de sortie.
Cliquez sur la colonne que vous souhaitez identifier comme triée et définissez sa propriété SortKeyPosition sur une valeur entière non nulle conformément aux indications suivantes :
La valeur entière doit représenter une séquence numérique, partant de 1 et incrémentée de 1.
Une valeur entière positive indique un ordre de tri croissant.
Une valeur entière négative indique un ordre de tri décroissant. (Si un nombre négatif est défini, la valeur absolue du nombre détermine la position de la colonne dans la séquence de tri.)
Une valeur par défaut de 0 indique que la colonne n'est pas triée. Laissez la valeur 0 pour les colonnes de sortie qui ne participent pas au tri.
Comme exemple de définition de la propriété SortKeyPosition, prenons l'instruction Transact-SQL suivante qui charge des données dans une source.
SELECT * FROM MyTable ORDER BY ColumnA, ColumnB DESC, ColumnC
Pour cette instruction, vous définissez la propriété SortKeyPosition de chaque colonne comme suit :
Définissez la propriété SortKeyPosition de ColumnA à 1. Cela indique que ColumnA est la première colonne à trier et dans l'ordre croissant.
Définissez la propriété SortKeyPosition de ColumnB à -2. Cela indique que ColumnB est la deuxième colonne à trier et dans l'ordre décroissant.
Définissez la propriété SortKeyPosition de ColumnC à 3. Cela indique que ColumnC est la troisième colonne à trier et dans l'ordre croissant.
Répétez l'étape 8 pour chaque colonne triée.
Cliquez sur OK.
Pour enregistrer le package mis à jour, cliquez sur Enregistrer les éléments sélectionnés dans le menu Fichier.
Voir aussi