GlobalID inconsistent display

3197
21
10-31-2019 09:28 AM
DougBrowning
MVP Esteemed Contributor

I am seeing that the Attribute Table and the Attributes pane show GlobalID differently. One is all upper case and one is lower.

I would call it a bug.

thanks

Tags (1)
21 Replies
GarrettSeay1
New Contributor III

ArcMap has them all capital letters in Attribute pane, Attribute Table, and Identify Table.

I would agree with you.

0 Kudos
KoryKramer
Esri Community Moderator

I don't see this in a dev build of ArcGIS Pro 2.5:

0 Kudos
GarrettSeay1
New Contributor III

Just tested in ArcGIS Pro 2.4.0 and didn't see it as well:

0 Kudos
DougBrowning
MVP Esteemed Contributor

@GarrettSeay1 I think this is because your original table is uppercase.  Try a lowercase globalid and see if the popup turns it to caps.

0 Kudos
DougBrowning
MVP Esteemed Contributor
James_Whitacre
Occasional Contributor

THIS IS A SERIOUS ISSUE THAT ESRI NEEDS TO ADDRESS ASAP!!!

ESRI PLEASE ADDRESS AND SOLVE THIS ISSUE!!

I am also seeing this issue. I am not working in Survey123, but I am working with an ArcGIS Online feature service using a one-to-many relationship between point feature layer (key field: GlobalID) and polygon feature layer (key field: GUID), which is how Esri suggests creating relationships.

I don't want to get into the details of my use case because it is a bit complicated and I can't yet share my code, but here is the basic pseudo-workflow in Python (Note: 'feature layer'=ArcGIS Online; 'feature class'=file GDB:

  1. Copy the selected point feature layer to the local scratch GDB as a feature class. (Note: Yes this is needed...too many details to explain why...no comments on this please)
  2. Use a arcpy.da.SearchCursor to extract the field values from the point feature class that will be populated to the polygon feature class, including the GlobalID. (Note: I think it is at this point that the GlobalID is converted from lowercase alpha chars in the feature layer to UPPERCASE alpha chars in the feature class. It also appears that the GlobalID field is converted to a string Python data type by the cursor.)
  3. Series of arcpy geoprocessing tools to create the feature class polygons in the scratch GDB. A GUID field is created in this step and calculated from the search cursor GlobalID of the point feature class. I also add '.lower()' to the GlobalID string. It calculates, but is still UPPERCASE alpha chars.
  4. Feature class polygons are appended to the polygon feature layer. Polygon feature layer GlobalIDs and GUID values retain UPPERCASE alpha chars.

So what happens to the relationship? When selecting the point features in the feature layer, the polygons do NOT show up as related. BUT! When I select a polygon from the feature layer, the point feature shows up in the relationship! Super weird...lowercase-to-UPPERCASE does NOT work, but UPPERCASE-to-lowercase does work!?!?!?

So, here are my questions...

  1. WTH is going on?
  2. Why are the AGO feature layers able to accept both lowercase and UPPERCASE GUID values, but file GDB feature classes only seem to accept UPPERCASE?
  3. Why does the relationship work one way, but not the other?
  4. Is this issue at the OS/Windows level with how it deals with UUIDs?
  5. Why does the GlobalID come out as a string datatype instead of a UUID or other class or byte-type?
  6. Do joins between GlobalIDs and GUIDs act like strings? If so why?

At any rate, all of this seems like some major design flaws that need to be fixed or tightened up. If Esri is going to tell us to use the GlobalID-to-GUID relationship key structure, these field-types and value-types need to be very strict. I thought they were...clearly I am WRONG!

Sorry for the rant, but this could derail a major project I have been working on for some time and this may require that I go all the way back to my GDB schema design and rework all of my Python code, and I do not want to do that.

 

EDIT: So, a workaround I discovered (that will NOT require me to go back to square one!) is to calculate the GUID field in the polygon AGO feature layer so that the values are lowercase (e.g. !GUID_Field!.lower()). While this will work, I still stand by my comments above, and I would hope that any programmer would agree that this is a flaw and that this extra step is asinine.

EDIT: Now the Append tool is refusing to append the GlobalID to the GUID field so the relationship can be made. This has really turned into a massive CF (sorry for the foul reference, but there is no other better descriptor...). Esri, any feedback here?? Please?

DougBrowning
MVP Esteemed Contributor

Actual video of it happening @James_Whitacre .  These came from 123, where some but not all forms store as lower.  I cannot even figure out which one is "correct".  I posted to 123 and they do not think it is an issue but it for sure is.  thanks  https://community.esri.com/t5/arcgis-survey123-questions/globalid-in-lowercase-from-collector-to-sur... 

ArcPro changes globalid to upper.gif

DougBrowning
MVP Esteemed Contributor

Ok this one is getting me in the web map now.  

It shows globalid as lower case in the attribute table but when I run a simple calc to put it into the FormID field it suddenly goes upper case! 

DougBrowning_0-1639600016563.png

Now the super fantastic part is relationship classes see the uppercase and lowercase as different so it breaks all the relates!

At this point how are we supposed to program around all of this?  I know this is not really Pro at this point but these kinds of inconsistencies is a killer.  I am still not sure which is correct?  What is the Esri standard?

Looking at this in Pro 2.8 I am still seeing the popup be different.  Have the others that posted tested opening up a Web map in Pro.  That is where I see this.  When I open I GDB they are both caps.

DougBrowning_0-1639665965027.png

 

Can we please hear from anyone?

Thanks

DougBrowning
MVP Esteemed Contributor

Am finding that both Field Maps are 123 are doing lowercase but AGOL does upper.  

See more examples here

https://community.esri.com/t5/arcgis-field-maps-questions/field-maps-is-creating-lowercase-globalid-...

thanks