开发者社区> 问答> 正文

分析接口配置


您可以通过整合分析服务为标签中心所管理的数据灵活搭建交互式数据分析应用,能够对筛选出来的特定的分析对象进行多维透视,并进一步钻取分析,并可以将分析筛选出来的对象导出到其他系统当中,如结合广告投放系统进行精准营销。整个界面的代码是完全开放的,可以无缝与您的现有系统进行整合。或者您可以在产品当中自助封装API接口,供您更便捷的搭建您的多个分析应用。
整合分析在功能上主要有两部分,第一部分提供了接口调试与自助封装的工具,能够帮助您快速封装支持动态传参动态计算的分析接口;第二部分则提供了界面化配置的交互式分析应用搭建工具,能够生成独立部署的代码包。

接口架构


从系统上来看是建立在实体关系模型之上的分析查询系统,Web应用开发者直接通过与API的交互,结合可视化引擎或是其他图表组件,即可以快速搭建自己的分析型数据产品。整合分析是架设在应用与DB之间的逻辑路由层。 上层应用通过TQL(Tag Query Language)或者Expr(Analysis Expression)向整合分析查询数据。整合分析解析TQL(或Expr)并基于不同的数据源构造查询。下图是整合分析的总体架构:


整合分析各模块的主要功能:
  • TQL/Expr解析器:解析TQL/Expr,生成抽象语法树。
  • 查询生成器:根据标签元信息和抽象语法树,生成查询。
  • 查询执行器:执行查询。
  • 数据预处理:对查询返回的结果数据,进一步处理(比如,计算百分比等)。
  • 结果生成器:将结果数据的列替换为对应的标签或者维度。

整合分析的查询执行流程如下:


调试界面


分析服务接口模块可以让您在此进行分析语句的调试,和自助化封装数据分析接口。整合分析的查询表达都是建构在实体关系模型之上的。

在界面的左侧您可以在分析接口的列表和数据标签元信息查询列表之前通过选项卡切换。
右侧上方您可以指定您当前需要分析的数据在哪个数据库上,以及以哪个实体作为主要的分析实体。如果您没有特殊的要求的话,您可以无需指定,分析服务会帮您做相应的路由判断。
下方的区域是您分析接口的中文名称(便于查找管理),查询Code(API URL中的名称),以及分析所使用的语法类型(您可以点击示例中相关的样例来快速学习我们所使用的分析表达语法)。
再下方的输入框就是分析语句的编辑器,再编辑器的右侧是分析语句中所包含变量的默认参数设置区域。在界面的下方您可以看到创建的分析接口URL来进行调用。

您可以点击执行来查看查询的结果/执行错误,以及语法每一步解析所耗费的时间,所解析的真实SQL语句,来帮助您调试分析接口。

分析语法表达


第一种是TQL(Tag Query Language),类似于SQL的语法。简单来说把每一个实体和关系当作一个视图表,例如
a. 查询某个用户的性别:
  1. [backcolor=transparent]//sql
  2. [backcolor=transparent]select[backcolor=transparent] user[backcolor=transparent].[backcolor=transparent]gender [backcolor=transparent]from[backcolor=transparent] user [backcolor=transparent]where[backcolor=transparent] user[backcolor=transparent].[backcolor=transparent]uid [backcolor=transparent]=[backcolor=transparent] xxx[backcolor=transparent];

b. 计算所有类目下的成交笔数:
  1. [backcolor=transparent]//sql
  2. [backcolor=transparent]select[backcolor=transparent] trade[backcolor=transparent].[backcolor=transparent]cateid[backcolor=transparent],[backcolor=transparent]count[backcolor=transparent](*)[backcolor=transparent] [backcolor=transparent]as[backcolor=transparent] cnt [backcolor=transparent]from[backcolor=transparent] trade [backcolor=transparent]group[backcolor=transparent] [backcolor=transparent]by[backcolor=transparent] trade[backcolor=transparent].[backcolor=transparent]cateid[backcolor=transparent];

第二种是表达式Expr,表达式的语法更贴合实体关系模型的语义逻辑。举例来说:
  1. [backcolor=transparent]Target[backcolor=transparent]:[backcolor=transparent] user[backcolor=transparent]([backcolor=transparent]sex[backcolor=transparent]=[backcolor=transparent]"male"[backcolor=transparent])->[backcolor=transparent]trade[backcolor=transparent]([backcolor=transparent]date[backcolor=transparent]>[backcolor=transparent]20160105[backcolor=transparent])->[backcolor=transparent]shop[backcolor=transparent]([backcolor=transparent]star[backcolor=transparent]>[backcolor=transparent]5[backcolor=transparent])
  2. [backcolor=transparent]Return[backcolor=transparent]:[backcolor=transparent] sum[backcolor=transparent]([backcolor=transparent]trade[backcolor=transparent].[backcolor=transparent]pay[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]as[backcolor=transparent] pay[backcolor=transparent],[backcolor=transparent] user[backcolor=transparent].[backcolor=transparent]sex [backcolor=transparent]as[backcolor=transparent] sex

其中Target部分,从语义上来看是声明分析的对象,如
  1. [backcolor=transparent]user[backcolor=transparent]([backcolor=transparent]sex[backcolor=transparent]=[backcolor=transparent]"male"[backcolor=transparent])->[backcolor=transparent]trade[backcolor=transparent]([backcolor=transparent]date[backcolor=transparent]>[backcolor=transparent]20160105[backcolor=transparent])->[backcolor=transparent]shop[backcolor=transparent]([backcolor=transparent]star[backcolor=transparent]>[backcolor=transparent]5[backcolor=transparent])

是在表达对在20160105日之后,成交过店铺星级大于5的男性。从数据的角度来说,则是把user, trade, shop join关联起来。
Return部分,即是声明返回的字段/属性,如
  1. [backcolor=transparent]sum[backcolor=transparent]([backcolor=transparent]trade[backcolor=transparent].[backcolor=transparent]pay[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]as[backcolor=transparent] pay[backcolor=transparent],[backcolor=transparent] user[backcolor=transparent].[backcolor=transparent]sex [backcolor=transparent]as[backcolor=transparent] sex

是在表达,按照性别作为维度汇总成交的总金额,其中非带有聚合函数部分的字段都会作为group by的字段列。这基本就组成了Expr最基本的表达元素。
详细的语法明细参照 API开发手册

展开
收起
反向一觉 2017-10-26 11:52:59 2030 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
“静态调用链路发现”应用场景分析及实践探索 立即下载
“静态调用链路发现“在APM中的应用场景分析及实践探索 立即下载
开源广进,用service cataloq构造k8s服务能力中心 立即下载