データ遡及機能
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である必要があります
- 必須列名1:
-
上記の列名以外の列のデータは、そのイベントのプロパティとなり、列名がそのままプロパティ名になります
イベントの遡及のほか、クエリ結果から新しいユーザープロパティを生成したり、既存のユーザープロパティを上書きしたりすることもできます。設定ファイルは次のとおりです:
{
"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。時刻を表します
- 必須列名1:
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に置換されます

