Expand my Community achievements bar.

SOLVED

Map listvars to custom schema fields in Adobe Analytics source connector

Avatar

Level 2

We are trying to ingest Adobe Analytics report suite data into AEP via the Adobe Analytics source connector.

 

Using the custom mapping interface, it is for most cases fairly straight forward to map the "_experience" fields to the corresponding fields in our own "_tenant" custom fields collection.

 

Even for listprops it is fairly easy to create a calculated field, that creates a string of values to be used in CJA - for example this listprop:

join("|",_experience.analytics.customDimensions.listProps.prop34.values)

 

However for listvars this is not possible. First off, because there is no "values", there is only only the following available, which not permitted in the calculated field interface:

_experience.analytics.customDimensions.lists.list1.list[*].value

 

I have tried to just include the list:

join(",",_experience.analytics.customDimensions.lists.list1.list)

 

But that returns the full object in CJA, which is not ideal for reporting purposes - example:

{value=listvar-item1}

I even tried to use the "get" function not documented anywhere, but used in an example on the "Data Prep Mapping Functions" documentation page:

join("|",(_experience.analytics.customDimensions.lists.list1.list).get("value"))

But that does not work - it does not return any values.

 

If I had more array/object/string functions at my disposal I could work something out, but I rather stuck at the moment.

 

The standard mapping for the listvars (_experience.analytics.customDimensions.lists.list1.list => _experience.analytics.customDimensions.lists.list1.list), works just fine out of the box, and will return the individual elements as expected and shown in Adobe Analytics:

listvar-item1

Has anyone else successfully mapped the "_experience" listvars to custom fields only including the values, or perhaps someone from Adobe can assist? Or perhaps someone can share how the standard mapping works, and we can re-use that for the custom mapping?

Thank you in advance

1 Accepted Solution

Avatar

Correct answer by
Level 2

I solved the issue myself, by utilising the "replacestr" function (twice) to remove the redundant information, both in the beginning and the end of the individual objects:

replacestr((replacestr((join(",",to_array(true,_experience.analytics.customDimensions.lists.list1.list))),"{value=","")),"}","")

First I convert the object to an array and to a string, next I replace every occurrence of "{value=" from the string, and afterwards I remove the trailing "}" from the string, and finally I have the list in the desired format - from:
"{value=listvar-item1}" to "listvar-item1"

View solution in original post

1 Reply

Avatar

Correct answer by
Level 2

I solved the issue myself, by utilising the "replacestr" function (twice) to remove the redundant information, both in the beginning and the end of the individual objects:

replacestr((replacestr((join(",",to_array(true,_experience.analytics.customDimensions.lists.list1.list))),"{value=","")),"}","")

First I convert the object to an array and to a string, next I replace every occurrence of "{value=" from the string, and afterwards I remove the trailing "}" from the string, and finally I have the list in the desired format - from:
"{value=listvar-item1}" to "listvar-item1"