メインコンテンツまでスキップ

データ遡及機能

最終更新 2026/10/03

1. 概要​

データ遡及機能は、SQL文でAEデータベース内のデータをクエリし、返された結果をAEデータベースに書き込むことで、新しいイベントや新しいユーザープロパティを生成する機能です。

2. 使用方法​

2.1 コマンドの説明​

二次開発ツールがデプロイされたサーバー(分散構成の場合はデフォルトで最初の3台)にログインし、su - taコマンドを実行してtaユーザーに切り替えます

ta-tool user_event_import -confを実行して設定ファイルを読み込みます。コマンドは次のとおりです:

ta-tool user_event_import -conf <configファイル> [--date データ日付]

2.2 コマンドパラメータの説明​

2.2.1 -conf​

必須。対応するデータ遡及タスクの設定ファイルのパスを指定します。ワイルドカードを使用できます。例:/data/config/*または./config/*.json

2.2.2 --date​

任意。データの日付を表すパラメータで、時間マクロはこの基準時刻に基づいて置換されます。省略可能で、省略した場合はデフォルトで現在の日付が使用されます。形式はYYYY-MM-DDです。時間マクロの具体的な使用方法は、時間マクロの使用方法を参照してください

2.2.3 例​

ta-tool user_event_import -conf /data/home/ta/import_configs/*.json

パラメータには設定ファイルのフルパスを指定します。ワイルドカードを使って複数の設定ファイルを読み込むことができます

2.3 設定ファイルの説明​

2.3.1 設定ファイルの例は次のとおりです:​

データ遡及機能の中核となるのは、クエリ文と設定パラメータを含む設定ファイルです。1つの設定ファイルが1つのデータ遡及タスクに対応します。イベントを遡及する設定ファイルの例は次のとおりです:

{
"event_desc": {
"ltv_event": "ユーザーライフサイクル"
},
"appid": "APPID",
"type": "event",
"property_desc": {
"register_date": "登録日",
"date_prop": "LTV日数"
},
"sql": "SELECT 'thinkinggame' \"#account_id\",'ltv_event' \"#event_name\",register_date \"#time\",register_date,ltv,date_prop FROM (SELECT recharge_money ltv,register_date,CASE date_trunc('day', cast(register_date AS TIMESTAMP)) WHEN CURRENT_DATE - interval '1' DAY THEN '翌日' WHEN CURRENT_DATE - interval '2' DAY THEN '三日' WHEN CURRENT_DATE - interval '6' DAY THEN '七日' WHEN CURRENT_DATE - interval '13' DAY THEN '十四日' WHEN CURRENT_DATE - interval '29' DAY THEN '三十日' ELSE NULL END date_prop FROM (SELECT sum(recharge_money) recharge_money ,register_date FROM (SELECT \"#user_id\" ,sum(recharge_value) recharge_money ,\"$part_date\" recharge_date FROM v_event_0 WHERE \"$part_event\" = 'recharge' AND \"$part_date\" > '2018-06-30' AND \"$part_date\" < '2018-07-30' GROUP BY \"#user_id\" , \"$part_date\") a LEFT JOIN (SELECT \"#user_id\" , \"$part_date\" register_date FROM v_event_0 WHERE \"$part_event\" = 'player_register' AND \"$part_date\" > '2018-06-30' AND \"$part_date\" < '2018-07-30') b ON a.\"#user_id\" = b.\"#user_id\" WHERE b.\"#user_id\" IS NOT NULL AND recharge_date >= register_date GROUP BY register_date) c) d WHERE date_prop IS NOT NULL"
}
注意

List型を遡及する場合、内部ストレージではリスト型が\tで区切られた文字列として保存されているため、次のように処理する必要があります:

split("arrayColumn", chr(0009)) as arrayColumn

2.3.2 設定パラメータの説明​

各設定ファイルはJSONで記述されます。各要素の意味は次のとおりです:

  • event_desc:

    • 説明:任意の設定。JSONオブジェクトで、新しく作成するイベントの表示名を設定します
    • key: イベント名
    • value: 表示名
  • appid:

    • 説明:必須の設定。クエリ結果の書き込み先となるプロジェクトのAPPIDです
  • type:

    • 説明:必須の設定。書き込み先プロジェクトのeventテーブルとuserテーブルのどちらに書き込むかを指定します
    • 指定可能な値:event、user
  • property_desc:

    • 説明:任意の設定。JSONオブジェクトで、プロパティ名の表示名を設定します
    • key: プロパティ名
    • value: 表示名
  • sql:

    • 説明:必須の設定。文字列で、クエリ文を指定します。返される結果の列名によって、その列のデータの具体的な意味が決まります。次の列は必須です:

      • 必須列名1:#account_idまたは#distinct_id。少なくともいずれか1つが必要で、それぞれイベントをトリガーしたユーザーのアカウントIDと匿名IDに対応します。生成するイベントが個人によってトリガーされたものではない場合(上記の例のLTVなど)は、IDのルールに当てはまらない固定値("system"、"admin"など)を使用することをお勧めします
      • 必須列名2:#event_name。イベント名です。固定値を設定することをお勧めします
      • 必須列名3:#time。イベントの発生時刻です。形式はyyyy-MM-dd HH:mm:ssまたはyyyy-MM-dd HH:mm:ss.SSSである必要があります

上記の列名以外の列のデータは、そのイベントのプロパティとなり、列名がそのままプロパティ名になります

イベントの遡及のほか、クエリ結果から新しいユーザープロパティを生成したり、既存のユーザープロパティを上書きしたりすることもできます。設定ファイルは次のとおりです:

{
"appid": "8d1820678a064397bbfcc9732f352e75",
"type": "user",
"property_desc": {
"user_level": "ユーザーレベル",
"coin_num": "コイン保有量"
},
"sql": "select \"#account_id\",localtimestamp \"#time\",user_level,coin_num from v_user_0"
}

イベントの遡及と同様に、設定ファイルはJSONで記述されます。イベントを遡及する設定ファイルとの違いは次のとおりです:

  • event_descは不要です

  • typeの値は"user"です

  • sql内の必須列名に#event_nameは不要で、次の2つだけが必要です:

    • 必須列名1:#account_idまたは#distinct_id。少なくともいずれか1つが必要です
    • 必須列名2:#time。時刻を表します

2.4 時間マクロの使用方法​

データ遡及タスクの設定ファイル内では、時間マクロを使って時間パラメータを置換できます。データ遡及コマンドの実行時に、ta-toolツールは--dateを基準として時間マクロのパラメータに基づいて時間のオフセットを計算し、設定ファイル内の時間マクロを置換します。対応している時間マクロの形式:@[{yyyyMMdd}], @[{yyyyMMdd}-{nday}], @[{yyyyMMdd}+{nday}]など

  • yyyyMMddは、JavaのdateFormatで解析できる任意の日付形式に置き換えられます。例:yyyy-MM-dd HH:mm:ss.SSS, yyyyMMddHH000000

  • nは任意の整数で、時間のオフセット値を表します

  • dayは時間のオフセット単位を表し、次のいずれかを指定できます: day, hour, minute, week, month

  • 例:現在時刻が2018-07-01 15:13:23.234であるとします

    • @[{yyyyMMdd}]は20180701に置換されます
    • @[{yyyy-MM-dd}-{1day}]は2018-06-30に置換されます
    • @[{yyyyMMddHH}+{2hour}]は2018070117に置換されます
    • @[{yyyyMMddHHmm00}-{10minute}]は20180701150300に置換されます
このページは役に立ちましたか?