Expand my Community achievements bar.

SOLVED

Creating filters with High-cardinality values

Avatar

Level 2

Hello everyone,

I don't believe this is possible, but wanted to ask before I gave up .

Is there a way to create a filter/segment within the Adobe Analytics reporting suite that allows you to filter by a specific set of values, but one that is potentially very large, and with a very high level of cardinality. For example, say I have a list of 500 ID's thatt I want to create a filter/segment for, but I do not want to manually paste in each ID, line by line, to create my segment. Due to the nature of the data, regular expressions simply would not work.

Is this something that is possible? for the record, what I am trying to do here is take a customer evar (client ID) and run it against various tools within Adobe Analytics (such as the pathing analysis).

*fingers crossed*

Mike

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

You can use API to create large size segments quickly.


Example if you have evar1 as Customer ID and want to create a segment for all visits containing specific Customer IDs:

{

     "definition":{

          "container":{

               "type":"hits",

               "operator":"and",

               "rules":[

                    {"element":"evar1","operator":"equals","value":"12345"},

                    {"element":"evar1","operator":"equals","value":"23456"},

                    {"element":"evar1","operator":"equals","value":"34567"},

                    {"element":"evar1","operator":"equals","value":"45678"},

                    {"element":"evar1","operator":"equals","value":"56789"}

               ]

          }

     },

     "description":"creating Segment through API",

     "name":"Segment Name",

     "owner":"account_username",

     "reportSuiteID":"insertReportSuiteID",

}

You need to repeat the line 7 as many times as you have the Customer IDs. Notice the last line in rules (line 11) doesn't have a comma in the end.

You can run the API here: Developer Connection | Adobe Developer Connection

Your username and shared secret for the connection can be retrieved from your account. (let me know if you need more details)

I would recommend starting with a few values and checking the segment in the UI,

-Hyder

View solution in original post

13 Replies

Avatar

Employee Advisor

Hi Mike,

There is a workaround (maybe). If your segment is going to be based on hits (such that a filter would do the job as well), then you can use report builder to create the reports.

The first request one would be to get the high cardinality values. The second,a  dependent request based on the first, to get the actual data.

This can only work for a limited set of reports and scenarios. May or may not work for you.

-Hyder

Avatar

Level 2

Hey Hyder,

Thanks for your reply. I don't think report builder would work for my requirements—let me try to explain it better.

Let's say that I have 500 unique customer ID's that look like this XXXXXXXXXXXXXXXXXXX, with several different alphanumeric characters that are completely randomized with no patterns. There is no way for a regular expression to cover all of the values.

Is there a way to bulk upload these values, or to somehow create a filter/segment by pasting in all of these values at once? (assuming i have them in a 500-row spreadsheet) Is the only way to filter by these values manually pasting in each individual value?

Mike

Avatar

Employee Advisor

I was not referring to regular expressions.

If you are able to run the get these values in a column in report builder, you can run a dependent request on these values.

Anyway, you can create a segment using API as well quickly for the values you have. what variable are these values stored in?

-Hyder

Avatar

Level 2

Hi Hyder,

The variable is a custom Evar that is essentially a "customer ID" within our own customer database.

Unfrotunately there wouldn't be a way for me to run a query that filters for these ID's specifically within workspace. There are probably over 3.5M+ total ID's that exist, and i cant think of any common behaviourial characteristic that will allow me to pinpoint these 500 ID's specifically.

Not sure what you mean by API unfortunately, could you elaborate on that? Would there be a seperate application involved?

thanks again for your help,

Mike

Avatar

Correct answer by
Employee Advisor

You can use API to create large size segments quickly.


Example if you have evar1 as Customer ID and want to create a segment for all visits containing specific Customer IDs:

{

     "definition":{

          "container":{

               "type":"hits",

               "operator":"and",

               "rules":[

                    {"element":"evar1","operator":"equals","value":"12345"},

                    {"element":"evar1","operator":"equals","value":"23456"},

                    {"element":"evar1","operator":"equals","value":"34567"},

                    {"element":"evar1","operator":"equals","value":"45678"},

                    {"element":"evar1","operator":"equals","value":"56789"}

               ]

          }

     },

     "description":"creating Segment through API",

     "name":"Segment Name",

     "owner":"account_username",

     "reportSuiteID":"insertReportSuiteID",

}

You need to repeat the line 7 as many times as you have the Customer IDs. Notice the last line in rules (line 11) doesn't have a comma in the end.

You can run the API here: Developer Connection | Adobe Developer Connection

Your username and shared secret for the connection can be retrieved from your account. (let me know if you need more details)

I would recommend starting with a few values and checking the segment in the UI,

-Hyder

Avatar

Level 2

Hey Hyder,

thanks for your reply, and sorry i could not respond sooner.. I'm not that technical so i'm not familiar with how API's work in this context, but this looks like what I need so I will try to get this working.

Thank you!

Avatar

Level 2

Hey Hyder,

I know it's been almost a month since your reply, but I've finally gotten to this task and managed to get the API explorer working. I've created a few test segments, but I am finding that this method also does not work when the data set i am filtering against is very large. For example, I currently have about 8,000 unique values (encrypted customer ID's) that i'd like to filter against, and the error that I am receiving looks like this.

1265753_pastedImage_0.png

I can't imagine the reason being anything other than the segment has too many unique values to parse against. Is there something I can do here, or am I out of luck?

Any help/input is highly appreciated!

Thanks,

Mike

Avatar

Employee Advisor

I can not verify the request here.

I would recommend either of the two:

  1. If 8000 is giving an issue, try creating two separate segments with 4000 values and then using them together.
  2. Reach out to clientcare@adobe.com and provide the request so that we can verify it. (will need to be a supported user)

-Hyder

Avatar

Level 2

Hope you dont mind me reviving this old topic...

This script doesnt seem to work anymore. I know API explorer is being decomissioned soon, but i need it one last time for a task.

This is the error i get:

Capture.PNG

any thoughts/inputs would be appreciated!

Mike

Avatar

Employee Advisor

what's the request that is throwing the error? Has anything changed?

As for the API explorer being decomissioned; you can still use other tools to use the APIs (such as postman)

Avatar

Level 2

Thanks for the quick response!

Nothing has changed. below is the request i am currently trying to run:

Capture.PNG

I am currently going through the postman documentation.

Avatar

Level 2

I've figured it out. I kept the request the same but just shuffled things around. No idea what difference it makes but the segment worked. See below:

Capture.PNG

Thanks!

Avatar

Employee Advisor

Michael, great to know you resolved it!

I did not get time to run the code and investigate.