Adobe Analytics 2.0 API 用于获取报表套件事件、道具和 evar 的端点

Adobe Analytics 2.0 API endpoint to get report suite events, props, and evars

我很难在 2.0 API 中找到一种方法来获取给定报表包的 Evar、道具和事件列表。 1.4 版本具有 reportSuite.getEvents() 端点,与 Evars 和 Props 类似。

如果有办法使用 2.0 API 端点获取相同数据,请告诉我。

API v2.0 github docs aren't terribly useful, but the Swagger UI 更有用,它显示了可以推送给它们的端点和参数,您可以与之交互(使用您的 oauth 凭证登录)并查看 requests/responses。

您特别想要的两个 API 端点是 metricsdimensions。您可以指定许多选项,但要获取所有选项的转储,这些选项的完整端点 URL 将是:

https://analytics.adobe.io/api/[client id]/[endpoint]?rsid=[report suite id]

其中:

[client id] - 贵公司的客户 ID。 应该 与来自 v1.3/v1.4 API 共享秘密凭证的遗留 username:companyidcompanyid 部分)的值相同,除了它以“0”为后缀,例如如果您的旧 username:companyid 是 "crayonviolent:foocompany",则 [client id] 将是 "foocompany0",因为..原因?我不确定那是什么,但它就是这样。

[endpoint] - 值应为 "metrics" 以获取事件,值应为 dimensions 以获取道具和 eVar。因此,您将需要发出 2 API 个端点请求。

[rsid] - 您要从中获取 events/props/eVars 列表的报表包 ID。

示例:

https://analytics.adobe.io/api/foocompany0/metrics?rsid=fooglobal

关于响应需要注意的一件事:它们不像 v1.3 或 v1.4 方法,在这些方法中您只查询那些特定事物的列表。它将分别针对每个事件和维度 return json 对象数组,甚至是原生事件、计算指标、给定维度的分类等。据我所知,没有任何方法可以过滤API 查询(在我能找到的任何文档中,无论如何..),所以你必须自己遍历数组和 select 相关的。

我不知道您使用的是什么语言,但这里有一个 javascript 示例,说明我的基本操作:

var i, l, v, data = { prop:[], evar: [], events:[] };

// dimensionsList - the JSON object returned from dimensions API call
// for each dimension in the list..
for (i=0,l=dimensionsList.length;i<l;i++) {
  // The .id property shows the dimension id to eval
  if ( dimensionsList[i].id ) {
    // the ones we care about are e.g. "variables/prop1" or "variables/evar1"
    // note that if you have classifications on a prop or eVar, there are entries 
    // that look like e.g. "variables/prop1.1" so regex is written to ignore those
    v = (''+dimensionsList[i].id).match(/^variables\/(prop|evar)[0-9]+$/);
    // if id matches what we're looking for, push it to our data.prop or data.evar array
    v && v[1] && data[v[1]].push(dimensionsList[i]);
  }
}
// metricsList - the JSON object returned from metrics API call
// basically same song and dance as above, but for events. 
for (var i=0,l=metricsList.length;i<l;i++) {
  if ( metricsList[i].id ) {
    // events ids look like e.g. "metrics/event1"
    var v = (''+metricsList[i].id).match(/^metrics\/event[0-9]+$/);
    v && data.events.push(metricsList[i]);
  }
}

然后结果 data 对象将有 data.propdata.evardata.events,每个都是各自 props/evars/events 的数组。

data.events[n] 的示例对象条目:

{
    "id": "metrics/event1",
    "title": "(e1) Some event",
    "name": "(e1) Some event",
    "type": "int",
    "extraTitleInfo": "event1",
    "category": "Conversion",
    "support": ["oberon", "dataWarehouse"],
    "allocation": true,
    "precision": 0,
    "calculated": false,
    "segmentable": true,
    "supportsDataGovernance": true,
    "polarity": "positive"
}

data.evar[n] 的示例对象条目:

{
    "id": "variables/evar1",
    "title": "(v1) Some eVar",
    "name": "(v1) Some eVar",
    "type": "string",
    "category": "Conversion",
    "support": ["oberon", "dataWarehouse"],
    "pathable": false,
    "extraTitleInfo": "evar1",
    "segmentable": true,
    "reportable": ["oberon"],
    "supportsDataGovernance": true
}

data.prop[n] 的示例对象条目:

{
    "id": "variables/prop1",
    "title": "(c1) Some prop",
    "name": "(c1) Some prop",
    "type": "string",
    "category": "Content",
    "support": ["oberon", "dataWarehouse"],
    "pathable": true,
    "extraTitleInfo": "prop1",
    "segmentable": true,
    "reportable": ["oberon"],
    "supportsDataGovernance": true
}