Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Adobe Analytics - Connector Toolkit

Coxta45
11 - Bolide

Hi, Alteryx Community!

 

I have been working for several months now on my very own edition of an Abode Analytics connector.  I was very pleased to see the publication of the first iteration of Alteryx's connector with the release of 10.5.  However,  I thought I'd share the work that I've done for those that may still be seeking some additional options and/or capabilities from the Adobe Marketing Cloud API.

 

The toolkit can be downloaded and imported via the attached package (Adobe Analytics.yxzp).  Upon importing, please review the README.txt file!  It is very helpful in understanding not only how the toolkit is configured but more importantly understanding, at a high-level, how the API is architected and what its limitations are.

 

REQUIREMENT:  Alteryx 10.1+ with predictive tools

RECOMMENDED:  Install/import this package in your Macro folder

 

There are 2 configuration Applications that must be run prior to using the included download tool.

 

FIRST

 

In the package folder, run the application 'Adobe Analytics' (as an app, of course).   It prompts to load automatically upon importing this package. This application will authenticate your login credentials and, if successful, load a list of available Report Suites that can then be added to your available library.

 

 

Auth.png

 

 

SECOND

 

The aforementioned app should chain to a Library Manager app.  This app loads metadata for a specific Report Suite into your available library.


1.  Either re-enter your login credentials or choose from a saved profile if you saved one from the prior app.
2.  Select a Report Suite to load into your library.
3.  Click finish.

 

Library_Creds.pngLibrary_Add.png


After this runs, if you were to exit and re-open the application, you should see the available library in the list at the bottom of te second tab.
You can run this at any time to add additional Report Suites, reset your library, or refresh the list of available Report Suites.

FINALLY!  

Now that configuration is complete, the Download Tool can go to work!  Open the Adobe Analytics - Example workflow to get started!

 

Sample Workflow...

Sample Flow.PNG

 

Configuration Window (4 tabs)...

 

Config_1.PNG

Config_2.PNG

Config_3.PNG

Config_4.PNG

 

I hope you all will find this to be very useful if you're looking to pull Adobe data into your Alteryx workflows.  Please don't hesitate to post questions/concerns.  Feedback is always welcome and I'm sure there is significant room for improvement.  In the meantime,  I'll be working on a second version that uses different authentication methods and won't be limited to developer connections (requiring API Shared Secret). However, if the need for this data is urgent enough, you should be able to ask your site admin for an API Shared Secret (API Key).

 

P.S.  The Adobe Analytics - Download Tool can easily be converted into an Application!  I've published one to our company's gallery to provide self-service capabilities to our gallery users!

 

Best Regards,

 

Taylor Cox

23 REPLIES 23
lshiffman
5 - Atom

Hi Taylor,

 

Do you know if there is a way to get around the 50,000 record limit?  I'm trying to pull data that has over 200K records, but it seems that I can't return more than 50,000 records due to the Primary Element Record Limit on the Segments/Elements tab of the Adobe connector.  Do you know any way to pull more records?

 

Thanks!

Coxta45
11 - Bolide

I'd like to see what Alteryx does with their Adobe tool in the upcoming release of Alteryx 11.0.  If it's more of the same, I'll work on publishing a new version of this connector with some additional functionality.  I do believe, however, that they're working on a new version.  At least they said they were going to when I met with the product engineers at Inspire 16 in San Diego.

 

Cheers,

Taylor

Coxta45
11 - Bolide

@Ishiffman,

 

Unfortunately, this is a painful limitation set by the Adobe Marketing Cloud API.  There is a workaround, however.  You can pull your data using "pagination" and union the sets once you have the full results.  In the Segments/Elements tab, when you have the "Include Elements" radio selected, you'll see a section labeled "Primary Element Record Limits" that allows you to specify "Top" (up to 50,000) and "Starting With".

 

So for 200k records, you'll need 4 instances of the tool to accomplish this.  The first pulls top 50,000 starting with 1, the second pulls top 50,000 starting with 50,001, etc...  Then union the results, sorry it's not easier.

 

Regards,

Taylor

 

 

apolly
Alteryx Alumni (Retired)

Hi Alteryx Community,

 

First, thank you to @Coxta45, Taylor, for your work on the Adobe tool you’ve shared via Alteryx Gallery.

 

Secondly, we are developing a new Adobe Analytics connector. It will not be part of Alteryx Designer 11.0, because it will be released via Gallery for anyone to download. It will be released around the same timeframe as 11.0 (Q1 2017) so you should have the same expectations. The updated connector will have functionality introduced by Taylor and will be a much improved tool.

 

Thank you.  

Coxta45
11 - Bolide

Alex,

 

Thanks!  This is great news,  looking forward to the news releases!!

lshiffman
5 - Atom

Thanks all for your responses.  Taylor - I will try unioning the results as a work-around for now.  Looking forward to the new release in Q1 then!


Thanks,

Liza

apolly
Alteryx Alumni (Retired)

@lshiffmanI'm glad you are as excited as we are, but the 50k rate limit is a limitation set by Adobe. The new Adobe connector will be a great upgrade, but unless Adobe removes this restriction, we will be unable to do much about that specific limitation.

Christopher11
5 - Atom

Hello Coxta45

 

Thank you so much for sharing this, it works and is very useful, yet i am wondering if you can reply how the actual API call looks like? I know it depends on whatever you choose as setting, but just the foundation of it? I am having trouble to figure this one out. I have a client who request which API query i am using, and obviously wants to reply.

 

Thank you in advance :-)

 

/Christopher

Coxta45
11 - Bolide

Christopher11,

 

Glad you're finding the tool useful.  Adobe has an API Explorer that I found extremely useful when I was developing this.  Once you log in with your Omniturecredentials,  you'll be able t create sample calls, etc. and view the required headers and JSON arrays for your calls.  Here is super brief run down of a typical report queue:

 

  1. Queue a report
    1. Endpoint: https://api.omniture.com/admin/1.4/rest/?method=Report.Queue
    2. Headers:  UsernameToken Username="username:Company", PasswordDigest="B8l+e2QeXCtg9rGeqXX6myypKdk=", Nonce="ZGNkOGEwMDMtOTc0Ny01YzYxLTRmMzktNDg2MzRhMGU5NTRj", Created="2016-12-19T15:19:23+00:00"
      1. Note:  this set of headers would only work ONE time, as you'll need to create a unique hashed Nonce for each call.
    3. Sample Call Body: {"reportDescription":
      {"reportSuiteID":"bcbsncbcbsnc",
      "dateFrom":"2016-12-19",
      "dateTo":"2016-12-19",
      "dateGranularity":"day",
      "metrics":[
      {"id":"uniquevisitors"},
      {"id":"visits"},
      {"id":"pageviews"}
      ],
      "elements":[
      {"id":"mobiledevicetype",
      "classification":"",
      "top":"10",
      "startingWith":"1"}
      ],
      "segments":[
      {"id":"537d2a5be4b0748a2cab1599"}
      ],
      "currentData":"0"
      }
      }
    4. Response: {"reportID":0123456789}
  2. At this point you'll take that report ID and begin asking for the report
    1. Endpoint: 
    2. Headers:  Same as above with new Nonce/Timestamp etc.
    3. Call Body: {
      "reportID":"0123456789"
      }
    4. Response:  The response here will either yield the results or tell you that report has not finished running.
    5. Parse The Results:
      1. Results will look similar to this:

 

{
"report":{
"type":"trended",
"elements":[
{
"id":"mobiledevicetype",
"name":"Device Type"
}
],
"reportSuite":{
"id":"reportsuite",
"name":"Report Suite Name"
},
"period":"Mon. 19 Dec. 2016",
"metrics":[
{
"id":"pageviews",
"name":"Page Views",
"type":"number",
"decimals":0,
"latency":1883,
"current":false
},
{
"id":"uniquevisitors",
"name":"Unique Visitors",
"type":"number",
"decimals":0,
"latency":1883,
"current":false
},
{
"id":"visits",
"name":"Visits",
"type":"number",
"decimals":0,
"latency":1883,
"current":false
}
],
"segments":[
{
"id":"537d2a5be4b0748a2cab1599",
"name":"A Cool Segment"
}
],
"data":[
{
"name":"Mon. 19 Dec. 2016",
"year":2016,
"month":12,
"day":19,
"breakdown":[
{
"name":"Other",
"url":"",
"counts":[
"29464",
"2665",
"2772"
]
},
{
"name":"Mobile Phone",
"url":"",
"counts":[
"4327",
"482",
"512"
]
},
{
"name":"Tablet",
"url":"",
"counts":[
"1544",
"159",
"163"
]
},
{
"name":"Media Player",
"url":"",
"counts":[
"30",
"1",
"2"
]
}
],
"breakdownTotal":[
"35365",
"3307",
"3449"
]
}
],
"totals":[
"35365",
"3307",
"3449"
],
"version":"1.4.16.10"
},
"waitSeconds":0,
"runSeconds":0
}

 

 

Hope this is helpful.  I'd encourage you to use the API Explorer, it will be most helpful.

Coxta45
11 - Bolide

Christopher11

 

Thanks, I'm glad you're finding the tool useful.  Adobe has a great API Explorer that found to be extremely using while developing this connector.  Here is a brief rundown of how retrieving reports works the API:

 

API is RESTful, using POST methods..

 

  1. Queue a report...
    • Endpoint:  https://api.omniture.com/admin/1.4/rest/?method=Report.Queue
    • Headers:  UsernameToken Username="username:CompanyName", PasswordDigest="j/G93u+bdc5iDhm0NDNUbiZWfBE=", Nonce="ZTNhYWExMTUtYWU1Yy1iZDcyLTVmODctMjEwMzljNTYxMmI0", Created="2016-12-19T16:00:50+00:00"
      • Note:  You'll need to create your own hashed, unique, Nonces, Timestamps and PasswordDigests (HMAC SHA1)
    • Sample Call Body:{"reportDescription":
      {"reportSuiteID":"yourreportsuite",
      "dateFrom":"2016-12-19",
      "dateTo":"2016-12-19",
      "dateGranularity":"day",
      "metrics":[
      {"id":"uniquevisitors"},
      {"id":"visits"},
      {"id":"pageviews"}
      ],
      "elements":[
      {"id":"yourelementid",
      "classification":"",
      "top":"10",
      "startingWith":"1"}
      ],
      "segments":[
      {"id":"yoursegmentid"}
      ],
      "currentData":"0"
      }
      }
    • Reponse:  {"reportID":"0123456789"}
  2. Given the reportID, make the call to retrieve the report.
    1. Endpoint:  https://api.omniture.com/admin/1.4/rest/?method=Report.Queue
    2. Headers:  Same as above, new Nonce, Timestamp
    3. Call Body:
      • {"reportID":"0123456789"}
    4. Response will either yield results or a message saying it's not finished running..
    5. PARSE AWAY!!!

I hope this is helpful, but please check out the API Explorer as well as the API documentation on Adobe's website.

 

Taylor

Labels