1 適用可能な分析モデル
イベント分析、ファネル分析、リテンション分析、セッション分析
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"
}
認証署名
キーでメソッド名とパラメーターをアルファベット順にソートする
/**
* Quick Tracking バックグラウンドマスターアカウントで確認できます
*/
String secret = "abcdef";
/**
* リクエストされるサービスの名前。
*/
String service = "analysis.report.data";
/**
* 1. URL パラメーターを取得します。例:apiId=abcdef&sign=abcdef&ts=123456。
* 2. キーでソートし、sign を削除します。結果は apiId=abcdef&ts=123456 です。
*/
String queryString = sort("api_id=abcdef&api_ts=123456");
/**
* POST インターフェース、本文の内容
*/
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 を使用してソースデータを暗号化する
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 リクエスト本文。
* @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 です。
または、右クリックして「検証」->「ネットワーク」を選択して、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":[
[ // メトリック 1 の返された結果データ
"招待クリック数", // メトリックの名前。
1501, // 選択した期間における指標 1 の合計結果
162, // 最小日付の結果データ
547,
176,
187,
128,
237,
183 // 最大(近い)日付の結果データ
],
[
// メトリック 2 の返された結果データ。
"招待成功",// メトリック 2 の名前。
185, // 選択した期間におけるメトリック 2 の合計結果
28, // 最小日付の結果データ
67,
11,
14,
17,
32,
16 // 最大(近い)日付の結果データ
],
[
// メトリック 3 の返された結果データ。
"招待成功コンバージョン率",
0.1232, // 選択した期間におけるメトリック 2 の合計結果
0.1728, // 最小日付の結果データ
0.1224,
0.0625,
0.0748,
0.1328,
0.135,
0.0874 // 最大(近い)日付の結果データ
]
],
"groupKeys":[
],
"groupTitle":[
]
}