1 適用分析模型
事件分析、漏斗分析、留存分析和session分析
?
2 使用流程
2.1 新建報表
點擊Quick Tracking平臺首頁的「行為分析」模塊,進入到「行為分析」功能首頁,在「行為分析」首頁可通過篩選框與搜索框篩選快速找到需要導出數據的應用,具體如下圖:
點擊「行為分析」-「分析」進入到「行為洞察」頁面,根據數據導出需求,創建報表:
2.2 獲取報表ID
點擊右上角功能區「更多」按鈕,進入“報表列表”,查看已經保存的報表,點擊「復制報表ID」進行復制。
2.3 使用openapi獲取報表數據
2.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 | 時間戳 | 毫秒(該時間戳務必寫為「請求時的時間戳,時區和QuickTracking服務部署的服務器一致」,如果該時間與QuickTracking服務收到請求時的時間戳差異較大,會報錯。) |
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;
}
}
?
2.3.2 數據獲取
請求:
名稱 | 類型 | 是否必須 | 描述 |
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":[
]
}