一、漏斗分析查询
接口URL
/api/open_api/v1/analysis/funnels?token=xxx
请求方式
POST
Content-Type
application/json
请求Query参数
参数名
|
参数类型
|
是否必填
|
参数描述
|
token
|
String
|
是
|
查询token
|
请求Body参数
漏斗分析的请求参数由漏斗步骤(eventsSelect)、分析窗口期(windowPeriod)、全局筛选参数(eventsFilter)、分组项参数(eventsGroup)、时间粒度参数(eventsView)、时区参数(timeZoneOffset)和分析主体参数(entity)
漏斗步骤参数
漏斗分析中使用的漏斗步骤,即由参与漏斗的事件构成的事件列表,参数说明如下:
参数名
|
参数类型
|
是否必填
|
说明
|
eventsSelect
|
List[Object]
|
是
|
由参与漏斗的事件构成的事件列表,DataTower最多支持30个漏斗步骤 |
eventName
|
String
|
是
|
事件名 特殊情况:当您想要计算“任意事件”时,该值填入“_any_” |
eventID
|
Number|String
|
否
|
事件唯一id,均为Number 特殊地,当您想要计算“任意事件”时,值为"_any_" |
eventDisplayName
|
String
|
否
|
初始事件自定义显示名,默认可以设置为事件显示名 |
relation
|
String
|
否
|
当想要对该事件进行筛选时,需要传入这三个字段,具体说明可见“如何表示一个筛选” |
filterType
|
String
|
否
|
|
filters
|
List[Object]
|
否
|
分析窗口期参数
在漏斗分析中,我们需要指明漏斗的分析窗口
参数名
|
参数类型
|
是否必填
|
说明
|
windowPeriod
|
List[Object]
|
是
|
由参与漏斗的事件构成的事件列表,DataTower最多支持30个漏斗步骤 |
gapTu
|
String
|
是
|
分析窗口期单位,支持"day"、"hour"、"minute"、"second"、"month" |
gapMs
|
Number
|
是
|
分析窗口时间范围 |
全局筛选、分组项、计算时间、分析主体参数
参数名
|
参数类型
|
是否必填
|
说明
|
eventsFilter
|
Object
|
否
|
通用参数,见"如何表示一个筛选项" |
eventsGroup
|
Object
|
否
|
通用参数,其中globalization为计算所使用的分组项构成的列表 注:漏斗分析只支持一个分组项 |
globalization |
List[Object]
|
否
|
|
eventsView
|
Object
|
是
|
通用参数,见"如何表示计算时间范围以及计算粒度" |
timeZoneOffset
|
Number
|
否
|
计算时区,如8,-8 若未填,表示0时区 |
entity
|
Object
|
是
|
分析主体,留存分析支持计算不同的分析主体,例如用户、国家等,一般我们以$uid作为分析主体计算,分析主体的表示见"如何表示分析主体" |
请求响应结果
示例
我们以下图所示的分析场景,进行API查询,那么最终返回结果如下示例
返回结果示例:
{
"axis_x": [
"2024-12-20",
"2024-12-21",
"2024-12-22",
"2024-12-23",
"2024-12-24",
"2024-12-25",
"2024-12-26"
],
"axis_z": ["#ad_to_show(Step1)","#ad_show(Step2)","#ad_conversion(Step3)","#ad_close(Step4)"],
"indicators_name": ["广告预展示(Step1)","广告展示(Step2)","广告收益转化(Step3)","广告关闭(Step4)"],
"union_groups_name": ["应用版本号"]
"axis_y": {
"12042": {
"col1": [7713,6291,1952,1591],
"cols": [
[1272,1064,412,326],
[1282,1091,431,355],
[1864,1565,435,348],
[1759,1457,400,317],
[808,577,145,126],
[1443,1107,225,202],
[294,215,32,23]
]
},
.... // 其他分组
"Totality": {
"col1": [10758,8606,3084,2428],
"cols": [
[1852,1506,622,487],
[1908,1595,681,529],
[2600,2132,719,562],
[2408,1962,614,467],
[1114,782,254,211],
[1722,1289,315,270],
[361,264,47,33]
]
}
},
}
响应结果说明
字段名 | 字段类型 | 字段说明 |
axis_x
|
List[String] |
由计算时间构成的字符串列表,长度等于计算时间范围内的天数 |
indicators_name
|
List[String] |
由参与漏斗的各个事件自定义显示名后成的显示名列表,同时会注明是第几个步骤 |
axis_z
|
List[String] |
由参与漏斗的各个事件的事件名构成的列表,同时会注明是第几个步骤
|
union_groups_name
|
List[String] |
本次计算使用的分组项属性构成的数组,长度等于计算时用的分组项个数 |
axis_y
|
Object |
漏斗结果构成的对象,键值对的个数 = 分组结果数 + 1 (默认会有一个Totality的分组,表示合计值,当没有使用分组时,必然会返回一个Totality的键值对) 键名为分组值,值为该分组的漏斗结果,见上述结果示例 |
每一个分组的值是一个对象,由col1和cols组成,如上述结果,具体说明如下:
字段名 | 字段类型 | 字段说明 |
Totality | Object | 对应axis_y上面的必然会返回一个Totality的键值对 |
col1 | List[Number] |
表示该分组在所选日范围内每个步骤的合计人数,长度等于漏斗步骤数 |
cols | List[List[Number]] | 表示该分组每天每个步骤的人数,外层长度 = 分组数,内层长度 = 漏斗步骤数 |
二、漏斗分析用户列表查询
在漏斗分析中,我们可以看到在某个步骤某个分组的留存/流失人数
接口URL
/api/open_api/v1/analysis/funnel_user_list?token=xxx
请求方式
POST
Content-Type
application/json
请求Query参数
参数名
|
参数类型
|
是否必填
|
参数描述
|
token
|
String
|
是
|
查询token
|
请求Body参数
请求的body参数在对应完整使用的留存分析的参数外,额外增加一项details和properties字段,来指明是需要查看什么时间什么分组的第x天留存/流失人数
参数名
|
参数类型
|
是否必填
|
参数描述
|
details | Object | 是 | 查询详情 |
eventModel | String | 是 | 漏斗分析固定为"funnel" |
sliceGroup | List[Object] | 否 |
当计算用了分组时,需要指明最终查询的是哪个分组的列表详情,长度 = 分组项的个数 |
groupName | String | 是 |
分组属性名 |
groupValue | String | 是 |
具体分组值 |
tableType | String | 是 |
分组属性类型 |
sliceType | String | 是 | 固定传"user" |
isLost | Number | 是 | 查看留存/流失人数,0为留存,1为流失 |
funnelStep | Number | 是 | 查看的第几个步骤 |
properties | List[Obejct] | 否 |
要查询的用户属性列表,即最终计算结果需要返回的属性 若未传,默认会查询"$uid"、"#dt_id"和"#acid" |
column_name | String | 否 |
属性名
|
示例
下述示例,即表示在漏斗分析完成计算后,想要查看分组是"ios"的第一个漏斗(选择的第一个事件)的留存人数
{
"eventsSelect": {...},
"eventsFilter":{...},
"eventsGroup":{...},
"eventsView": {...},
"entity":{...},
"windowPeriod":{...}
"timeZoneOffset": 8,
"details": {
"eventModel":"funnel",
"sliceType": "user",
"sliceGroup": [
{
"groupName": "操作系统",
"groupValue": "ios",
"tableType": "event",
}
],
"funnelStep":1,
"isLost":0
},
"properties": [
{"column_name": "#acid"},
{"column_name": "#app_id"},
{"column_name": "#app_version"},
{"column_name": "#bundle_id"},
{"column_name": "#carrier"},
{"column_name": "#city"},
{"column_name": "#dt_id"},
{"column_name": "$uid"},
{"column_name": "#country"}]
}
请求响应结果
字段名 | 字段类型 | 字段说明 |
columnMeta
|
Object |
所查询的properties的属性映射,键值对的个数 = 请求参数中properties的长度, 键名为属性名,值为属性显示名 |
data_list
|
List[Object] | 用户列表详情,长度 = 计算的结果数,对象中为属性名:属性值的键值对 |
total
|
Number | 总数,最多返回1000条 |
示例
{
"columnMeta": {
"#acid": "账号 ID",
"#app_id": "应用唯一标识",
"#app_version": "应用版本",
"#bundle_id": "应用包名",
"#carrier": "运营商",
"#city": "城市",
"#country": "国家",
"#dt_id": "访客ID",
"$uid": "DT 用户 ID"
},
"total": 1,
"data_list": [
{
"#acid": "0@5IZJI4YUWZcard_games",
"#app_id": "dt_xxxx",
"#app_version": "app2.0.1",
"#bundle_id": null,
"#carrier": "移动",
"#city": "纽约",
"#country": "中国",
"#dt_id": "dddddd",
"$uid": "123232455"
},
],
}