Résumé
Valide une jointure entre deux couches ou deux tables afin de déterminer si les tables ou couches comportent des noms des champs valides et des champs d’identifiant d’objet, et si la jointure produit des enregistrements correspondants et d’autres propriétés de jointure.
L’outil outil ne produit pas une jointure, mais se contente d’analyser une jointure potentielle. Il est possible de créer la jointure dont la validation est en cours par cet outil à l’aide des outils Ajouter une jointure ou Joindre un champ. Cet outil présente les résultats de la validation de la jointure sous forme de messages et, éventuellement, sous forme d’une table en sortie.
Utilisation
Cet outil va créer des messages pour signaler les caractéristiques de la jointure validée et notamment :
- Le nombre de lignes et le nombre d’appariements entre la couche, ou la vue tabulaire, en entrée et la table de jointure. Si la jointure ne génère aucun appariement, un message d’avertissement est inclus. Le nombre de lignes et le nombre d’appariements sont également renvoyés sous forme de sorties dérivées de l’outil.
- Si les tables de jointure ne comportent pas d’identifiant d’objet, un message d’avertissement est inclus.
- La cardinalité de la jointure (si elle produit des résultats un à un ou un à plusieurs).
- Si les champs de jointure commencent par des caractères non valides ou comportent des caractères qui posent problèmes, un message d’avertissement est inclus.
- Si les champs de jointure utilisent des mots-clés SQL réservés, un message d’avertissement est inclus.
- Les champs de jointure sont indexés ou ne comportent pas d’index attributaire. Les index de champ présentent des performances optimales pour certains formats de données.
- Les tables de jointure ne proviennent pas du même espace de travail. Lorsque la couche ou la vue tabulaire en entrée et la table de jointure sont stockées dans le même espace de travail ou la même base de données, les performances de la jointure seront considérablement améliorées. Il est possible de joindre des tables de différentes bases de données, mais les performances seront réduites car la base de données ne permet pas d’effectuer la jointure.
Cet outil produit une table en sortie facultative qui répertorie les problèmes détectés dans la jointure validée. La table en sortie contiendra les champs suivants :
- TYPE—Mot-clé utilisé pour indiquer une caractéristique spécifique détectée dans la jointure validée. Les valeurs sont notamment les suivantes :
Mot-clé Description GPM_INVALID_CHARACTER_IN_NAME
Le champ contient un caractère non valide dans son nom.
GPM_INVALID_FIRST_CHARACTERS_MSG
Le premier caractère du champ n’est pas valide.
GPM_RESERVED_SQL_KEYWORD
Le nom du champ comporte des mots-clés SQL réservés.
GPM_NO_MATCH_JOIN
La jointure ne génère aucun appariement.
GPM_NO_OBJECTID_JOIN
La couche ou la table n’a pas de champ de l’identifiant d’objet.
GPM_NOT_INDEX_FIELD
Le champ n’est pas indexé.
DIFFERENT_WORKSPACE
Les tables sont stockées dans des espaces de travail ou des bases de données différentes.
- TABLE_NAME—Nom de la table qui a produit les messages de validation de la jointure ou l’avertissement.
- FIELD_NAME—Nom du champ figurant dans la couche ou la vue tabulaire en entrée et la table de jointure qui ont produit le message de validation de la jointure ou l’avertissement.
- DESC—Description détaillée du message de validation ou d’avertissement, comportant des informations sur le mode de résolution d’un problème.
- TYPE—Mot-clé utilisé pour indiquer une caractéristique spécifique détectée dans la jointure validée. Les valeurs sont notamment les suivantes :
La cardinalité de la jointure (jointure un à un ou un à plusieurs) sera validée par cet outil. Les enregistrements de la table de jointure peuvent être appariés à plusieurs enregistrements dans la couche ou la vue tabulaire en entrée. De la même façon, plusieurs enregistrements de la table de jointure peuvent être appariés à un enregistrement dans la couche ou la vue tabulaire afin de produire une jointure un à plusieurs.
Syntaxe
ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
Paramètre | Explication | Type de données |
in_layer_or_view | La couche ou vue tabulaire dont la jointure avec la table de jointure est à valider. | Mosaic Layer; Raster Layer; Table View |
in_field | Le champ de la couche ou de la vue tabulaire en entrée sur lequel la jointure sera basée. | Field |
join_table | Table ou vue tabulaire dont la jointure avec la couche ou vue tabulaire est à valider. | Mosaic Layer; Raster Layer; Table View |
join_field | Champ dans la table de jointure qui contient les valeurs sur lesquelles sera basée la jointure. | Field |
output_msg (Facultatif) | Table en sortie contenant les messages de validation sous forme tabulaire. | Table |
Sortie dérivée
Nom | Explication | Type de données |
match_count | Nombre d’enregistrements uniques de la couche ou table en entrée correspondant à un enregistrement dans la couche ou table de jointure. | Longue |
row_count | Nombre d’enregistrements produits par la jointure entre les couches, ou les tables, en entrée et de jointure. Les jointures un à plusieurs comptabilisent chaque paire d’enregistrements appariés. En raison des jointures un à plusieurs, le nombre de lignes en sortie peut être supérieur au nombre d’appariements. | Longue |
Exemple de code
Le script de fenêtre Python ci-dessous illustre l'utilisation de la fonction ValidateJoin en mode immédiat.
import arcpy
arcpy.ValidateJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
arcpy.AddJoin_management("vegetation", "HOLLAND95", "vegtable", "HOLLAND95")
Ce script autonome illustre la fonction ValidateJoin dans le cadre d’un processus permettant de joindre une table à une classe d’entités.
# Name: AttributeJoin.py
# Purpose: Join a table to a feature class and find one-to-many matches
# Import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.env.qualifiedFieldNames = False
# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95" # both tables have HOLLAND95 field
outFeatures = "Vegtype_Joined"
# Join the feature layer to a table
val_res = arcpy.ValidateJoin_management(inFeatures, joinField, joinTable, joinField)
matched = int(val_res[0])
row_count = int(val_res[1])
print(arcpy.GetMessages()) # Tool messages about the Join
# Validate the join returns matched rows before proceeding
if matched >= 1:
joined = arcpy.AddJoin_management(inFeatures, joinField, joinTable, joinField)
# Copy the joined layer to a new permanent feature class
arcpy.CopyFeatures_management(joined, outFeatures)
print(f"Output Features: {outFeatures} had matches {matched} and created {row_count} records")
Environnements
Informations de licence
- Basic: Oui
- Standard: Oui
- Advanced: Oui
Rubriques connexes
Vous avez un commentaire à formuler concernant cette rubrique ?