Expand my Community achievements bar.

Applications for the 2024-2025 Adobe Analytics Champion Program are open!

Better classification handling


Level 9



So here's the thing..  I work with many clients who have lots of report suites and classified variables (elements).  Classifications for variables (elements) get misaligned all the time.  The problem is that within the Adobe Analytics interface, you can select multiple report suites, but in order to select/edit classifications for a given variable/element, the classifications for it must be currently aligned for all of the selected report suites.  


The interface does not provide a way to choose one as a "template" to overwrite, like it does for customized menus.  Nor does it give you the ability to copy to other report suites like it does with processing rules.   Adobe interface doesn't even provide a way to easily see which ones are misaligned!  


In short, the Adobe Interface provides no good way to deal with classifications for multiple report suites at a time, which is really, REALLY frustrating.  Especially for me, since the company I work for is an Adobe Partner and we don't just deal with one account; we deal with a steady stream of new and existing clients, so this is a frequently recurring issue for us.  


So, as with many other things, I've turned to the Adobe API to see if I can utilize it to provide a better interface for both myself and Adobe clients.  


What I have found is underwhelming. The API provides the following:


ReportSuite.GetClassifications - Specify 1 or more elements and 1 or more report suites and get classifications for them.


ReportSuite.DeleteClassification - Specify 1 element, 1 classification column name, and 1 or more report suites to delete column for.  Classifications must be aligned if you specify more than one report suite. 


ReportSuite.SaveClassification - Specify 1 element, 1 classification column name, and 1 or more report suites to add column for.  Classifications must be aligned if you specify more than one report suite.


GetClassifications is okay, but the other two are lacking.  Because the report suites must have aligned classifications to begin with, the only to make sure classifications for a given element is aligned for a given list of rsids is to loop through each report suite, and for each report suite, loop through each classification column and delete the column one at a time.  Then I can loop through each NEW classification column and apply to all report suites at once, since at that point, they are aligned (wiped blank).  


This is a lot of API calls to make, and it's very inefficient.  I would LOVE to see the methods updated to allow for me to not have to do this.  For example, I'd like a an updated DeleteClassification (or maybe a new DeleteClassifications or DeleteAllClassifications) method that will allow me to just 1-shot delete ALL classifications for a given element, along with specifying one or more rsid.


So for example, this is what I would like to be able to do:


ReportSuite.DeleteAllClassifications { "element_list":["trackingcode","evar1"], "rsid_list":["rsid1","rsid2","rsid3"] }



I specify one or more elements and one or more report suites and boom, it deletes everything. 


For SaveClassifications, I'd like to be able to specify more than one classification to add. This should be a lot easier to implement.  Currently I specify:


ReportSuite.SaveClassification { "date_enabled":"(boolean)", "element":"(string)", "name":"(string)", "new_name":"(string)", "parent_name":"(string)", "rsid_list":[ "(string)" ], "type":"(string)" }



All I should need to do is supply an array of that json object and you'd just loop through it on your end, e.g.


ReportSuite.SaveClassification [ { "date_enabled":"(boolean)", "element":"(string)", "name":"(string)", "new_name":"(string)", "parent_name":"(string)", "rsid_list":[ "(string)" ], "type":"(string)" }, { "date_enabled":"(boolean)", "element":"(string)", "name":"(string)", "new_name":"(string)", "parent_name":"(string)", "rsid_list":[ "(string)" ], "type":"(string)" } ]




The overall point here is that one way or the other, there needs to be a better way to manipulate classifications across multiple report suites. 

1 Comment


Level 9


Just to put this into perspective.. I recently had to reclassify s.campaigns for a client.  They have ~350 report suites.  s.campaigns currently had 12 classification columns that had to be relabeled.


Based on the limitations of the API, to complete this, it took:


1 API call to get the rsids and current classifications

350 * 12 = 4200 API calls to delete each classification column from each rsid. 

12 API calls to add the new columns


So it took a total of 4213 API calls it took to accomplish this task.  The script took just over 9 hours to run its course. 


My suggested changes to the API would reduce this to as little as 3 API calls.