通用API查询参数
七大模型从页面操作上来,有一些通用的请求Body参数,例如"全局筛选"、“分组项”、“分析主体“以及具体的计算时间及粒度,故我们将这些参数的做单独说明,每个模型特有的参数将在各个分析API中展示
如何表示一个属性
在API查询中,您会发现很多地方会用到事件/用户属性参数,那在DataTower中,我们使用可以用一个对象来准确表示一个事件或用户属性
参数说明
参数名
|
参数类型
|
是否必填
|
说明
|
id
|
Number
|
是
|
属性id |
name
|
String
|
是
|
属性名 |
display_name
|
String
|
否
|
属性显示名 |
table_type
|
Number
|
是
|
用于表示该属性是事件属性还是用户属性,其中: 0:事件属性 1:用户属性 |
type
|
Number
|
是
|
属性类别,可在【元数据】中查看,其中: 0:系统属性 1:预置属性 2:自定义属性 3:虚拟属性 4:维度属性 5:用户标签 6:对象子属性 |
data_type
|
String
|
是
|
属性的数据类型,包括当前DataTower支持的所有数据类型,包括: 'string'、'number'、'boolean'、'dateTime'、'cluster'、'tag'、'array'、 'object'、'objectArray'
|
示例
{
"id":1213
"table_type": 0,
"name": "#acid",
"display_name": "账号 ID",
"type": 1,
"data_type": "string",
}
如何表示一个筛选条件
在API查询中,当需要使用筛选条件时(如全局筛选或者针对单个事件的筛选),我们可以使用一个对象结构来表示筛选条件参数,DataTower支持两层嵌套筛选条件的数据结构
每一个筛选项,由两到三部分构成:属性 + 筛选符号 + 具体筛选值(可选),然后不同筛选项之间可以是"且"、"或"的关系构成一个大筛选,而大筛选之间也可以是"且"和"或"的关系。
以下图为例我们有三个筛选项,分别是:
- 账号ID(属性) + 等于 (筛选符号) + "abc1234"(具体筛选值)
- 应用版本号(属性)+ 有值(筛选符号)
- 安装时间(属性) + 位于区间(筛选符号)+ "2024-12-23 00:00:00 - 2024-12-23 23:59:59"(具体筛选值)
整个筛选条件为"安装时间位于2024-12-23 00:00:00到2024-12-23 23:59:59,或者是账号ID等于abc1234同时应用版本号不为空"
参数说明
参数名
|
参数类型
|
是否必填
|
说明
|
relation
|
String
|
否
|
当想要对该事件进行筛选时,需要传入这三个字段,目前DataTower支持对事件进行两层筛选。其中:
|
filterType
|
String
|
否
|
|
filters
|
List[Obeject]
|
否
|
|
columnName
|
String
|
是
|
属性名,如:#acid |
columnDesc
|
String
|
否
|
属性显示名,如:账号ID |
columnType
|
String
|
是
|
属性的数据类型,包括当前DataTower支持的所有数据类型,包括: 'string'、'number'、'boolean'、'dateTime'、'cluster'、'tag'、'array'、 'object'、'objectArray'
|
tableType
|
String
|
是
|
用于表示该属性的组别,其中: "event":事件属性 "user":用户属性 "cluster":用户分群 "tag":用户标签 |
type
|
Number
|
是
|
属性类别,可在【元数据】中查看,其中: 0:系统属性 1:预置属性 2:自定义属性 3:虚拟属性 4:维度属性 5:用户标签 6:对象子属性 |
extra
|
Object
|
是
|
参考下面extra参数解释 |
comparator
|
String
|
是
|
筛选符号,不同的属性类型可支持不同的筛选符号,具体见 |
filterValue
|
List[string] | String
|
否
|
具体的筛选值,为一个列表,为填入的筛选值 当筛选符号是C06(有值)、C07(无值)、C11(为真)、C12(为假)、C16(属于分群)、C17(不属于分群)、C20(为空字符串)、C21(不为空字符串)时,可不填 使用过程中,有参数疑问时,请联系DT团队 |
extra参数解释
由于对象属性以及维度属性等存在父属性等关联属性,所以需要extra参数标识,为其他属性时,extra可以保持为空对象即{},使用过程中,有参数疑问时,请联系DT团队
当为维度属性时
字段
|
字段类型
|
说明
|
bound_prop
|
String
|
属性名称
|
dimension_id
|
Number
|
维度id
|
bound_prop_id
|
Number
|
维度属性对应原始属性id
|
bound_parent_prop
|
String
|
属性对应父属性名称
|
original_column_type
|
String
|
本身属性在数据库中的类型
‘varchar’、'int'、'array' 等
|
当为子属性(包含对象子属性,对象组子属性,列表子属性等)时
字段
|
字段类型
|
说明
|
original_column_type
|
String
|
本身属性在数据库中的类型
‘varchar’、'int'、'array' 等
|
bound_parent_prop
|
String
|
属性对应父属性名称
|
parent_column_type
|
String
|
子属性父属性数据类型
'string'、'number'、'boolean'、'dateTime'、'cluster'、'tag'、'array'、 'object'、'objectArray'
|
示例
上图所示的筛选条件,最终的参数为:
{
"relation": "or",
"filters": [
{
"filterType": "COMPOUND",
"relation": "and",
"filters": [
{
"type": 1,
"columnName": "#acid",
"columnDesc": "账号ID",
"columnType": "string",
"comparator": "C00",
"filterValue": ["abc1234"],
"tableType": "event"
},
{
"type": 1,
"columnName": "#app_version_code",
"columnDesc": "应用版本号",
"columnType": "number",
"comparator": "C06",
"tableType": "event"
}
]
},
{
"filterType": "SIMPLE",
"relation": "and",
"filters": [
{
"type": 1,
"columnName": "#app_install_time",
"columnDesc": "安装时间",
"columnType": "dateTime",
"comparator": "C08",
"filterValue": ["2024-12-23 00:00:00","2024-12-23 23:59:59"],
"tableType": "event"
}
]
}
]
}
如何表示一个分组项
在API查询中,当需要进行分组计算时,我们可以使用一个对象结构来表示参与分组的属性。对于一些特殊数据类型的,我们还可以支持分组的场景,如:
数据类型 | 额外支持的分组场景 |
数值 |
离散区间:将分组的属性值按照数值,一个个离散分组 自定义区间:根据设定的区间范围,进行区间的分组 |
日期和时间 | 可以按月、周、天、小时、分钟进行分组 |
列表 |
按元素:将列表中的元素完全拆开,进行分组 按元素集合:列表元素去重,不考虑顺序,进行分组 按元素整体:列表元素考虑顺序,进行分组 |
参数说明
参数名
|
参数类型
|
是否必填
|
说明
|
columnName
|
String
|
是
|
属性名,如:#acid |
columnDesc
|
String
|
否
|
属性显示名,如:账号ID |
columnType
|
String
|
是
|
属性的数据类型,包括当前DataTower支持的所有数据类型,包括: 'string'、'number'、'boolean'、'dateTime'、'cluster'、'tag'、'array'、 'object'、'objectArray'
|
tableType
|
String
|
是
|
用于表示该属性的组别,其中: "event":事件属性 "user":用户属性 "cluster":用户分群 "tag":用户标签 |
type
|
Number
|
是
|
属性类别,可在【元数据】中查看,其中: 0:系统属性 1:预置属性 2:自定义属性 3:虚拟属性 4:维度属性 5:用户标签 6:对象子属性 |
extra
|
Object
|
是
|
参考下面extra参数解释 |
propertyRangeType
|
Number
|
否
|
当使用数值类型进行分组时,需要指明分组的类型,其中: 1:离散区间 2:自定义区间 |
propertyRange
|
List[Number]
|
否
|
当使用数值类型分组,并且使用自定义区间时,必填 想要表示(-∞,0], (0,2], (2,5], (5,+∞)时,可用[0,2,5]进行表示 |
timeGroupType
|
String
|
否
|
当使用日期和时间类型分组时,需要指明分组粒度,支持: 按月:monthly 按周:weekly 按天:daily 按小时:hourly 按分钟:minutely |
extra参数解释
由于对象属性以及维度属性等存在父属性等关联属性,所以需要extra参数标识,为其他属性时,extra可以保持为空对象即{},使用过程中,有参数疑问时,请联系DT团队
当为维度属性时
字段
|
字段类型
|
说明
|
bound_prop
|
String
|
属性名称
|
dimension_id
|
Number
|
维度id
|
bound_prop_id
|
Number
|
维度属性对应原始属性id
|
bound_parent_prop
|
String
|
属性对应父属性名称
|
original_column_type
|
String
|
本身属性在数据库中的类型
‘varchar’、'int'、'array' 等
|
当为子属性(包含对象子属性,对象组子属性,列表子属性等)时
字段
|
字段类型
|
说明
|
original_column_type
|
String
|
本身属性在数据库中的类型
‘varchar’、'int'、'array' 等
|
bound_parent_prop
|
String
|
属性对应父属性名称
|
parent_column_type
|
String
|
子属性父属性数据类型
'string'、'number'、'boolean'、'dateTime'、'cluster'、'tag'、'array'、 'object'、'objectArray'
|
如何表示计算时间范围以及计算粒度
在分析模型中,往往需要指定计算的时间范围,以及时间计算的聚合粒度(按天、月、年),此时需要用到计算时间参数。DataTower支持静态时间和动态时间计算,其中静态时间指的是固定的一个时间点,例如2024-01-01,动态时间是基于计算时的时间进行动态偏移的时间点,例如7天前。
在计算时间参数中,我们使用recentDay和dateList来完整表示一个时间范围
表示的时间范围 | 字段说明 | 示例 |
静态时间范围,起止时间都固定 | dateList不为空,长度为2的字符串列表 |
|
起始时间是固定,结束时间是动态 | recentDay使用"@@"进行分隔,其中"@@"前为固定的起始时间,"@@"后为一个距离当前时间的偏移量(天,今天为0,昨天为1,以此类推) |
|
起始时间和结束时间都是动态的,即表示一个动态的时间范围,如最近7天 | recentDay使用"
$$"进行分隔,两边均为距离当前时间的偏移量(天)
|
|
在某些计算时,还需要指定时间聚合的粒度,如事件分析中需要指明按天/周/月聚合,此时需要用到timeParticleSize字段
参数说明
参数名
|
参数类型
|
是否必填
|
说明
|
timeParticleSize
|
String
|
是
|
计算聚合的粒度,支持: 按天:"day" 按周:"week" 按月:"month" 按小时:"hour" 按分钟:"minute" 合计:"total" |
dateList
|
List[String]
|
否
|
当想要固定一个计算时间范围时,填入该值 示例:[ "2023-12-27", "2024-01-02"] |
recentDay
|
String
|
否
|
当计算时间范围中有动态时间时,需要使用该字端来表述事件范围 |
dynamicDate
|
String
|
否
|
当想使用预置的动态时间作为计算范围时,填入该值,优先级最高,支持: "0W":本周 "1W":上周 "0M":本月 "1M":上月 |
示例
当我们想要计算时表示最近6天,按日聚合计算时,可用以下对象表示:
"eventsView":{
"timeParticleSize":"day",
"recentDay":"0$$6",
},
如何表示一个分析主体
在留存、漏斗、分布、间隔和路径分析中,我们需要指明所使用的分析主体,一般地,我们会使用预置的分析主体($uid)。如果您想使用其他的分析主体,例如国家、设备号等等,可以先在项目配置中基于属性创建一个分析主体,然后在分析模型中使用。我们可以用如下对象表示分析主体,示例中可以看到,当您使用的是预置分析主体时,可以直接复制下面的例子:
"entity": {
"id": 155,
"name": "用户ID",
"entity_type": "PRIMARY",
"column_desc": "DT 系统的用户唯一 ID;区分唯一事件流",
"column_name": "$uid",
"column_type": "varchar",
"data_type": "string",
"display_name": "DT 用户 ID",
"table_type": "user",
"type": 1
},
特别注意: 以上参数与如何表示一个属性基本一致,但是table_type与如何表示一个属性存在出入,在分析主体中table_type为一个枚举,其中:"event":事件属性, "user":用户属性,"cluster":用户分群,"tag":用户标签