菜单

通用的API查询参数说明

通用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支持对事件进行两层筛选。其中:

  1. relation:表示最外层的筛选条件之间的关系是“且”还是“或”。如果是“且”,则传入"and",如果是“或”,则传入"or";
  2. filterType:表示筛选条件的类型,简单类型(传"SIMPLE")或者是复杂类型(传"COMPOUND"),其中复杂类型表示该层级的筛选项个数大于1;
  3. filters:具体的筛选项,长度等于事件最外层筛选条件的个数,其就是一个嵌套的filters对象,每一个对象表明最外层的一个筛选条件,而一个筛选条件可以由多个子筛选构成
  4. 每一个Object的数据格式见下
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的字符串列表
{ 
  "dateList": [ "2023-12-27", "2024-01-02"] 
  "recentDay":""  // 必须为空字符串
}
起始时间是固定,结束时间是动态 recentDay使用"@@"进行分隔,其中"@@"前为固定的起始时间,"@@"后为一个距离当前时间的偏移量(天,今天为0,昨天为1,以此类推)
{ "recentDay":"2024-12-05@@1"  // 表示2024-12-05到昨天 }
起始时间和结束时间都是动态的,即表示一个动态的时间范围,如最近7天 recentDay使用"
$$"进行分隔,两边均为距离当前时间的偏移量(天)
{"recentDay":"2$$4"  // 表示4天前到2天前 }

在某些计算时,还需要指定时间聚合的粒度,如事件分析中需要指明按天/周/月聚合,此时需要用到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":用户标签

最近修改: 2024-12-30