Ver 1.14 标签及用户群 API

最后更新于:2019-04-28 11:14:05

标签/用户群规则描述

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

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": []            // 筛选条件的值
}

分群 API 全部下线,1.14 分群升级为用户群

以下接口的 request 和 response 都是 application/json 格式

公共字段 字段名、字段含义、字段类型及可选值:

字段名 字段含义 字段类型 是否必填 可选值 其他说明
name 标签/用户群英文名 string 创建时不填写则不校验(默认给个不冲突的 name),如果填写了则会进行重名校验
cname 标签/用户群中文名 string
comment 标签/用户群备注 string
cron 调度周期 string cron 表达式 如:0 0 0 ? * 表示每天 0 点计算,如果是单次标签/用户群则可缺省
is_routine 是否是例行标签/用户群 boolean 如果是例行标签/用户群,则上面的 cron 必填
app_push_list app push 配置列表 list
base_time 标签/用户群计算的基准时间 string 创建时不需填写(填写也无效)格式如:"2019-03-05 00:00:00"
unit 标签/用户群更新周期 string DAY 目前只支持 DAY
data_type 标签/用户群数据类型 string BOOL, NUMBER, STRING, DATETIME 参考 https://www.sensorsdata.cn/manual/data_schema.html
source_type 标签/用户群类型 string 1 规则创建的标签/用户群

1. 创建一个用户群

[POST /segmenter/rule 创建分群] 替换为 [PUT /v2/user_groups 创建一个用户群]

  • Request

    {
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string", 
    "app_push_list": [
      0
    ], 
    "rule_content_list": [  // 规则创建的计算规则,list size = 1
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
    }
    
  • Response 200

    {
    "id": 0,
    "name": "string",
    "cname": "string",
    "user_name": "string",
    "create_time": "string", // 创建时间
    "data_type": "BOOL",
    "unit": "HOUR", 
    "source_type": 0,
    "is_routine": true,
    "status": "PENDING",
    "comment": "string",
    "cron": "string", 
    "app_push_list": [
      0
    ],
    "rule_content_list": [  // 规则创建的用户群信息, list size 为 1
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "failed_partition_count": 0, // 失败的 partition 数, Type:int
    "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
      "base_time": "string",
      "start_time": "string",  // 计算的开始时间
      "finished_time": "string", // 计算的结束时间
      "user_count": 0, // 计算的用户数
      "status": "SUCCEED", // partition 的状态
      "rule_content_list": [
        {
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"  // 下次计算的 base_time,单次用户群不返回
    }
    }
    

2. 获取用户群列表

[GET/segmenter/rule/all 获取分群列表] 替换为 [GET /v2/user_groups 获取用户群列表]

  • Responses 200
    [
    {
      "id": 0,
      "name": "string",
      "cname": "string",
      "user_name": "string",
      "create_time": "string", // 创建时间
      "data_type": "BOOL",
      "unit": "HOUR", 
      "source_type": 0,
      "is_routine": true,
      "status": "PENDING",
      "comment": "string",
      "cron": "string", 
      "app_push_list": [
        0
      ],
      "rule_content_list": [  // 规则创建的用户群信息, list size 为 1
        {
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ],
      "failed_partition_count": 0, // 失败的 partition 数, Type:int
      "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
        "base_time": "string",
        "start_time": "string",  // 计算的开始时间
        "finished_time": "string", // 计算的结束时间
        "user_count": 0, // 计算的用户数
        "status": "SUCCEED", // partition 的状态
        "rule_content_list": [
          {
            "type": "string",
            "relation": "string",
            "rules": [
              {}
            ]
          }
        ]
      },
      "last_partition_info": {
        "base_time": "string",
        "start_time": "string",
        "finished_time": "string",
        "user_count": 0,
        "status": "NEW",
        "next_partition_base_time": "string"  // 下次计算的 base_time,单次用户群不返回
      }
    }
    ]
    

3. 执行用户群

[POST /segmenter/execute 执行分群] 替换为 [POST /v2/user_tags/{id}/execute 执行标签]

  • Request(In Path):

    • base_time_list:Partition 的 base_time。 Type :List,可缺省。缺省计算最近一次 Partition
  • Response 200

    {}
    

4. 获取用户群信息

[GET /segmenter/rule/{id} 获取分群详情] 替换为 [GET /v2/user_groups/{id} 获取用户群信息]

  • Response 200
    {
    "id": 0,
    "name": "string",
    "cname": "string",
    "user_name": "string",
    "create_time": "string", // 创建时间
    "data_type": "BOOL",
    "unit": "HOUR", 
    "source_type": 0,
    "is_routine": true,
    "status": "PENDING",
    "comment": "string",
    "cron": "string", 
    "app_push_list": [
      0
    ],
    "rule_content_list": [  // 规则创建的用户群信息, list size 为 1
      {
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "failed_partition_count": 0, // 失败的 partition 数, Type:int
    "last_succeed_partition": { // 最后一次计算成功的 partition 信息,如果没有则不传
      "base_time": "string",
      "start_time": "string",  // 计算的开始时间
      "finished_time": "string", // 计算的结束时间
      "user_count": 0, // 计算的用户数
      "status": "SUCCEED", // partition 的状态
      "rule_content_list": [
        {
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"  // 下次计算的 base_time,单次用户群不返回
    }
    }
    

5. 删除用户群

[DELETE /segmenter/rule/{id} 删除分群] 替换为 [DELETE /v2/user_groups/{id} 删除用户群]

  • Response 200
    {}
    

6. 检查用户群执行状态

[POST /segmenter/status 检查分群执行状态] 替换为 [GET /v2/user_tags/{id}/status 检查标签执行状态]

  • Request(In Path):

    • base_time_list:用户群的 Partition 对应的 base_time,Type:List,缺省则返回最新一个 Partition 的状态
  • Response 200

[
  {
    "base_time": "string",
    "user_count": 0, // 对应 partition 的人数
    "status": "NEW", // partition 的状态
    "start_time": "string", // partition 计算开始时间
    "finished_time": "string" // partition 计算结束时间
  }
]

标签 API(新增)

1. 创建一个标签

[PUT /v2/user_tags 创建标签]

  • Request:

    {
    "dir_id": 0,  // 对应的目录 id,Type: int
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true, // 是否是例行标签,Type:boolean
    "comment": "string", // 标签的注释
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [ // 规则
      {
        "value": {},  // 每个规则对应的计算结果,如:用户消费水平高。
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      },
     {
        "value": {},  // 每个规则对应的计算结果,如:用户消费水平中
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
    }
    
  • Response 200

    {
    "id": 0,
    "dir_id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "last_succeed_partition": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"
    }
    }
    

2. 更新标签配置

[PUT /v2/user_tags/{id} 更新标签配置]

  • Request:

    {
    "dir_id": 0,  // 对应的目录 id,Type: int
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true, // 是否是例行标签,Type:boolean
    "comment": "string", // 标签的注释
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [ // 规则
      {
        "value": {},  // 每个规则对应的计算结果,如:用户消费水平高。
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      },
     {
        "value": {},  // 每个规则对应的计算结果,如:用户消费水平中
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ]
    }
    
  • Response 200

    {
    "id": 0,
    "dir_id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "last_succeed_partition": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"
    }
    }
    

3. 获取标签列表

[GET /v2/user_tags 获取标签列表]

  • Response 200
    [
    {
      "id": 0,
      "dir_id": 0,
      "name": "string",
      "cname": "string",
      "data_type": "BOOL",
      "unit": "HOUR",
      "source_type": 0,
      "is_routine": true,
      "comment": "string",
      "cron": "string",
      "app_push_list": [
        0
      ],
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ],
      "last_succeed_partition": {
        "base_time": "string",
        "start_time": "string",
        "finished_time": "string",
        "user_count": 0,
        "status": "NEW",
        "rule_content_list": [
          {
            "sql": "string",
            "value": {},
            "type": "string",
            "relation": "string",
            "rules": [
              {}
            ]
          }
        ]
      },
      "last_partition_info": {
        "base_time": "string",
        "start_time": "string",
        "finished_time": "string",
        "user_count": 0,
        "status": "NEW",
        "next_partition_base_time": "string"
      }
    }
    ]
    

4. 获取标签元信息

[GET /v2/user_tags/{id} 获取标签元信息]

  • Response 200
    {
    "id": 0,
    "dir_id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "last_succeed_partition": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"
    }
    }
    

5. 删除标签

DELETE /v2/user_tags/{id} 删除标签

  • Response 200
    {}
    

6. 修改标签调度状态

[PATCH /v2/user_tags/{id} 修改标签的调度状态]

  • Request:
{
  "status": 标签目标状态,Type:String,Available Values:PENDING, RUNNING, SUSPEND。PENDING 待审批,RUNNING 正常运行,SUSPEND 已暂停
  // 注:标签状态只有在 RUNNING 时才能正常计算,新建标签的状态为 PENDING
}
  • Resonse 200
    {
    "id": 0,
    "dir_id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "unit": "HOUR",
    "source_type": 0,
    "is_routine": true,
    "comment": "string",
    "cron": "string",
    "app_push_list": [
      0
    ],
    "rule_content_list": [
      {
        "sql": "string",
        "value": {},
        "type": "string",
        "relation": "string",
        "rules": [
          {}
        ]
      }
    ],
    "last_succeed_partition": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "rule_content_list": [
        {
          "sql": "string",
          "value": {},
          "type": "string",
          "relation": "string",
          "rules": [
            {}
          ]
        }
      ]
    },
    "last_partition_info": {
      "base_time": "string",
      "start_time": "string",
      "finished_time": "string",
      "user_count": 0,
      "status": "NEW",
      "next_partition_base_time": "string"
    }
    }
    

7. 执行标签

[POST /v2/user_tags/{id}/execute 执行标签]

  • Request(In Path 可缺省,缺省则执行最近一个 partition):

    • base_time_list:Type: List,Partition 的 base_time 列表
  • Response 200

    {}
    

8. 检查标签执行状态

[GET /v2/user_tags/{id}/status]

  • Request(In Path 可缺省):

    • base_time_list:Type:List,Partition 对应的 base_time 列表,缺省则返回最后一个的执行状态
  • Response 200

[
  {
    "base_time": "string",
    "user_count": 0,
    "status": "NEW",
    "start_time": "string",
    "finished_time": "string"
  }
]

9. 获取标签详情

[POST /v2/user_tags/{id}/report] 获取标签详情

  • Request:
{
  "from_date": "string",
  "to_date": "string",
  "bucket_param": [ // 对于数据类型为 NUMBER 或 LIST 的可以设置 bucket_param 进行分组。
 // 离散时间:bucket_param 设置为 [1]
 // 离散数字:bucket_param 设置为 [null]
 // 默认分组规则可省略此参数
    0
  ],
  "limit": 0
}
  • Response 200
{
  "aggregate_result": { // 聚合的结果
    "series": [
      "string"
    ],
    "rows": [
      {
        "by_value": "string",
        "partition_values": [
          {
            "user_count": 0,
            "percent": 0,
            "base_time": "string",
            "finished_time": "string"
          }
        ]
      }
    ]
  },
  "non_aggregate_result": { // 非聚合结果
    "series": [
      "string"
    ],
    "rows": [
      {
        "by_value": "string",
        "partition_values": [
          {
            "user_count": 0,
            "percent": 0,
            "base_time": "string",
            "finished_time": "string"
          }
        ]
      }
    ]
  }
}

10. 获取标签的完整目录结构

[GET /v2/user_tags/dirs]

  • Response 200
    [
    {
      "type": "string",
      "id": 0,
      "name": "string",
      "cname": "string",
      "data_type": "BOOL",
      "is_default": true,
      "items": [
        null
      ]
    }
    ]
    

11. 更新标签的目录结构

[PUT /v2/user_tags/dirs]

  • Request
[
  {
    "type": "string",
    "id": 0,
    "name": "string",
    "cname": "string",
    "data_type": "BOOL",
    "is_default": true,
    "items": [
      null
    ]
  }
]
  • Response 200
    {}
    

12. 删除目录,只能进行目录的删除

[DELETE /v2/user_tags/dirs]

  • Request:
[
  目录的 id 列表。**只能删除目录,并且需要确认删除的目录中没有标签才能进行删除**
]
  • Response
    {}