方舟智能分析
产品功能SDK指南API
  • 产品简介
  • 快速上手
    • Step 1 安装部署
    • Step 2 激活系统创建项目
    • Step 3 开启您的分析旅程
      • 1. 集成 SDK
      • 2. 可视化埋点
      • 3. 创建分析模型
    • 附:埋点方案设计
    • 附:数据分析思路
  • 产品更新日志
    • V5.3.3 UI 升级、分布分析重构、维度表动态更新、细节优化等
    • V5.2.0 新增归因分析、消息中心、重构埋点方案、优化看数据体验……
    • V5.1.0317 体验优化& Bug修复
    • V5.1.0 升级可视化埋点、增强权限控制……
  • 我要反馈
  • 🐱Part I 产品功能说明
    • 名词解释
    • 指标说明
    • 看板
    • 分析
      • 事件分析
      • 渠道分析
        • 渠道相关名词解释
        • 来源识别规则
        • 搜索引擎
        • 社交媒体
        • 小程序场景值
        • Session 规则
      • Session 分析
      • 实时分析
      • 留存分析
      • 转化漏斗
      • 智能路径
      • 归因分析(Beta)
      • 热图分析
        • Web/H5 热图
        • APP 热图
      • 分布分析
      • 间隔分析
      • 属性分析
      • 自定义查询
    • 用户
      • 用户探查
      • 用户分群
      • 用户标签
        • 标签体系
        • 标签加工
          • 如何自定义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插件
      • 微信小程序 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 注意事项
        • 页面时长统计功能
    • 数据验证
      • 客户端埋点验证
      • Debug 数据验证
      • 数据入库验证
    • 数据导入
      • 接口导入
      • JAVA工具包
        • 标准json文件导入
        • csv格式导入
      • 数据导入FAQ
    • 数据导出
      • JAVA工具包
        • 事件数据导出
        • 用户数据导出
      • 直接从Kafka中消费数据
      • 使用程序访问数据库
    • 脚本工具
    • API
      • 分析API
        • 事件分析
        • 留存分析
        • 转化漏斗
        • 属性分析
        • Session分析
        • 渠道分析
        • 分布分析
        • 自定义查询
      • 用户API
        • 分群查询
        • 用户档案
        • 分群管理
      • 管理API
        • 权限管理
        • 元数据管理
        • 埋点方案管理
        • 维度表管理
      • 运营API
        • 广告跟踪
      • 平台管理API
        • 项目管理
        • 成员管理
    • 第三方登录
      • OAuth2.0登录
      • LDAP登录
    • GDPR 合规
  • �� Part III 常见问题
    • License 许可
    • 产品试用及采购
    • 参与贡献
由 GitBook 提供支持
在本页
  • 1.自定义SQL查询
  • 1.1 接口地址
  • 1.2 请求参数
  • 1.3 返回结果示例
  • 1.4 接口调用示例
  • 2. 自定义SQL导出
  • 2.1 接口地址
  • 2.2 请求参数
  • 2.3 返回结果示例
  • 2.4 接口调用示例
  • 2.5 Java HttpClient 接口调用示例

这有帮助吗?

  1. Part II 技术文档
  2. API
  3. 分析API

自定义查询

方舟5.0版本中新增API

上一页分布分析下一页用户API

最后更新于5年前

这有帮助吗?

1.自定义SQL查询

适合查询结果为小数据量的场景(千级数据量),例如分析结果统计,查询数据状态;如需导出更大规模数据,见【章节2.】

1.1 接口地址

【POST】 /uba/api/sql/query

1.2 请求参数

1.2.1 Body参数说明:

body参数示例:

{
    "sql": "SELECT xwhat,xwhen,xwho FROM event_vd as event  where event.ds=20200214 and event.\"$startup_time\" is not null LIMIT 10",
    "format": "json"
}

body参数说明:

  • sql: 查询的 SQL,例如 SELECT xwhat,xwhen,xwho FROM event_vd LIMIT 10。

  • format: 文本输出可选项包括

    • csv:默认格式,sql查询结果输出为csv格式文件。默认文件编码为UTF-8,若导出文件要用excel打开,增加url参数?csvUtfEncoding=0

    • json:sql查询结果输出为一个完整JSON 的json文件

1.2.2 特殊说明:

  1. 可供查询的表有:事件表event_vd,属性表profile_vd。

  2. 事件或属性字段中如果包含$符号的则需要对该字段加上双引号,双引号也需要转义,例如\"$startup_time\"。

  3. 表名可以不附带数据库名,API程序会根据认证参数,自动为表名加上数据库名,如果自带不符合认证校验的数据库名,接口将返回参数异常,提示包含非当前项目的数据库表

  4. 不支持数据操纵语言DML、数据定义语言DDL以及数据控制语言DCL,只支持数据查询语言DQL(基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块)

  5. API程序默认开启 limit 检测,查询记录数不能超过系统配置的参数项arkweb.open_api.sqlquery.limit,该参数可以通过ambari管理平台进行变更设置,设置为-1表示不限制查询记录条数

1.3 返回结果示例

format为 csv类型

xwhen,xwhat,xwho,
1581648715861,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,
1581648718542,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,
1581648726163,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,

format为 ‌json类型

[
    {
        "xwhen": 1581648715861,
        "xwhat": "$pageview",
        "xwho": "JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b"
    },
    {
        "xwhen": 1581648718542,
        "xwhat": "$pageview",
        "xwho": "JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b"
    },
    //....
]

1.4 接口调用示例

curl -H "Content-Type:application/json" -H "token:4113c9cad1c301113783f433e254888c" -H "appKey:31abd9593e9983ec" -X POST --data '{
    "sql": "SELECT xwho,xwhat,xwhen,\"$browser\" FROM event_vd as event  where event.ds=20200214 and event.\"$startup_time\" is not null LIMIT 2",
    "format": "csv"
}' http://127.0.0.1:4005/uba/api/sql/query

2. 自定义SQL导出

适合sql查询结果为较大数据量的场景(百万级数据量),例如导出事件数据,导出用户数据

2.1 接口地址

【POST】 /uba/api/sql/export

2.2 请求参数

2.2.1 Body参数说明:

body参数示例:

{
    "sql": "SELECT xwhat,xwhen,xwho FROM event_vd as event  where event.ds=20200214 and event.\"$startup_time\" is not null LIMIT 10",
    "format": "json"
}

body参数说明:

  • sql: 查询的 SQL,例如 SELECT xwhat,xwhen,xwho FROM event_vd LIMIT 10。

  • format: 文本输出可选项包括

    • csv:默认格式,sql查询结果输出为csv格式文件。默认文件编码为UTF-8,若导出文件要用excel打开,增加url参数?csvUtfEncoding=0

    • json:sql查询结果输出为每行一个JSON 的json文件

2.2.2 特殊说明:

  1. 可供查询的表有:事件表event_vd,属性表profile_vd。

  2. 事件或属性字段中如果包含$符号的则需要对该字段加上双引号,双引号也需要转义,例如\"$startup_time\"。

  3. 表名可以不附带数据库名,API程序会根据认证参数,自动为表名加上数据库名,如果自带不符合认证校验的数据库名,接口将返回参数异常,提示包含非当前项目的数据库表

  4. 不支持数据操纵语言DML、数据定义语言DDL以及数据控制语言DCL,只支持数据查询语言DQL(基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块)

  5. 该接口不对sql 进行limit 限制,但受限于查询时长,默认在10分钟超时时间内,经过测试该API能够导出200万左右条记录(仅供参考,不同机器配置和查询列数差异会导致可导出记录数存在一定的偏差)

2.3 返回结果示例

format为 csv类型的输出举例:

xwhen,xwhat,xwho,
1581648715861,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,
1581648718542,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,
1581648726163,$pageview,JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b,

format为 json类型输出举例:

{"xwhen":1581648726045,"$browser":"Chrome","xwho":"JS4a8bf500c4f4aadfdf3a43586d9008fd4a8b","xwhat":"login"}
{"xwhen":1581650573221,"$browser":"Chrome","xwho":"a5qvKY6K1000047yuanyw@analysys.com.cn","xwhat":"login"}
{"xwhen":1581678914730,"$browser":"Firefox","xwho":"JS2db3b546aac1fd04f54d29a574a186042db3","xwhat":"login"}
{"xwhen":1581678914730,"$browser":"Firefox","xwho":"JS2db3b546aac1fd04f54d29a574a186042db3","xwhat":"login"}
{"xwhen":1581651522435,"$browser":"Chrome","xwho":"JS8ae9e9bf73b5b0dc3e42c8d31dd8078a8ae9","xwhat":"login"}
{"xwhen":1581669615438,"$browser":"Firefox","xwho":"JS4d372a84aa14b9279c0c35db28c3cb544d37","xwhat":"login"}

输出结果备注:

  1. /sql/export 接口输出,因为可以支撑大数据量,为了方便客户端可以进行批次处理,json类型的输出并非是一个完整的json数组,而是一行一条json(无[],按\n\分割)

  2. /sql/export接口输出,因为可以支撑大数据量,接口response为 流式输出。如果是通过程序来调用,那么建议:

    • 避免一次性加载response到内存中,改为流式接收 response body

    • Http Connection 需要增加SocketTimeout时长,如果下载过程出现504 网关超时,则需要修改nginx 超时配置

2.4 接口调用示例

导出日期为20200214的所有事件数据,输出写入到output.json 文件中

curl -o output.json -H "Content-Type:application/json" -H "token:3edbaf427ecdda80beef322ad3c333a4" -H "appKey:31abd9593e9983ec" -X POST --data '{
    "sql": "SELECT xwho,xwhat,xwhen,\"$browser\" FROM event_vd as event  where event.ds=20200214",
    "format": "json"
}' http://127.0.0.1:4005/uba/api/sql/export

2.5 Java HttpClient 接口调用示例

   public void testSqlExport(){
        // 依赖 org.apache.httpcomponents 的 httpclient 包
				static String UTF = "UTF-8";        
				CloseableHttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost("http://127.0.0.1:4005/uba/api/sql/export");
        //Header 参数
        httpPost.setHeader("Content-Type", "application/json");
        httpPost.setHeader("appKey", YOUR_APP_KEY);
        httpPost.setHeader("token", YOUR_APP_TOKEN);
        // post body params
        Map<String,Object> params = new HashMap<>();
        params.put("format", "json");
        params.put("sql", "select *  from profile_vd where arkfq_5=1");
        ObjectMapper objectMapper = new ObjectMapper();
        StringEntity stringEntity = new StringEntity(objectMapper.writeValueAsString(params), UTF);
        stringEntity.setContentEncoding(UTF);
        httpPost.setEntity(stringEntity);

        //set timeout 
        RequestConfig reqConfig = RequestConfig.custom()
                .setSocketTimeout(10*60*1000).setConnectTimeout(60*1000).build();
        httpPost.setConfig(reqConfig);
        //假设存到 output.txt(也可以是其他处理方式)
        File dir = new File("/tmp");
        File file = new File(dir, "output.txt");
        try (CloseableHttpResponse response1 = client.execute(httpPost);
             FileOutputStream fos = new FileOutputStream(file)) {
            final HttpEntity entity = response1.getEntity();
            if (entity != null) {
                try (InputStream inputStream = entity.getContent()) {
                    // TODO: do something useful with the stream
                    try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
                        String line;
                        while ((line = br.readLine()) != null) {
                            // TODO: process the line.
                            // 以文件存储为例,按行读取,按行写入
                            fos.write((line+"\n").getBytes(UTF));\
                        }
                    }
                }
                EntityUtils.consume(entity);
            }

        }
    }

事件字段、事件属性字段、用户属性字段信息可以参见 API章节中的。

认证参数:接口必传token和appKey两个参数,详情见 。

事件字段、事件属性字段、用户属性字段信息可以参见 API章节中的 。

认证参数:接口必传token和appKey两个参数,详情见 。

🐵
元数据管理
元数据管理
自定义SQL导出
项目接口认证
项目接口认证