数据回溯功能(user_event_import)

数据回溯功能是通过SQL语句对TA数据库内的数据进行查询后,再将返回结果录入到TA数据库中,以生成新事件或新的用户属性的功能。

编写数据回溯配置文件

数据回溯功能的核心,是包含查询语句与配置参数的配置文件。一个配置文件,对应了一个数据回溯任务,一条回溯事件的配置文件如下:

{
    "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"
}

每个配置文件都是以JSON来表示的,以下是每个元素的意义:

  • event_desc:JSON对象,用以设置新建事件的显示名,key值为事件名,value值为显示名,可选配置
  • appid:必须配置,写入查询结果的目标项目的APPID
  • type:必须配置,共有两个取值"event"与"user",表示写入到目标项目的event表还是user
  • property_desc:可选配置,JSON对象,用以设置属性名的显示名,key值为属性名,value值为显示名
  • sql:必须配置,字符串,为查询的语句,请注意,返回结果的列名,将会决定该列数据的具体含义,其中必须要有以下:
    • 必要列名1:#account_id#distinct_id ,至少要有其中一个,对应触发用户的账号ID与匿名ID,如果生成的事件不是由个人触发的,比如上述例子中的LTV,建议使用ID规则外的定值表示,比如"system","admin"等
    • 必要列名2:#event_name,事件名称,建议设置定值
    • 必要列名3:#time,事件发生的时间,格式必须是yyyy-MM-dd HH:mm:ssyyyy-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,只需要以下两条:
    • 必要列名1:#account_id#distinct_id,至少要有其中一个
    • 必要列名2:#time,表示时间

调用数据回溯命令

登录到任意一台TA服务器,执行su - ta命令,切换至ta用户

执行ta-tool user_event_import -conf读取配置文件,命令如下:

ta-tool user_event_import -conf <config文件> [--date 数据日期]

参数:

  • config文件:必传,参数为对应数据回溯任务配置文件的路径,支持通配符的方式,例如:/data/config/*或者 ./config/*.json
  • --date:可选,参数表示数据日期,时间宏会基于此基准时间进行替换,可不传,不传则默认取当前日期,格式为YYYY-MM-DD,时间宏的具体使用方法,可参考时间宏使用方法

示例如下:

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

参数为配置文件的完整路径,支持使用通配符读取多个配置文件

时间宏使用方法

在数据回溯任务配置文件内部可以使用时间宏替换时间参数,在执行数据回溯命令时,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-31
    • @[{yyyyMMddHH}+{2hour}] 替换为 2018070117
    • @[{yyyyMMddHHmm00}-{10minute}] 替换为 20180701150300

results matching ""

    No results matching ""