全部產品
Search
文件中心

Quick Tracking:分析資料

更新時間:Aug 07, 2025

適用分析模型

適用於事件分析漏鬥分析留存分析Session分析模型。

使用流程

1. 建立報表

  • 點擊Quick Tracking控制台首頁的行為分析模組,進入到行為分析頁面。

    image.png

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

    image.png

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

    image.png

2. 擷取報表ID

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

    image.png

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

    image.png

3. 使用OpenAPI擷取報表資料

3.1 許可權校正

鑒權依據

API ID、API Secret。由於資料敏感,所以只在主帳號中可見,具體展示位置為:管理主控台 > 採集資訊

image.png

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。image.png

{
    "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":[

    ]
}