Concepts clés de la jointure de tables
La jointure de table permet généralement d'ajouter les champs d'une table à ceux d'une autre table sur la base d'un attribut ou d'un champ commun aux deux tables. Vous pouvez définir la jointure sur la base d'attributs ou d'une classe de relations de géodatabase prédéfinie ou par localisation (aussi appelée jointure spatiale). Seule la jointure par classe de relations est affichée si vous joignez des données de géodatabase pour lesquelles une classe de relations a déjà été définie dans la géodatabase.
Plusieurs couches ou tables peuvent être jointes à une seule et des jointures de classes de relations peuvent être mélangées avec des jointures d'attributs. Lorsqu'une table à joindre est supprimée, toutes les données des tables qui lui ont été jointes sont également supprimées. Cependant, les données issues de tables précédemment jointes sont conservées. La symbologie ou l'étiquetage fondés sur une colonne ajoutée reprennent leur valeur par défaut lorsque la jointure est supprimée.
Dans la majorité des cas, le nom des colonnes obéit à la convention d'appellation suivante : <TableName>.<FieldName>. Cette convention permet d'empêcher la duplication des noms de champ lorsque la table cible et une table à joindre comportent des noms de fichiers communs. Si vous ne voulez pas que les noms de champ s'affichent ainsi, cliquez sur le bouton Options de la table de la fenêtre Table et cliquez sur Afficher les alias de champ pour activer ou désactiver cette option. Lorsque cette option est activée, une coche s'affiche en regard de l'option dans le menu Options, et les champs ne sont pas préfixés avec le nom de la table.
Voici un exemple de table jointe dont les noms de champ ont été préfixés avec le nom de la table :
Exemple de table jointe affichant uniquement des alias de champ :
En savoir plus sur la jointure et la mise en relation des tables
Récapitulation des données avant de les joindre
En fonction de l'organisation de vos données, vous devrez peut-être commencer par récapituler les données dans la table avant de joindre la table à une couche. Lorsque vous récapitulez une table, ArcMap crée une nouvelle table contenant les résumés statistiques induits de la table. Vous pouvez créer de nombreux résumés statistiques y compris le total, la moyenne, le minimum et le maximum.
Par exemple, supposons que vous vouliez créer des cartes météorologiques par état plutôt que par comté, mais que les informations en votre possession sont organisées par comté. Vous pourriez récapituler les données de comté par état - par exemple, rechercher les précipitations moyennes pour tous les comtés d'un état - puis joindre la nouvelle table en sortie à une couche d'état pour créer une carte météorologique des précipitations par état.
Mise à jour et jointure de tables
Lorsque vous modifiez des données jointes, vous ne pouvez pas modifier directement les colonnes jointes. Pour modifier les données jointes, vous devez commencer par ajouter les tables ou couches jointes à ArcMap. Vous pouvez alors effectuer séparément des modifications sur ces données. Ces modifications sont apportées aux colonnes jointes.
Validation de jointure
Vous pouvez analyser une jointure avant de la créer. Pour ce faire, cliquez sur le bouton Valider la jointure de la boîte de dialogue Joindre des données. La validation de jointure permet d'évaluer tous les problèmes susceptibles de se poser pendant la création d'une jointure. La validation de jointure analyse les deux jeux de données concernés pour savoir si les problèmes rencontrés avec les données sont des problèmes courants. La liste suivante répertorie les points de vérification :
- Recherche des noms de champs commençant par un caractère non valide.
- Recherche des noms de champ contenant un caractère non valide.
- Recherche des noms de champ correspondant à des mots réservés.
- Recherche des tables MS Access qui ne sont pas des tables de géodatabase.
Si ces problèmes ne sont pas corrigés, les champs de jointure risquent d'afficher des valeurs Null dans la table attributaire ou le nombre de sélection et d'enregistrements peut induire en erreur. Pendant la recherche des caractères non valides, la validation de jointure exclut le dièse (#), le dollar ($), et le trait d'union (-) s'agissant de l'analyse des données de couverture, et le point (.) s'agissant des données d'utilisateurs connectés via le logiciel ArcSDE. Si un nom de champ commence par l'un de ces caractères, le système renvoie un avertissement.
La validation de jointure vérifie les caractères suivants :
Caractères de début de nom non valides : '~ @ #$% ^ & * () - + = | \\, < >?/{}.!' []:; _0123456789
Caractères utilisés pour former un nom non valides : `~@#$%^&*()-+=|\\,<>?/{}.!'[]:;
La validation de jointure indique également le nombre d'enregistrements correspondants si la jointure est créée. Vous pouvez calculer le pourcentage des enregistrements correspondants obtenus et ainsi vous demander si les données contiennent encore des erreurs lorsque le pourcentage calculé est inférieur au pourcentage attendu. En effet si vous utilisez des champs de texte pour créer une jointure, les fautes d'orthographe, l'emploi d'une majuscule ou d'une minuscule sont autant de raisons susceptibles d'expliquer la baisse du nombre d'enregistrements correspondants. Si la validation de jointure fait ressortir un nombre d'enregistrements correspondants supérieur au nombre d'enregistrements du jeu de données source, un message d'avertissement signale l'existence d'une relation un vers plusieurs ou plusieurs vers plusieurs entre les données utilisées et rappelle que vous ne devez pas utiliser de jointure pour associer ces jeux de données mais préférer une mise en relation ou une classe de relations.
Conseils relatifs aux performances des jointures de données
Il est possible d'utiliser des données extraites des champs ajoutés pour symboliser et étiqueter des entités, exécuter des requêtes et effectuer de nombreuses autres opérations. Les temps d'accès aux données jointes sont plus longs que ceux aux données de la table cible du fait des tâches supplémentaires requises pour conserver la jointure.
Les conseils suivants peuvent être utilisés, lors de l'utilisation de données jointes, en vue d'améliorer les performances :
- Vous pouvez effectuer une jointure à partir de la boîte de dialogue Joindre des données, accessible en cliquant avec le bouton droit de la souris sur une couche dans ArcMap, ou en utilisant un jeu d'outils de géotraitement. Il est préférable de recourir aux outils de géotraitement Joindre lorsque les jeux de données sont particulièrement volumineux afin d'optimiser les performances. Vous pouvez également inclure ces outils dans des modèles et scripts de géotraitement lorsque vous voulez automatiser des étapes répétitives ou complexes impliquant des jointures. Comme ces outils effectuent le traitement de jointure d'une manière légèrement différente de celle de la boîte de dialogue Joindre des données, utilisez les outils si vous rencontrez des problèmes inattendus avec la fonctionnalité de jointure de cette boîte de dialogue. Les outils de géotraitement incluent les outils suivants : Jointure spatiale, Ajouter une jointure et Supprimer une jointure.
-
Créez des index attributaires dans les champs à joindre. Si les jointures comportent uniquement des fichiers de formes, des fichiers dBASE ou encore des couvertures ou des fichiers INFO, l'indexation n'améliorera pas les performances lors de l'affichage ou de l'utilisation de la fenêtre Table. Les performances seront toutefois améliorées lors des mises à jour. Dans tous les autres cas, les index attributaires améliorent les performances d'ensemble.
- Lorsque vous joignez des données extraites d'une même géodatabase, sélectionnez l'option Conserver uniquement les enregistrements correspondants. Il arrive que cette option génère des résultats différents. Cependant, elle permet à la base de données de traiter la jointure. Vous constaterez que cette méthode accélère généralement les opérations requérant l'accès aux données contenues dans les colonnes jointes (symbolisation, étiquetage, etc.).
L'option par défaut Conserver tous les enregistrements effectue toujours le traitement sur le client. Les performances sont généralement bonnes pour les opérations qui ne nécessitent pas d'accès aux données jointes (par exemple, l'affichage avec une symbolisation par défaut). Cependant, une opération peut être considérablement ralentie si un accès aux données jointes est requis.
- Croiser des jointures de base de données, lorsque la table cible et la table à joindre sont issues de sources de données différentes, peut ralentir les performances. C'est particulièrement vrai lorsque la table de jointure provient d'une géodatabase ou d'une connexion OLE DB. Les performances sont bien meilleures lorsque la table de jointure provient d'une source de données basée sur un fichier (comme un fichier de formes, un fichier dBASE et des couvertures) et que la table cible possède un champ ObjectID (la plupart des sources de données).
- Joindre plusieurs tables ou couches à une seule couche peut s'avérer coûteux en termes de performances. Si toutes les données proviennent du même serveur ArcSDE et que vous sélectionnez l'option Conserver uniquement les enregistrements correspondants lors de la jointure, les performances ne devraient pas trop être affectées.
Raisons pour lesquelles les jointures de données peuvent échouer
Après avoir effectué une jointure, les valeurs des champs de la table jointe peuvent être vides ou nulles. Les valeurs Null peuvent être le résultat de plusieurs facteurs :
- Les valeurs des champs spécifiés pour la jointure ne correspondent pas.
Comme les jointures respectent la casse, gardez cette consigne à l'esprit lorsque vous utilisez des champs de type chaîne pour créer une jointure. Par exemple, NEW YORK ne sera pas joint à New York. Pour convertir des valeurs de chaîne dans la casse appropriée, reportez-vous à cette tâche dans Exécution de calculs de champs.
- Le nom de la table ou de la classe d'entités, ou les noms de champ de la table ou de la classe d'entités, comportent des espaces ou des caractères spéciaux.
Les caractères spéciaux incluent les tirets, comme dans coordonnées-x et coordonnées-y, les parenthèses, les crochets et les symboles tels que $, % et #. De manière générale, supprimez tout élément autre qu'un caractère alphanumérique ou un trait de soulignement, et évitez de commencer les noms de champ par un nombre ou un trait de soulignement. Veillez à modifier les noms de champ dans les fichiers texte délimités ou les autres tables afin de supprimer les caractères non pris en charge avant d'utiliser les fichiers dans ArcGIS. Les noms de classes d'entités de géodatabase, de tables et de champs peuvent contenir jusqu'à 64 caractères. (Plus spécifiquement, vous pouvez uniquement entrer jusqu'à 52 caractères pour le nom d'une classe d'entités de géodatabase personnelle car le système ajoute des caractères pour obtenir un total de 64 caractères.) Les fichiers de formes et les noms de champs .dbf peuvent contenir jusqu'à 10 caractères. Pour les tables INFO, utilisez jusqu'à 16 lettres ou chiffres. Pour obtenir d'autres conseils de nomenclature, reportez-vous à la rubrique Ajout et suppression de champs.
- Les noms de champ de la table représentent des mots réservés Microsoft Access.
Voici quelques exemples : date, day, month, table, text, user, when, where, year et zone. Pour connaître la liste des mots réservés, consultez la page du support Microsoft (KB 286335).
- La table est stockée dans une base de données Microsoft Access qui n'est pas une géodatabase personnelle.
Il est conseillé d'accéder aux tables Microsoft Access dans ArcGIS via une connexion OLE DB plutôt qu'en essayant d'ajouter directement la base de données à ArcMap. Pour en savoir plus sur la manière d'ajouter une connexion OLE DB, reportez-vous à la rubrique Utilisation de fichiers Microsoft Access dans ArcGIS.