適用分析模型
適用於事件分析、漏鬥分析、留存分析和Session分析模型。
使用流程
1. 建立報表
點擊Quick Tracking控制台首頁的行為分析模組,進入到行為分析頁面。

在行為分析頁面,可通過篩選框與搜尋方塊篩選,快速找到需要匯出資料的應用。

點擊行為分析 - 分析,進入到行為洞察頁面。根據資料匯出需求,建立報表:

2. 擷取報表ID
點擊右上方功能區更多按鈕,進入報表列表,查看已經儲存的報表。

選對對應的報表,點擊複製報表ID進行複製。

3. 使用OpenAPI擷取報表資料
3.1 許可權校正
鑒權依據
API ID、API Secret。由於資料敏感,所以只在主帳號中可見,具體展示位置為:管理主控台 > 採集資訊。

URL參數
http://xxx.yyy.com/api/{service}?api_id=abcdef&api_sign=abcdef&api_ts=123456參數名 | 描述 | 備忘 |
api_id | API ID | Quick Tracking後台主帳號可查看 |
api_sign | 簽名 | 具體邏輯見“鑒權簽名” |
api_ts | 時間戳記 | 毫秒 重要 該時間戳記務必寫為:請求時的時間戳記,時區和Quick Tracking服務部署的伺服器一致。如果該時間與Quick Tracking服務收到請求時的時間戳記差異較大,會報錯。 |
http://xxx.yyy.com/ | 前台頁面管理網域名稱 | 登入Quick Tracking後瀏覽器前台展示網域名稱 |
body參數
{
"dataSourceId": "32772108106530",
"reportId":"rh2m151qj7bmh67uiqv46il4vfn8vckc",
"timeUnit":"day",
"fromDate":"2021-12-01",
"toDate": "2021-12-23"
}鑒權簽名
方法名 + 參數按照key進行字母排序。
/**
* Quick Tracking後台主帳號可查看
*/
String secret = "abcdef";
/**
* 當前要請求的服務名
*/
String service = "analysis.report.data";
/**
* 1.擷取URL參數,如apiId=abcdef&sign=abcdef&ts=123456
* 2.按照key排序,移除sign,結果apiId=abcdef&ts=123456
*/
String queryString = sort("api_id=abcdef&api_ts=123456");
/**
* POST介面,body內容
*/
String bodyString = "{
"dataSourceId": "32772108106530",
"reportId":"rh2m151qj7bmh67uiqv46il4vfn8vckc",
"timeUnit":"day",
"fromDate":"2021-12-01",
"toDate": "2021-12-23"
}";
String source = service
+ "\n"
+ queryString
+ "\n"
+ bodyString;用API Secret對source進行加密
String sign = new HmacUtils(HmacAlgorithms.HMAC_SHA_1, secret).hmacHex(source);sign = 1cfc10a297397e91f1e50e1f41ac24b8c45fd53d
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.3.0</version>
</dependency>package com.alibaba.umeng.base.product.advanced.controller;
import com.alibaba.fastjson.JSONObject;
import okhttp3.*;
import org.apache.commons.codec.digest.HmacAlgorithms;
import org.apache.commons.codec.digest.HmacUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
/**
* @author mingpeng.spc
* @date 2022/01/07
*/
public class OpenApiControllerTest {
private static final MediaType APPLICATION_JSON = MediaType.parse("application/json; charset=utf-8");
private final static Logger LOGGER = LoggerFactory.getLogger(OpenApiControllerTest.class);
public static void main(String[] args) {
String URL = "http://pre.aplus.emas-poc.com/api/";
String service = "analysis.report.data";
String apiId = "avWYU24hvdl62V8p";
String apiSecret = "xezIgkcrtZ2yLQA4LYgBuyUo6Re2hCu8";
/**
* 構造URL參數
*/
String query = new StringBuilder()
.append("api_id=").append(apiId)
.append("&")
.append("api_ts=").append(System.currentTimeMillis())
.toString();
/**
* 構造body參數
*/
JSONObject body = new JSONObject();
body.put("dataSourceId", "69412108036695");
body.put("reportId", "7f6o7no8gks3uebieto2lmlv6o6728bj");
body.put("timeUnit", "day");
body.put("fromDate", "2021-12-31");
body.put("toDate", "2022-01-06");
String bodyString = body.toJSONString();
/**
* service
* query
* body
*/
StringBuilder valueToDigest = new StringBuilder()
.append(service)
.append("\n")
.append(query)
.append("\n")
.append(bodyString);
String sign = new HmacUtils(HmacAlgorithms.HMAC_SHA_1, apiSecret).hmacHex(valueToDigest.toString());
try {
Response response = post(URL + service + "?" + query + "&api_sign=" + sign, bodyString);
System.out.println(response.body().string());
} catch (Exception e) {
LOGGER.info("invoke post error", e);
}
}
/**
* HTTP Post
* @param URL URL
* @param body 請求body
* @return
*/
private static Response post(String URL, String body) throws IOException {
LOGGER.info("http post start, URL = {}, body = {}", URL, body);
RequestBody requestBody = RequestBody.create(APPLICATION_JSON, body);
Request request = new Request.Builder()
.URL(URL)
.post(requestBody)
.build();
Response response = new OkHttpClient().newCall(request).execute();
LOGGER.info("http post success");
return response;
}
}3.2 資料擷取
巨量資料量下olap:巨量資料量不可能通過API一次性擷取,伺服器承擔不了巨量資料量下介面的資料返回,需要通過離線下載中心擴充OpenAPI介面,增加3個介面(僅支援事件分析)。
(1)analysis.report.download:下載規則的全量資料。
請求
和report.data請求一致。
{
"dataSourceId":"84702206076390",
"reportId":"kpunvt6keavnim9ip7qt2ku8gpnvf5i1",
"timeUnit":"day",
"fromDate":"2025-02-14",
"toDate":"2025-02-20"
}響應
響應中有本次下載的分析AnalysisId
{
"code": 200,
"msg": "SUCCESS",
"sCode": 200,
"sMsg": "SUCCESS",
"data": {
"analysisId": "segmentation_adhoc_download_1740119826316",
"taskId": 36282502216715
},
"traceId": "1ecbb42517401198225971041d33fc",
"success": true
}(2)analysis.report.downloadStatus:輪詢擷取本次下載的狀態。
請求
請求中必須包含上次下載返回的analysisId
{
"analysisId": "segmentation_adhoc_download_1740119826316",
"dataSourceId": "84702206076390"
}
響應
返回下載狀態以及總共的行數。
{
"code": 200,
"msg": "SUCCESS",
"sCode": 200,
"sMsg": "SUCCESS",
"data": {
"totalRows": 9,
"status": "RUNNING/SUCCESS/FAILED"
},
"traceId": "1ecbb42517401201253501044d33fc",
"success": true
}(3)analysis.report.downloadPageData:分頁擷取離線下載的結果資料。
請求
和report.download請求一樣,但多了參數anlakysisId,頁碼page,分頁尺寸pageSize。
{
"analysisId": "segmentation_adhoc_download_1740119826316",
"dataSourceId": "84702206076390",
"reportId": "kpunvt6keavnim9ip7qt2ku8gpnvf5i1",
"timeUnit": "day",
"fromDate": "2025-02-14",
"toDate": "2025-02-20",
"page": 2,
"pageSize": 5
}響應
分組情況下和report.data結果一致,結構如下:
{
"code": 200,
"msg": "SUCCESS",
"sCode": 200,
"sMsg": "SUCCESS",
"data": {
"groupNames": ["SDK版本", "解析度"],
"date": [
"2025-02-14",
"2025-02-15",
"2025-02-16",
"2025-02-17",
"2025-02-18",
"2025-02-19",
"2025-02-20"
],
"firstTitle": "SDK版本,解析度",
"groupKeys": ["sdk_version", "screen"],
"data": [
[
["10.3.2", "1920*1360"],
886.0,
886.0,
120.0,
120.0,
144.0,
144.0,
124.0,
124.0,
123.0,
123.0,
126.0,
126.0,
128.0,
128.0,
123.0,
123.0
],
[
["10.3.2", "1136*640"],
885.0,
885.0,
117.0,
117.0,
126.0,
126.0,
136.0,
136.0,
101.0,
101.0,
134.0,
134.0,
150.0,
150.0,
123.0,
123.0
],
[
["12.5.6", "2234*1080"],
852.0,
852.0,
128.0,
128.0,
125.0,
125.0,
122.0,
122.0,
122.0,
122.0,
120.0,
120.0,
112.0,
112.0,
125.0,
125.0
],
[
["10.3.2", "2234*1080"],
849.0,
849.0,
114.0,
114.0,
102.0,
102.0,
137.0,
137.0,
129.0,
129.0,
134.0,
134.0,
124.0,
124.0,
110.0,
110.0
]
],
"groupTitle": [
"頁面瀏覽(預置)的裝置ID的觸發裝置數",
"test"
]
},
"traceId": "1ecbb42517401219809291032d3bdf",
"success": true
}無分組情況下,結構如下:
{
"code": 200,
"msg": "SUCCESS",
"sCode": 200,
"sMsg": "SUCCESS",
"data": {
"indicatorNames": [
"任意事件(預置)的裝置ID的觸發次數",
"頁面瀏覽(預置)的裝置ID的觸發裝置數"
],
"data": [
["總計", "394800.0", "8187.0"],
["2025-02-14", "56400.0", "1192.0"],
["2025-02-15", "56400.0", "1194.0"],
["2025-02-16", "56400.0", "1197.0"],
["2025-02-17", "56400.0", "1198.0"],
["2025-02-18", "56400.0", "1198.0"],
["2025-02-19", "56400.0", "1195.0"],
["2025-02-20", "56400.0", "1198.0"]
]
},
"traceId": "1ecbb42517401228310921091d3bdf",
"success": true
}請求
名稱 | 類型 | 是否必須 | 描述 |
dataSourceId | String | 必填 | |
reportId | String | 必填 | 報表id |
timeUnit | String | 必填 | hour/day/week/month |
fromDate | String | 必填 | yyyy-MM-dd |
toDate | String | 必填 | yyyy-MM-dd |
dataSourceId擷取方式如下
開啟需要匯出資料的報表,在頁面URL中,platform後的數字即為dataSourceId。
或者,右鍵選擇檢查 > Network,即可看到dataSourceId。

{
"dataSourceId":"74612111122219",
"reportId":"on3t8cosv298bt80it2st38o562ga95u",
"timeUnit":"day",//請求為小時顆粒度,需要fromDate和toDate相等才可
"fromDate":"2021-12-08",
"toDate":"2021-12-14"
}返回
{
//返回日期
"date":[
"2021-12-08",
"2021-12-09",
"2021-12-10",
"2021-12-11",
"2021-12-12",
"2021-12-13",
"2021-12-14"
],
//分組名稱
"groupNames":[
],
//指標名稱
"indicatorNames":[
"邀請點擊人數",
"邀請成功領取獎勵",
"邀請成功轉化率"
],
"firstTitle":"指標名稱",
"total":3,
//資料返回
"data":[
[ //指標一的返回結果資料
"邀請點擊人數", //指標一名稱
1501, //指標一在所選時間範圍內的合計結果
162, //最小日期結果資料
547,
176,
187,
128,
237,
183 //最大(近)日期結果資料
],
[
//指標二的返回結果資料
"邀請成功領取獎勵",//指標二名稱
185, //指標二在所選時間範圍內的合計結果
28, //最小日期結果資料
67,
11,
14,
17,
32,
16 //最大(近)日期結果資料
],
[
//指標三的返回結果資料
"邀請成功轉化率",
0.1232, //指標二在所選時間範圍內的合計結果
0.1728, //最小日期結果資料
0.1224,
0.0625,
0.0748,
0.1328,
0.135,
0.0874 //最大(近)日期結果資料
]
],
"groupKeys":[
],
"groupTitle":[
]
}