*****
> 分析模型数据获取
*****
# 分析API
## 1\. 调用方法
采用标准的 HTTP 方式,调用的URL为访问网站的URL+API地址,详情见 [API](../README.md) 。
## 2\. 通用参数
### 2.1 表达式
分析API中使用的指标、过滤条件、维度等都会使用表达式。表达式分为事件表达式和属性表达式两种,对应的参数名称都为expression。
#### 2.1.1 事件表达式
事件表达式格式为 **event.事件ID** 的方式,如 \*\*注册事件 \*\*的事件表达式为:
```java
"expression": event.signup
```
>[info] 任意事件由系统预置,事件ID为 $Anything,**任意事件** 表达式为:**event.$Anything**
#### 2.1.2 属性表达式
属性包括事件属性和用户属性,在方舟5.2版本开始支持自定义表达式、标签属性和维度表属性。
* 事件属性
事件属性使用 **event.事件ID.属性ID** 的方式,例如表示 注册事件的注册方式 这个事件属性的表达式为
```java
"expression": event.signup.signuptype
```
* 用户属性
用户属性使用 **user.用户属性ID** 的方式,例如表示 **用户注册时间** 这个用户属性的表达式如下:
```java
"expression": user.$signup_time
```
* 自定义表达式
自定义表达式使用 **formula.表达式ID** 的方式,配合页面获取参数使用
* 用户标签属性
用户标签使用 **tag.标签CODE.标签版本** 的方式,标签版本可不指定,为空时取最新版本,表达式如下:
```
不指定版本号:
"expression": tag.tag_code1
指定版本号:
"expression": tag.tag_code1.2020-11-01
```
* 事件维度表属性
事件属性维度表使用 **dim.事件ID.维度表.维度属性** 的方式
如基于 SDK类型 $lib 创建了一个维度表,维度表名为:dim\_lib\_info
维度属性包含:
| $lib (关联字段) | name | type |
| --- | --- | --- |
| JS | WEB | 客户端 |
| iOS | 苹果 | 客户端 |
| Android | 安卓 | 客户端 |
| java | JAVA | 服务端 |
如果是根据维度表的关联属性 type进行分析,表达式如下:
```
"expression": dim.$Anything.dim_lib_info.type
```
如果是根据维度表的关联属性 name 进行分析,表达式如下:
```
"expression": dim.$Anything.dim_lib_info.name
```
### `2.2 过滤条件`
过滤条件主要用来筛选符合期望的某些事件结果或者用户结果,根据条件使用的场景不同,能选择到的过滤内容也不同:
* 如果过滤条件应用在某个事件下,可以使用通用事件属性、用户属性和这个事件独有的事件属性。
* 如果过滤条件是全局的,针对于所有事件生效,可以使用通用事件属性、用户属性和所有事件都有(根据属性ID判断)的事件属性。
过滤条件使用参数名称为flter,参数格式为JSON,如下:
```java
"filter":{
//过滤条件列表,可以输入多个
"conditions": [
{
//条件,如任意事件平台等于JS或iOS
"expression": "event.$Anything.$platform",
//条件操作符号
"function": "EQ",
// 条件的参数,根据不同的操作符可以有一个或者多个,数组格式
"params": ["JS","iOS"]
},
{
// SDK版本等于4.0.4.001
"expression": "event.$Anything.$lib_version",
"function": "EQ",
"params": ["4.0.4.001"]
}
],
//条件之间的关系,只能是 且(AND)/ 或(OR)
"relation": "AND"
}
```
#### 2.2.1 条件之间的关系
各个条件之间的关系只支持AND/OR。
* **AND**:条件之间都是且的关系,查询的数据需要满足所有条件。
* **OR**:条件之间都是或的关系,查询的数据只要满足其中一个条件即可。
#### 2.2.2 条件操作符号
条件操作符主要用在过滤条件中,不同属性数值类型,支持不同操作运算符。
>[info] **字符串**
> * **EQ**
> 等于,当params一个值时,表示等于这个值的才满足;当params有多个值时,表示满足其中一项即可,相当于in。
> * **NOT\_EQ**
> 不等于,当params一个值时,表示不等于这个值的都满足;当params有多个值时,表示不能是其中任意一项,相当于not in。
> * **CONTAIN**
> 包含,属性值包含指定字符串,相当于 like %params\[0\]%。
> * **NOT\_CONTAIN**
> 不包含,属性值不包含指定字符串,相当于not like %params\[0\]%。
> * **NOT\_NULL**
> 有值,属性值有值,相当于 is not null。
> * **NULL**
> 无值,属性值无值,相当于 is null。
>[info] **数值**
> * **EQ**
> 等于,当params一个值时,表示等于这个值的才满足;当params有多个值时,表示满足其中一项即可,相当于in。
> * **NOT\_EQ**
> 不等于,当params一个值时,表示不等于这个值的都满足;当params有多个值时,表示不能是其中任意一项,相当于not in。
> * **GT**
> 大于。
> * **GTE**
> 大于等于。
> * **LT**
> 小于。
> * **LTE**
> 小于等于。
> * **RANGE**
> 区间,在某个数据区间内的数值,相当于 >= params\[0\] and <= params\[1\] 或者 between params\[0\] and params\[1\]。
> * **NOT\_NULL**
> 有值,属性值有值,相当于 is not null。
> * **NULL**
> 无值,属性值无值,相当于 is null。
>[info] **布尔**
> * **TRUE**
> 为真。
> * **FALSE**
> 为假。
> * **NOT\_NULL**
> 有值,属性值有值,相当于 is not null。
> * **NULL**
> 无值,属性值无值,相当于 is null。
>[info] **日期**
> * **ABSOLUTE\_TIME**
> 绝对时间,在某个具体的时间范围,相当于 >= params\[0\] and <= params\[1\] 或者 between params\[0\] and params\[1\]。
> `java { "expression": "user.$signup_time", "function": "ABSOLUTE_TIME", "params": ["2019/05/01 00:00","2019/05/31 00:00"] }`
> * **RELATIVE\_TIME\_OF\_CUURENT**
> 在相对当前时间点。
> 四天之内
> `java { "expression": "user.$signup_time", "function": "RELATIVE_TIME_OF_CUURENT", "params": ["4", "day", "within"] }`
> 四天之前
> `java { "expression": "user.$signup_time", "function": "RELATIVE_TIME_OF_CUURENT", "params": ["4", "day", "before"] }`
> * **RELATIVE\_TIME\_RANGE\_CUURENT**
> 在相对当前的时间区间。
> 在过去3天到过去1天之内
> `java { "expression": "user.$signup_time", "function": "RELATIVE_TIME_RANGE_CUURENT", "params": ["3","1","day"] }`
> * **RELATIVE\_TIME\_OF\_EVENT**
> 相对于事件发生时间。 如注册时间在事件发生时间之后(after)/之前(before)3天(day)/小时(hour)/分(minute)/秒(second)
> `java { "expression": "user.$signup_time", "function": "RELATIVE_TIME_OF_EVENT", "params": ["after","3","day"] }`
> 注册时间在事件发生时间当天(day)/当周(week)/当月(month)
> `java { "expression": "user.$signup_time", "function": "RELATIVE_TIME_OF_EVENT", "params": ["day"] }`
> * **NOT\_NULL**
> 有值,属性值有值,相当于 is not null。
> * **NULL**
> 无值,属性值无值,相当于 is null。
>[info] **集合**
> * **EQ**
> 等于,集合只取第一个值进行完整匹配。
> * **CONTAIN**
> 包含,集合里面包含某个值。
> * **NOT\_CONTAIN**
> 不包含,集合里面不包含某个值。
> * **NOT\_NULL**
> 有值,属性值有值,相当于 is not null。
> * **NULL**
> 无值,属性值无值,相当于 is null。
### 2.3 选择用户分群
查询某个分群的数据,对应分群code。如:
```java
"crowds":["$ALL"]
```
>[info] 1、默认为全部用户,**全部用户** 为 **$ALL**。自定义分群code 获取参见 [获取所有用户分群](../api-cohort/api-cohort-base.md#3-huo-qu-suo-you-yong-hu-fen-qun-lie-biao)。
> 2、当前所有API**不支持多分群对比**。
### 2.4 查询时间范围
格式固定为 yyyy-MM-dd,查询都是 大于等于 开始时间,小于等于 结束时间
```java
//开始时间
"fromDate": "2019-06-18"
//结束时间
"toDate": "2019-06-24"
```
### 2.5 选择抽样
抽样因子,范围为1-64, 1表示全量数据,64 表示1/64 ,如抽样二分之一:
```java
"samplingFactor":2
```
### 2.6 细分维度查看
查询结果按照事件属性/用户属性分组进行查看,不传为不分组。事件分析支持多维度查看,其余图表分析只支持单维度。
```java
"byFields":[
{
//按照屏幕高度分组
"expression":"event.$Anything.$screen_width",
//是否使用分桶条件查看结果,只有属性为数值类型时才能使用
//【数值类型时必填】这里表示按照 -∞ ~ 600,600 ~ 800,800 ~ +∞ 三个区间查看
"buckets":[
600,
800
],
// 【日期类型时必填】这里表示不汇总按照按日统计
"byTimeType":"DAY"
}
]
```
>[info] **特殊说明:**
> 1、分桶(**buckets**)只适用于**数值类型**属性,当前只支持**自定义区间**。
> 2、**日期类型属性**,只支持默认统计,默认为\*\*不分组,\*\*支持按照不同 [时间粒度枚举](./#29-shi-jian-mei-ju) 查看。
> 3、多维度使用 byFields:\[\],单维度使用 byField:{},内部参数结构和示例一致。
### 2.7 时间粒度
查询结果可以选择按日(DAY)/周(WEEK)/月(MONTH)/小时(HOUR)/分钟(MINUTE)查看,如按日查看:
```java
"unit":"DAY"
```
>[info] 在按小时/分钟时间粒度查看时,查询时间范围必须是单天
### 2.8 使用缓存
是否使用缓存,true/false
* **true**:使用缓存,取上一次结果,如果缓存失效或者结果不存在,会重新查询。
* **false**:不取缓存,直接查询。
```java
"useCache": true
```
### 2.9 时间枚举
在API中,很多地方(如留存周期、漏斗转化周期、事件分析时间粒度)都有涉及到分时间粒度查看,关于时间粒度的参数值统一如下:
* \*\*SECOND:\*\*秒
* **MINUTE**:分钟
* **HOUR**:小时
* **DAY**:天
* **WEEK**:周
* **MONTH**:月
* **QUARTER**:季度
* **YEAR**:年
## 3\. 接口请求参数快捷获取
因为大部分查询API的输入参数结构都比较复杂,在前期使用或者参数较复杂时不好拼装参数。所以在方舟产品中,对应图表分析中提供了根据页面选择的条件生成API输入参数的入口,点击即可获取需要的参数。
步骤:在分析导航中选择对应分析模块进入,选择需要查询的内容,点击右侧区域 获取API接口参数的图标获取参数。以事件范围为例:

>[info] API在4.3.4之后的版本(含4.3.4)中开放,API AccessKey和参数快捷获取入口也在方舟产品中同步添加。
## 4\. 接口列表
| 分类 | 接口 | 新增版本 | 修改版本 |
| --- | --- | --- | --- |
| 分析模型 | 事件分析 | 4.3.4 | 5.1 |
| 分析模型 | 转化漏斗 | 4.3.4 | 5.1 |
| 分析模型 | 留存分析 | 4.3.4 | 5.1 |
| 分析模型 | 属性分析 | 4.5.1 | |
| 分析模型 | Session分析 | 5.1 | |
| 分析模型 | 渠道分析 | 5.1.0184 | |
| 分析模型 | 分布分析 | 5.2 | |
| 分析模型 | 自定义查询 | 5.0 | |
- 产品简介
- 快速上手
- Step 1 安装部署
- Step 2 激活系统创建项目
- Step 3 开启您的分析旅程
- 1. 集成 SDK
- 2. 可视化埋点
- 3. 创建分析模型
- 附:埋点方案设计
- 附:数据分析思路
- 产品更新日志
- V5.5 新增LTV分析功能等
- V5.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
- V5.2 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
- V5.1.0317 体验优化& Bug修复
- V5.1 升级可视化埋点、增强权限控制……
- Part I 产品功能说明
- 名词解释
- 指标说明
- 看板
- 5.3.3 看板 UI 重构
- 分析
- 事件分析
- 渠道分析
- 渠道相关名词解释
- 来源识别规则
- 搜索引擎
- 社交媒体
- 小程序场景值
- Session 分析
- Session 规则
- 实时分析
- 留存分析
- 转化漏斗
- 智能路径
- 归因分析
- 热图分析
- Web/H5 热图
- APP 热图
- 分布分析
- 间隔分析
- 属性分析
- LTV 分析
- 多主体分析
- 自定义查询
- 用户
- 用户分群
- 用户探查
- 用户标签
- 标签体系应用概览
- 标签体系
- 标签生命周期管理
- 标签加工
- 如何自定义SQL创建标签
- 单用户档案
- 运营
- 广告跟踪
- 微信小程序渠道追踪
- 预置广告媒介和渠道
- App 推广监测(Beta版本)
- 电子邮件(即将下线)
- 短信(即将下线)
- 消息通知(即将下线)
- 项目管理
- 项目概览
- 项目角色管理
- 项目成员管理
- 数据接入管理
- 埋点方案
- 可视化埋点
- 集成SDK接入数据
- 数据验证
- 用户数据导入
- 微信小程序全埋点事件定义
- 元数据管理
- 元事件
- 虚拟事件
- 事件属性
- 用户属性
- Session 管理
- 页面组管理
- 维度表
- 服务集成配置
- 监控告警
- 智能监控
- 自定义监控
- 平台管理
- 企业概览
- 项目管理
- 成员管理
- 安全设置
- 企业设置
- 日志管理
- 帐号设置
- Part II 技术文档
- 技术接入准备工作
- 部署环境检测工具
- 数据模型
- 数据格式
- 预置事件和属性
- App预置事件/属性
- JS 预置事件/属性
- 如何准确识别用户
- 如何设计埋点方案
- 分平台上报数据 vs 跨平台打通
- SDK 指南
- Android SDK
- 快速集成
- 全埋点模块
- 消息推送模块
- Android Hybrid模式
- SDK Gradle集成方式
- 多渠道打包
- 易观小工具
- 合规相关
- iOS SDK
- 快速集成
- 全埋点介绍
- iOS Hybrid模式
- 消息推送模块
- JS SDK
- 快速集成
- JS SDK基础版
- JS SDK插件
- uni-app SDK
- 快速集成
- 打包原生APP
- 开启移动端全埋点
- uni-app SDK标准版
- 微信小程序 SDK
- 快速集成
- 微信小程序标准版
- 微信小程序插件版
- 微信小程序通用框架版
- 支付宝小程序 SDK
- 支付宝小程序标准版
- 支付宝小程序通用框架版
- 字节跳动小程序 SDK
- 字节跳动小程序标准版
- 字节跳动小程序通用框架版
- 百度小程序 SDK
- 百度小程序标准版
- 百度小程序通用框架版
- 钉钉小程序 SDK
- 钉钉小程序标准版
- 钉钉小程序通用框架版
- QQ小程序 SDK
- QQ小程序标准版
- QQ小程序通用框架版
- 快应用 SDK
- 华为WeCode小程序
- WeCode SDK 标准版
- WeCode SDK插件
- PhoneGap SDK
- mPaaS SDK
- ReactNative SDK
- Flutter SDK
- Java SDK
- Python SDK
- PHP SDK
- C++ SDK
- C# SDK
- Node JS SDK
- Lua SDK
- Golang SDK
- SDK FAQ
- identify与alias的区别
- 爬虫数据如何识别?
- 页面停留如何获取时间?
- 如果获取SDK及更新日志
- 代码埋点和无埋点有什么区别
- Web页面中发现丢失某一个事件
- 自研 SDK 注意事项
- 页面时长统计功能
- 飞书小程序 SDK
- 飞书小程序标准版
- 飞书小程序通用框架版
- Unreal Engine SDK
- 数据验证
- 客户端埋点验证
- Debug 数据验证
- 数据入库验证
- 数据导入
- 接口导入
- JAVA工具包
- 标准json文件导入
- csv格式导入
- 数据导入FAQ
- 数据导出
- JAVA工具包
- 事件数据导出
- 用户数据导出
- 直接从Kafka中消费数据
- 使用程序访问数据库
- 脚本工具
- API
- 分析API
- 事件分析
- 留存分析
- 自定义查询
- 转化漏斗
- 属性分析
- Session分析
- 渠道分析
- 分布分析
- 用户API
- 分群查询
- 用户档案
- 分群管理
- 管理API
- 权限管理
- 元数据管理
- 埋点方案管理
- 维度表管理
- 运营API
- 广告跟踪
- APP推广监测
- 平台管理API
- 项目管理
- 成员管理
- 第三方登录
- OAuth2.0登录
- LDAP登录
- GDPR 合规
- Part III 常见问题
- License 许可
- 产品试用及采购
- 参与贡献