# Retention Analysis Model API
Call method See Call method description in Open API doc.
You can read the retention analysis in the user manual to understand the usage scenario.
# Retention Analysis Query
Interface URL
/open/retention-analyze?token=xxx
Request method
POST
Content-Type
application/json
Request Query Parameter
Parameter name | Sample value | Parameter type | Is required | Parameter description |
---|---|---|---|---|
token | xxx | String | Yes | token |
# Request Body Parameter
{
"eventView":{
"endTime":"2021-10-30 23:59:59",
"filts":[
{
"columnDesc":"app version",
"columnName":"app_version",
"comparator":"equal",
"filterType":"SIMPLE",
"ftv":[
"V1.0"],
"specifiedClusterDate":"2022-01-24",
"tableType":"event",
"timeUnit":""
}],
"firstDayOfWeek":1,
"groupBy":[
{
"columnDesc": "browser",
"columnName":"browser",
"propertyRange":"",
"specifiedClusterDate":"2022-01-24",
"tableType":"event"
}],
"recentDay":"",
"relation":"and",
"startTime":"2021-10-01 00:00:00",
"statType":"retention",
"taIdMeasureVo":{
"columnDesc":"user only ID",
"columnName":"#user_id",
"tableType":"event"
},
"timeParticleSize":"week",
"unitNum":1
},
"events":[
{
"eventName":"login",
"eventNameDisplay":"",
"filts":[
{
"columnDesc":"app_version",
"columnName":"app_version",
"comparator":"equal",
"filterType":"SIMPLE",
"ftv":["V1.0"],
"specifiedClusterDate":"2022-01-26",
"tableType":"event",
"timeUnit":""
}],
"relation":"and",
"relationUser":"and",
"type":"first"
},
{
"eventName":"logout",
"eventNameDisplay":"",
"filts":[
],
"relation":"and",
"relationUser":"and",
"type":"second"
},
{
"analysis":"TOTAL_TIMES",
"analysisDesc":"total number",
"eventName":"activity_attend",
"eventNameDisplay":"",
"filts":[
],
"quota":"",
"relation":"and",
"relationUser":"and",
"type":"simultaneous_display"
}],
"projectId": 377,
"limit": 2,
"timeoutSeconds": 10,
"useCache": true
}
# Request Parameter Description
Parameter name | Sample value | Parameter type | Is required | Parameter description |
---|---|---|---|---|
eventView | - | Object | Yes | Grouping properties |
∟ endTime | 2021-10-30 23:59:59 | String | No | End time (format: yyyy-MM-dd HH: mm: ss), valid when the relative time is empty |
∟ filts | - | List | No | Global filter |
∟ columnDesc | App version | String | No | Field display name |
∟ columnName | app_version | String | Yes | Field name |
∟ comparator | equal | String | Yes | Reference: Filtered expression for model query API |
∟ filterType | SIMPLE | String | No | Filter mode, SIMPLE: simple, COMPOUND: composite |
∟ ftv | ["V1.0"] | List | No | Property comparison value |
∟ specifiedClusterDate | 2022-01-24 | String | No | Cluster specified date |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
∟ timeUnit | String | No | Property comparison units, valid for relativeEvent * only: day, hour, minute | |
∟ firstDayOfWeek | 1 | Integer | No | When timeParticleSize is week, specify the first day of the week, 1: Monday, 2: Tuesday,.., 7: Sunday, minimum 1, maximum 7 |
∟ groupBy | - | List | No | Group attributes, can have zero or more |
∟ columnDesc | Browser | String | No | Field display name |
∟ columnName | browser | String | Yes | Field name |
∟ propertyRange | String | No | Custom attribute interval | |
∟ specifiedClusterDate | 2022-01-24 | String | No | Cluster specified date |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
∟ recentDay | String | No | Relative time (this item cannot be empty at the same time as the start time and the end time) | |
∟ relation | and | String | No | Logical relationship, and: logical and, or: logical or |
∟ startTime | 2021-10-01 00:00:00 | String | No | Start time (format: yyyy-MM-dd HH: mm: ss), valid when the relative time is empty |
∟ statType | retention | String | Yes | Statistics type, retention: retention, loss: lost |
∟ taIdMeasureVo | - | Object | No | Analyze subject configuration |
∟ columnDesc | User unique ID | String | No | Field display name |
∟ columnName | #user_id | String | Yes | Field name |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
∟ timeParticleSize | week | String | Yes | Unit of time for analysis Press 1 minute Minute 5: Press 5 minutes (v3.5 starts to support) Minute 10: Press 10 minutes (v3.5 start support) By the hour By day Week: by week Month: by month Total: total |
∟ unitNum | 1 | Integer | Yes | Retention period |
events | - | List | Yes | List of event indicators |
∟ eventName | login | String | Yes | Event type, in particular, you can use anyEvent to represent any event |
∟ eventNameDisplay | String | No | Event display name | |
∟ filts | - | List | No | List of conditions |
∟ columnDesc | app_version | String | No | Field display name |
∟ columnName | app_version | String | Yes | Field name |
∟ comparator | equal | String | Yes | Reference: Filtered expression for model query API |
∟ filterType | SIMPLE | String | No | Filter mode, SIMPLE: simple, COMPOUND: composite |
∟ ftv | ["V1.0"] | List | No | Property comparison value |
∟ specifiedClusterDate | 2022-01-26 | String | No | Cluster specified date |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
∟ timeUnit | String | No | Filter time unit | |
∟ relation | and | String | No | Logical relationship, and: logical and, or: logical or |
∟ relationUser | and | String | No | User filtering logical relationships, and: logical and, or: logical or |
∟ type | first | String | Yes | Retention event type, First: Initial event Second: Return visit event simultaneous_display: Simultaneous display init_date_stat: Initial date indicator |
projectId | 377 | Integer | Yes | Project ID |
limit | 2 | Integer | No | Maximum number of groups per analysis object, optional parameters, default is 1000, maximum is 10000 |
timeoutSeconds | 10 | Integer | No | Request timed out parameter, timeout cancels query task |
useCache | true | Boolean | No | Use cache, optional parameter, default is true |
Also show the aggregation method analysis value:
Value | Description | Whether properties are required |
---|---|---|
TOTAL_TIMES | Total number | No |
TRIG_USER_NUM | Number of users triggered | No |
PER_CAPITA_TIMES | Number of times per capita | No |
SUM | Sum of values | Yes |
FOR _ CAPITA _ NUM | Per capita | Yes |
STAGE_ACC | Accumulated sum of stages | Yes |
STAGE_ACC_PCV | Stage cumulative average | Yes |
TRUE | True number | Yes |
FALSE | False number | Yes |
IS_NOT_EMPTY | Not an empty number | Yes |
IS_EMPTY | Null number | Yes |
# Successful Response Example
{
"data": {
"result_generate_time": "2022-01-01 00:00:00",
"state_avg": {
"0": [
{
"groupCols": [
"total"
],
"initNum": 0,
"isTotal": 1,
"lastValidDateVerticalIndexs": [
"-",
"4"
],
"values": [
"-",
"0.998"
]
},
{
"groupCols": [
"Chrome"
],
"initNum": 0,
"isTotal": 0,
"lastValidDateVerticalIndexs": [
"-",
"4"
],
"values": [
"-",
"0.9981"
]
}
],
"1": [
{
"groupCols": [
"total"
],
"initNum": 0,
"isTotal": 1,
"lastValidDateVerticalIndexs": [
"-",
"4"
],
"values": [
"-",
"1"
]
},
{
"groupCols": [
"Chrome"
],
"initNum": 0,
"isTotal": 0,
"lastValidDateVerticalIndexs": [
"-",
"4"
],
"values": [
"-",
"1"
]
}
],
"2": [
{
"groupCols": [
"total"
],
"initNum": 0,
"isTotal": 1,
"lastValidDateVerticalIndexs": [],
"values": [
"-",
"132405.4"
]
},
{
"groupCols": [
"Chrome"
],
"initNum": 0,
"isTotal": 0,
"lastValidDateVerticalIndexs": [],
"values": [
"-",
"66343.2"
]
}
]
},
"x": [
"2021-09-27",
"2021-10-04",
"2021-10-11",
"2021-10-18",
"2021-10-25"
],
"y": {
"0": {
"2021-09-27": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7388,
"isTotal": 1,
"values": [
"7388",
"7374"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3647,
"isTotal": 0,
"values": [
"3647",
"3642"
]
}
],
"2021-10-04": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7861,
"isTotal": 1,
"values": [
"7861",
"7844"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3939,
"isTotal": 0,
"values": [
"3939",
"3930"
]
}
],
"2021-10-11": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8013,
"isTotal": 1,
"values": [
"8013",
"7994"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4062,
"isTotal": 0,
"values": [
"4062",
"4054"
]
}
],
"2021-10-18": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8553,
"isTotal": 1,
"values": [
"8553",
"8543"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4225,
"isTotal": 0,
"values": [
"4225",
"4218"
]
}
],
"2021-10-25": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7414,
"isTotal": 1,
"values": [
"7414",
"7397"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3741,
"isTotal": 0,
"values": [
"3741",
"3733"
]
}
]
},
"1": {
"2021-09-27": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7388,
"isTotal": 1,
"values": [
"7388",
"7388"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3647,
"isTotal": 0,
"values": [
"3647",
"3647"
]
}
],
"2021-10-04": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7861,
"isTotal": 1,
"values": [
"7861",
"7861"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3939,
"isTotal": 0,
"values": [
"3939",
"3939"
]
}
],
"2021-10-11": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8013,
"isTotal": 1,
"values": [
"8013",
"8013"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4062,
"isTotal": 0,
"values": [
"4062",
"4062"
]
}
],
"2021-10-18": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8553,
"isTotal": 1,
"values": [
"8553",
"8553"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4225,
"isTotal": 0,
"values": [
"4225",
"4225"
]
}
],
"2021-10-25": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7414,
"isTotal": 1,
"values": [
"7414",
"7414"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3741,
"isTotal": 0,
"values": [
"3741",
"3741"
]
}
]
},
"2": {
"2021-09-27": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7388,
"isTotal": 1,
"values": [
"0",
"125324"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3647,
"isTotal": 0,
"values": [
"0",
"62105"
]
}
],
"2021-10-04": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7861,
"isTotal": 1,
"values": [
"0",
"132130"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3939,
"isTotal": 0,
"values": [
"0",
"65971"
]
}
],
"2021-10-11": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8013,
"isTotal": 1,
"values": [
"0",
"134691"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4062,
"isTotal": 0,
"values": [
"0",
"68566"
]
}
],
"2021-10-18": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 8553,
"isTotal": 1,
"values": [
"0",
"144030"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 4225,
"isTotal": 0,
"values": [
"0",
"71345"
]
}
],
"2021-10-25": [
{
"groupCols": [
"total"
],
"includeToday": false,
"initNum": 7414,
"isTotal": 1,
"values": [
"0",
"125852"
]
},
{
"groupCols": [
"Chrome"
],
"includeToday": false,
"initNum": 3741,
"isTotal": 0,
"values": [
"0",
"63729"
]
}
]
}
},
"z": [
"login",
"logout",
"activity_attend"
]
},
"return_code": 0,
"return_message": "success"
}
# Response Parameter Description
Parameter name | Sample value | Parameter type | Parameter description |
---|---|---|---|
return_code | 0 | Integer | Return code |
return_message | success | String | Return information |
data | - | Object | Return result |
∟ result_generate_time | 2022-01-01 00:00:00 | String | Calculation result generation time |
∟ state_avg | - | Object | Result map with key as type and value as retention grouping |
∟ {type} | - | List | Type value, 0: retention, 1: loss, 2: statistics |
∟ groupCols | ["Overall"] | List | Grouping columns |
∟ initNum | 0 | Integer | Initial value |
∟ isTotal | 1 | Integer | Is it summary, 1: yes, 0: no |
∟ lastValidDateVerticalIndexs | ["-", "4"] | List | Last Effective Date Index |
∟ values | ["-", "0.998"] | List | Value list, "-" or number |
∟ x | ["2021-09-27"] | List | Date List |
∟ y | - | Object | Y-axis data |
∟ {type} | - | Object | Type value, 0: retention, 1: loss, 2: statistics |
∟ {date} | - | List | Key is date |
∟ groupCols | ["Overall"] | List | Grouping columns |
∟ includeToday | false | Boolean | Does it include today |
∟ initNum | 7388 | Integer | Initial value |
∟ isTotal | 1 | Integer | Is it summary, 1: yes, 0: no |
∟ values | ["7388"] | List | Value list |
∟ z | ["login"] | List | List of event names |
Error Response Example
{
"return_code": -1008,
"return_message": "The parameter (token) is empty"
}
Parameter name | Sample value | Parameter type | Parameter description |
---|---|---|---|
return_code | -1008 | Integer | Return code |
return_message | The parameter (token) is empty | String | Return information |
# Retention Analysis User List
Interface URL
/open/retention-user-list?token=xxx
Request method
POST
Content-Type
application/json
Request Query Parameter
Parameter name | Sample value | Parameter type | Is required | Parameter description |
---|---|---|---|---|
token | xxx | String | Yes | token |
# Request Body Parameter
{
"projectId": 0,
"eventView": {
"startTime": "2019-11-24 00:00:00",
"endTime": "2019-11-26 00:00:00",
"recentDay": "1-3",
"statType": "retention",
"timeParticleSize": "day",
"unitNum": 7,
"groupBy": [
{
"columnName": "#province",
"tableType": "event"
}
]
},
"events": [
{
"type": "first",
"relation": "and",
"eventName": "player_register",
"filts": [
{
"columnName": "#province",
"comparator": "equal",
"ftv": [
"Jiangsu",
"Shanghai"
],
"tableType": "event"
},
{
"columnName": "user_level",
"comparator": "greater",
"ftv": [
"2"
],
"tableType": "user"
}
]
},
{
"type": "second",
"relation": "and",
"eventName": "obtain_diamond",
"filts": [
{
"columnName": "#os",
"comparator": "equal",
"ftv": [
"android"
],
"tableType": "event"
},
{
"$ref": "$.events[0].filts[1]"
}
]
}
],
"sliceDate": "2019-11-26",
"sliceInterval": 3,
"timeoutSeconds": 10
}
# Request Parameter Description
Parameter name | Sample value | Parameter type | Is required | Parameter description |
---|---|---|---|---|
projectId | 0 | String | Yes | Parameter description |
eventView | - | Object | Yes | Group property table |
∟ startTime | 2019-11-24 00:00:00 | String | No | Start time (format: yyyy-MM-dd HH: mm: ss), valid when the relative time is empty |
∟ endTime | 2019-11-26 00:00:00 | String | No | End time (format: yyyy-MM-dd HH: mm: ss), valid when the relative time is empty |
∟ recentDay | 1-3 | String | No | Relative time (this item cannot be empty at the same time as the start time and the end time) |
∟ statType | retention | String | Statistics type, retention: retention, loss: lost | |
∟ timeParticleSize | day | String | Yes | Unit of time for analysis Press 1 minute Minute 5: Press 5 minutes (v3.5 starts to support) Minute 10: Press 10 minutes (v3.5 start support) By the hour By day Week: by week Month: by month Total: total |
∟ unitNum | 7 | Integer | Retention period | |
∟ groupBy | - | List | No | Group attributes, can have zero or more |
∟ columnName | #province | String | Yes | Field name |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
events | List | Yes | List of event indicators | |
∟ type | first | String | Yes | First: Initial event Second: Return visit event simultaneous_display: Simultaneous display init_date_stat: Initial date indicator |
∟ eventName | player_register | String | Yes | Event type, in particular, you can use anyEvent to represent any event |
∟ relation | and | String | No | Logical relationship, and: logical and, or: logical or |
∟ filts | - | List | No | Filter List |
∟ columnName | #province | String | Yes | Field name |
∟ comparator | equal | String | Yes | Reference: Filtered expression for model query API |
∟ ftv | ["Jiangsu Province"] | List | No | Property comparison value |
∟ tableType | event | String | Yes | Table type, event: transaction table, user: user table |
sliceDate | "2019-11-26" | String | No | Event date |
sliceInterval | 3 | List | Yes | Period subscript 0: Initial event number of users 1: The day After 2:1 After 3:2 |
timeoutSeconds | 10 | Integer | No | Request timed out parameter, timeout cancels query task |
# Successful Response Example
{
"data": {
"datalist": [
{
"#account_id": "v47739399",
"#distinct_id": "v88658799",
"user_level": 11,
"register_time": "2019-11-26 19:13:20",
"diamond_num": 1182,
"latest_login_time": "2019-11-26 20:16:19",
"channel": "Huawei App store",
"#user_id": 20459799
},
{
"#account_id": "i7819568",
"#distinct_id": "i14522048",
"user_level": 4,
"register_time": "2019-11-26 23:56:17",
"diamond_num": 1006,
"latest_login_time": "2019-11-26 23:59:59",
"channel": "360 Mobile Assistant",
"#user_id": 3351248
},
{
"#account_id": "g7812426",
"#distinct_id": "g14508786",
"user_level": 14,
"register_time": "2019-11-26 17:54:13",
"diamond_num": 245,
"first_recharge_time": "2019-11-26 18:08:58",
"latest_login_time": "2019-11-26 20:16:19",
"channel": "Xiaomi App stor",
"#user_id": 3348186
},
{
"#account_id": "a7812000",
"#distinct_id": "a14508000",
"user_level": 3,
"register_time": "2019-11-26 17:27:28",
"diamond_num": 1153,
"latest_login_time": "2019-11-26 18:45:58",
"channel": "app store",
"#user_id": 3348000
}
],
"columMeta": {
"#account_id": "account ID",
"#distinct_id": "visitor ID",
"user_level": "user level",
"register_time": "register time",
"diamond_num": "diamond number",
"first_recharge_time": "first recharge time",
"latest_login_time": "lastest login time",
"channel": "channel"
}
},
"return_code": 0,
"return_message": "success"
}
# Response Parameter Description
Parameter name | Sample value | Parameter type | Parameter description |
---|---|---|---|
return_code | 0 | Integer | Return code |
return_message | success | String | Return information |
data | - | Object | Return result |
data.datalist | - | List | User Information |
data.columMeta | - | Map | Field meaning mapping |
Error Response Example
{
"return_code": -1008,
"return_message": "The parameter (token) is empty"
}
Parameter name | Sample value | Parameter type | Parameter description |
---|---|---|---|
return_code | -1008 | Integer | Return code |
return_message | The parameter (token) is empty | String | Return information |