Valider la jointure (Gestion des données)

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.

  • 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

arcpy.management.ValidateJoin(in_layer_or_view, in_field, join_table, join_field, {output_msg})
ParamètreExplicationType 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

NomExplicationType 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.

Long
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.

Long

Exemple de code

Exemple 1 d’utilisation de l’outil ValidateJoin (fenêtre Python)

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")
Exemple 2 d’utilisation de l’outil ValidateJoin (script autonome)

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")

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes