Ver 1.13 版本的分群 API

最后更新于:2018-12-29 16:19:21

1 分群规则描述

规则描述部分是可嵌套的结构,较为复杂,此处单独进行描述。 在 “添加” 分群时,会用到规则描述。

rules_relation_node: 规则之间的逻辑关系

// 规则间逻辑关系
{
    "type": "rules_relation"
    "relation": string;    // and/or
    "rules":[]             // 只允许 type 为 "rules_relation" 和三种规则节点,不允许为空
}

rule_node: 规则节点,分三种

// 属性规则
{
   "type": "profile_rule",
   "field": string,     // 属性、分群或属性和分群的组合
   "function": string,  // 规则函数(指标约束) 
   "params": []         // 规则条件值。List<Object>
}
// 事件规则
{
   "type": "event_rule",
   "measure": {
       "type": "event_measure",
       "event_name": string,  // 事件名
       "aggregator": string,  // 指标统计方式,如count, sum之类
       "field": string        // optional. 某些指标统计方式对应的 field 可以为空
   },
   "time_function": string,  // 时间区间函数
   "time_params": [],        // 时间区间参数
   "function": string,       // 规则函数 (指标约束)
   "params": [],             // 规则条件。不出现指标
   "filters": []             // 筛选条件。可以为空列表,不为空时只有一个元素,filter_relation_node或filter_node
}
// 行为序列规则
{
   "type": "event_sequence_rule",
   "time_function": string,      // 行为序列的时间函数
   "time_params": [],            // 行为序列的时间区间参数
   "steps":
     [
        {
          "event": string,       // 事件名1/虚拟事件1
          "filters": []          // 筛选条件,同上
        },
        {
          "event": string,       // 事件名2/虚拟事件2
          "filters": []          // 筛选条件,同上
        }
     ]
}

filter_realtion_node: 同一事件的筛选条件的逻辑关系

{
    "type": "filters_relation",
    "relation": string;          // and/or
    "subfilters":[]              // 只允许type为filters_relation或filter
}

filter_node: 事件或事件型指标的数据约束

{
   "type": "filter"
   "field": string,        // 事件属性
   "function": string,     // 筛选条件函数
   "params": []            // 筛选条件的值
}

2 添加一个分群

[POST /segmenter/rule]

  • Request (application/json)

{
  "id": 0, // 写 0 即可 
  "name": "last_30_days_apply",
  "cname": "last_30_days_apply",
  "type": 0, // 分群执行方式,0 单次、1 规则创建例行执行、2 query_result 计算结果、5 外部导入单次执行、6 外部导入例行执行
  "app_push_list": [
    0 // app push 配置列表,不带可以不写
  ],
  "scheduler": { // 例行分群配置
    "running": true,  // 执行状态,true 已启动、false 已停止
    "cron": "string"  // 更新时间,cron 表达式格式,如:0 0 3 2,3,4 * ? *
  },
  "content": {
    "type": "string",
    "relation": "string",
    "rules": [
      {}
    ]
  }
}
  • Response 200 (application/json)
{
  "id": 0, // 分群ID
  "base_time": "string" // 新建分群的首个 partition 的 base_time,形如:2018-01-02 10:00:00
}

3 执行一个分群

[POST /segmenter/execute]

  • Request (application/json)
[
  {
    "id": 0, // 分群 ID
    "base_time_list": [
      "string" // 2018-08-28 10:00:00
    ]
  }
]
  • Response 200 (application/json)
{}

4 获取一个分群的执行状态

[POST /segmenter/status]

  • Request (application/json)
[
  {
    "id": 0, // 分群 id
    "base_time_list": [
      "string" // base_time 列表, 形如 2018-08-28 10:00:00
    ]
  }
]
  • Response 200 (application/json)
[
  {
    "id": 0, // 分群ID
    "result": [
      {
        "base_time": "string", // 计算的基准时间,形如 2018-08-28 10:00:00
        "count": 0, // 计算结果:总人数
        "status": "string", // 分群状态,新建分群还未执行:new、执行中:computing、执行完毕:succeed、执行失败:failed
        "finished_time": "string", // 分群计算的完成时间
        "error_code": 0  // 失败原因
      }
    ]
  }
]

5 删除一个分群

[DELETE /segmenter/rule/{id}]

  • Response 200 (application/json)
{}

6 获取所有分群

[GET /segmenter/rule/all]

  • Response (application/json)
{
  "total": 0, // 分群总数
  "result": [
    {
      "id": 0, // 分群 ID
      "name": "string", // 分群名
      "cname": "string", // 分群显示名
      "user_name": "string", // 创建分群的用户
      "create_time": "string", // 创建分群的时间
      "type": 0, // 分群执行方式,0 单次、1 规则创建例行执行、2 query_result 计算结果、5 外部导入单次执行、6 外部导入例行执行、7 SQL 创建
      "dir_id": 0, // 分群所在的目录 ID
      "scheduler": {
        "running": true, // 执行状态,true 已启动、false 已停止
        "cron": "string", // 更新时间,cron 表达式格式,如:0 0 3 2,3,4 * ? *
        "execute_cron": "string" // 执行时间,execute_cron 表达式格式,如:0 0 3 2,3,4 * ? *
      },
      "failed_partition_count": 0, // 失败的 partition 数
      "content": {
        "type": "string", //  定义规则间的逻辑关系,值为:rules_relation
        "relation": "string",  // and/or
        "rules": [ // 规则节点列表
          {}
        ]
      },
      "last_partition": {
        "base_time": "string", // 分群计算的基准时间 2018-08-28 11:00:00
        "finished_time": "string", // 分群计算的完成时间
        "count": 0, // 总人数
        "app_push_list": [ // 推送配置
          0 // 推送配置 ID
        ],
        "status": "string", // Partition 状态,新建分群还未执行:new、执行中:computing、执行完毕:finish、执行失败:failed
        "content": { // 分群规则,此结构可以作为规则节点来嵌套、组合使用
          "type": "string", // 定义规则间的逻辑关系,值为:rules_relation
          "relation": "string", // and/or
          "rules": [ // 规则节点列表
            {}
          ]
        }
      }
    }
  ]
}