Select to view content in your preferred language

Simple join between shapefile and table producing no matches upon validation

1028
7
12-13-2023 05:46 AM
Labels (1)
Mike09
by
New Contributor II

I'm trying to create a join between a shapefile and a table on ArcGIS Pro, but when I tried to validate the join it told me there were no matches. So far I've checked the following common issues:

I confirmed that I had entries in both tables that matched exactly (same spelling, all uppercase, no extra spaces); so I should at least get some matches

I confirmed that they were both the same format (both are text)

I tried different formats for the table (Excel, CSV, DBF)

I made sure the column I was performing a join on had actual values and not an Excel formula

I exported both the shapefile and the table to my geodatabase to try there as well

Does anyone have any other ideas or suggestions for what might be the issue? If I can't get this join to work then I won't be able to use this data in my analysis because it would be far too expensive to geocode a table that large.

0 Kudos
7 Replies
Eugene_Adkins
Occasional Contributor III

Is the Pro version 3.2? If so, I don't know if this is the first time you've tried creating a join with that version, but I had to revert back to 3.1 because of join issues with 3.2 that prevented me from doing regular workflows.

0 Kudos
Mike09
by
New Contributor II

It is 3.2, but I've done other, admittedly much smaller, joins successfully with this version. As part of my troubleshooting I just did a join on a small test table to my layer and it was successful. What issues has 3.2 been having with joins?

0 Kudos
Eugene_Adkins
Occasional Contributor III

A couple different issues. The validation would show "X" amount of returned matches but when the join was applied the attribute table was blank. I contacted tech support and we did tests with a FGDB (instead of my enterprise sourced data) and we also witnessed behavior that returned inaccurate results, though different from the enterprise sourced data. Tech support wanted to do further testing but the case was closed because I did not have time due to the issue preventing me from completing workflows that work normally in 3.1.1.

You can search "join" and "Pro 3.2" on the "ArcGIS Pro Questions" main page and get a couple of returns from others experience varying issues. 

DanPatterson
MVP Esteemed Contributor

Could you show a couple of rows from both tables that should match (a screen grab of both would help)

You said you check for spaces... including trailing spaces?


... sort of retired...
0 Kudos
Robert_LeClair
Esri Notable Contributor

Is your "Index Joined Fields" check box checked?  If so, uncheck and try the join again.  There was a BUG-000159354 that was fixed in ArcGIS Pro 3.2 but it has me wondering if it's related.

MichaelKohler
Occasional Contributor III

Thank you

I was having issues with a very simple join between a feature class and table in a FGDB. Nothing that I did, no matter where the data was located or stored, ever worked. I made sure that the "Index Joined Field" box and  the "Rebuild Join Field Indexes" were both checked, and the Join worked.

Running ArcPro 3.2.2

 

0 Kudos
AlfredBaldenweck
MVP Regular Contributor

I just had to investigate this for something I was doing as well.

This is a quick script I wrote to check what was wrong (I had extra spaces, among other things-- inconsistent abbreviations, etc.)

This might help find the issue?

mp= arcpy.mp.ArcGISProject("CURRENT").activeMap
lay = mp.listLayers("allot")[0] # table one
tbl = mp.listTables("permlist")[0] # table 2
layList = []
tblList = []
# stick in the join fields to each cursor, append to list. 
with arcpy.da.SearchCursor(lay, "ALLOT_NAME") as cursor:
    for row in cursor:
        layList.append(row[0])
with arcpy.da.SearchCursor(tbl, "Allotment_Name") as cursor:
    for row in cursor:
        tblList.append(row[0])
# Get unique values
layList = list(set(layList))
tblList = list(set(tblList))
# subtract each one from the other.
# this made sense in my work flow, since I needed to check
#    if all the values in "lay" were actually represented in
#    "tbl".
# if not, just comment out anything involving notintbl
notintbl = [t for t in layList if t not in tblList]
notinlay = [a for a in tblList if a not in layList]
notintbl.sort()
notinlay.sort()
# print the missing values.
print(notintbl)
print(notinlay)
0 Kudos