Reltio Connect

 View Only
  • 1.  Change ResolveLookupCode from false to true for Attribute: Any Additional Maintenance Required?

    Posted 04-11-2023 11:41

    Hi,

    We are looking to add ResolveLookupCode = true for a few specific attributes. The current physical configuration has value of false.
    I understand that were we to be changing from true to false, that we would need to reload the data.

    Want to make sure there is no data load or other maintenance required when going to true from false.

    For matching ResolveLookupStrategy is set to LOOKUP_VALUE.

    Reason for the change is for Survivorship filtering.

    Thanks,

    Mark



    ------------------------------
    Mark Burlock
    Dodge Data & Analytics
    Hamilton NJ
    ------------------------------


  • 2.  RE: Change ResolveLookupCode from false to true for Attribute: Any Additional Maintenance Required?

    Reltio Partner
    Posted 04-13-2023 10:47

    Hi Mark,

    I expect that the values in Reltio's backend database will not change until you reload the data. Could you please describe in a bit more detail what is your survivorship and what are the values in the RDM and I might be able to provide a better answer?

    We have also written a blog post on how the resolveLookupCode parameter works and there is one on Reltio's official documentation site which may help you.



    ------------------------------
    Lyubomira Alexandrova
    Ulpia Tech
    ------------------------------



  • 3.  RE: Change ResolveLookupCode from false to true for Attribute: Any Additional Maintenance Required?

    Posted 04-14-2023 13:55

    Lyubomira,

    It does appear that the change in database values when modifying resolveLookupCode to true for an attribute in the L3 does in fact occur without have to do a reload of the data.

    For specific attribute in question:

    Before Config Change:
                     "value": "Architect",
                    "lookupCode": "1",
                    "lookupRawValue": "00008",
    After Config Change:
                    "value": "Architect",
                    "lookupCode": "1",
                    "lookupValue": "Architect",

    I appreciate your taking the time to respond and your posting was very helpful.

    Thanks,
    Mark



    ------------------------------
    Mark Burlock
    Dodge Data & Analytics
    Hamilton NJ
    ------------------------------



  • 4.  RE: Change ResolveLookupCode from false to true for Attribute: Any Additional Maintenance Required?

    Reltio Partner
    Posted 04-19-2023 12:31

    Hi Mark,

    I do not believe that Reltio changes the value in the underlined storage without reloading the data because:

    1. This could be a heavy operation and it might take a while. Consider if you have tens of millions of records that contribute attribute values and those attribute values have to be updated by Reltio automatically. I also noticed that as soon as the resolveLookupCode setting is updated I start receiving the updated Reltio response.

    2. If the underlined storage is updated automatically when you go from resolveLookupCode=false to resolveLookupCode=true and does not occur when you go from resolveLookupCode=true to resolveLookupCode=false, that would make the behavior inconsistent which is not a best practice design.

    You are right that when you switch from resolveLookupCode=false to resolveLookupCode=true a reload should not be done because even if you do it and push the exact same values, they won't change in Reltio's underlined storage. The values will change only if you push a different value.

    I also conducted some experimentation which I am sharing below:

    If we observe the Id(URI) of the attribute value and how it changes we will see that it changes only when there is a different value pushed.

    Example

    • If I push for a value "00008", I will have:
              "value": "Architect",
              "lookupCode": "1",
              "lookupRawValue": "00008",
              "uri": "id1"
    • If I push again the value "00008" from the same crosswalk I will get the same result with the same id: 
              "value": "Architect",
              "lookupCode": "1",
              "lookupRawValue": "00008",
              "uri": "id1"
    • If I change the value and I push "00005" from the same crosswalk I will get a different id: 
              "value": "Architect",
              "lookupCode": "1",
              "lookupRawValue": "00005",
              "uri": "id2"

    This shows that Reltio updates the value in the backend storage only if there is a change in the attribute value.

    • If I have the setting resolveLookupCode=false which preserves the lookupRawValue and I push the value "00008" I will get: 
              "value": "Architect",
              "lookupCode": "1",
              "lookupRawValue": "00008",
              "uri": "id3"
    • If I flip resolveLookupCode to true and I pull the entity (without making any change), I will get the same Id for the attribute, but lookupValue instead of lookupRawValue: 
              "value": "Architect",
              "lookupCode": "1",
              "lookupValue": "Architect",
              "uri": "id3"
    • If I reload the data from this crosswalk and push "00008" again I will get the same Id for the attribute value:
              "value": "Architect",
              "lookupCode": "1",
              "lookupValue": "Architect",
              "uri": "id3"

    Interestingly, if I flip again to false and pull the entity without doing a reload, I will receive again "00008".

    This indicates that when I flip resolveLookupCode from false to true, the attribute value in the underlined storage does not change even when I am reloading the data. In my last example, I am pushing the same value "00008" and Reltio doesn't detect any change in the attribute value and returns the same Id. If after some time I push again "00008" from the same crosswalk I will get the same Id - "id3". 

    So in conclusion, when you change from resolveLookupCode=false to resolveLookupCode=true you do not need to reload the data. Reloading the data is completely redundant and does not have any impact on Reltio and data storage. The values stored will remain the same as they were stored when initially pushed while resolveLookupCode was set to false.

    When you change from resolveLookupCode=true to resolveLookupCode=false you must reload the data to see the correct value for lookupRawValue. 

    One exception to this rule which is a corner case and only listed here for completeness is in the following scenario: 

    • Step 1: resolveLookupCode = false 
    • Step 2: push "00008"
    • Step 3: change to resolveLookupCode = true 
    • Step 4: do not push anything or push the same value "00008"
    • Step 5: change to resolveLookupCode = false

    In this scenario, reloading is not necessary because the value Reltio stores is still "00008" which is retained from step 2.

    What confuses me is how Reltio decides when to update the value in the underlined Reltio storage and whether the value
    results in a new value and it should receive a new Id or it is the same value and it should retain the Reltio Id. 
    Example 

    • Step 1: resolveLookupCode = false
    • Step 2: push "00008"
    • Step 3: change to resolveLookupCode = true 
    • Step 4: push the same value "00008"
    • Step 5: change to resolveLookupCode = false

    Here, I expected that in step 4 Reltio should have stored the resolved value "1" and changed the Id of the attribute value. Instead, it retained the stored value as "00008" even though resolveLookupCode was set to true.

    I will be curious to see further explanations from Reltio on this topic.



    ------------------------------
    Lyubomira Alexandrova
    Ulpia Tech
    ------------------------------