从Web Service接入数据
1. 从Web Service接入数据概述
从Web Service接入数据,是指观远数据支持将API数据通过Web Service数据连接器进行接入,可自定义灵活配置API返回数据的解析规则和选取所需字段,最后并利用连接创建Web Service数据集。
2. 从Web Service数据集接入数据操作步骤
首先点击导航栏的“数据中心”,进入数据管理中心。随后点击右上角的“新建数据集”按钮,选择Web Service。
2.1 创建数据连接
首先填写Web Service的URL地址、请求方式、请求头、认证、请求参数、请求体、前置操作(可选)、后置操作(可选)。点击“发送请求”可测试连接并查看响应结果,结果包括状态码和响应消息体。
请求方式(支持GET/POST,默认为GET):
-
GET:一般用于请求资源;
-
POST:一般用于传输资源。
请求头:由key/value 组成,告诉服务端需要的资源类型。具体参数设置可以见以下文档。
https://www.cnblogs.com/yunlongaimeng/p/10904558.html
认证(当前只支持API密钥、Token令牌2种认证方式):
-
API密钥:API密钥是赋予某种形式的秘密令牌的名称,与Web服务(或类似的)请求一起提交以识别请求的来源;
-
Token令牌:Token是指在指定有效时间内可以代表用户角色,具有请求接口的权限。
请求参数:需要获取的字段和条件,且支持全局参数。详见《全局参数》
请求体(只限JSON格式):封装POST请求消息的请求参数的,GET没有请求体。
前置操作:
每次调用主API前,都将预先执行“前置操作”,同时支持将前置请求部分结果存储为动态参数,引用至主API的请求头/请求参数/请求体中,实现对参数的动态获取。
1.选择[前置操作],单击[新增前置请求]:
2.填写需前置执行的请求url各项必要信息,支持根据响应新增动态参数:
-
动态参数:通过结果字段路径对响应内容进行解析,得到动态参数值,通常用于token信息获取等场景,已创建的动态参数可在后续请求参数中通过${参数名称}的方式进行引用。
*非必填,可以仅执行前置请求而不传递任何参数
-
结果字段路径:使用JSONPATH对响应内容进行解析,获取目标参数值
通过上述操作,将鉴权接口作为前置请求,其返回的token信息将作为动态参数传递至待定义的Web Service数据集配置中。
3.单击确定,保存前置请求。
4.根据接口文档要求,在Web Service数据集请求头/请求体/请求参数中使用动态参数,实现动态传参的能力。
使用限制:当前未实现动态参数值的缓存机制,因而每次更新WebService数据集时,都将执行前置请求。因而需要评估业务方的鉴权API调用次数限制,如存在次数限制,频繁调用鉴权API或触发其限制。
后置操作:
通过自定义JavaScript脚本,可对WebService请求的响应进行拦截,并进行数据处理、转换、筛选等,将其更改为符合平台JSONPath解析方法的标准结构,再进行数据解析配置。
使用样例:
定义convertJson方法并返回修改后的response
function convertJson(response) {
//请在方法内定义response的修改逻辑
return response;//向BI平台返回修改后的response
}
下面以一个基础的Response为例,去展示可支持的基础语法:
//原response
{
"a":1
}
场景一:添加字段
//后置操作脚本
function convertJson(response) {
response["b"]=2;
return response;
}
//修改后的Response
{
"a": 1,
"b": 2
}
场景二:修改字段
//后置操作脚本
function convertJson(response) {
response["a"]=2;
return response;
}
//修改后的response
{
"a":2
}
场景三:删除字段
//后置操作脚本
function convertJson(response) {
delete response["a"];
return response;
}
//修改后的Response
{
}
场景四:把结构和值分开的返回内容处理成键值对的格式
//后置操作脚本
function convertJson(response) {
response = response["data"];
var i_data = response["results"][0]["series"][0];
var o_data = [];
for(var i=0;i<i_data["values"].length;i++){
var temp = {}
for(var j=0;j<i_data["columns"].length;j++){
temp[i_data["columns"][j]] = i_data["values"][i][j] == null ? "null" : i_data["values"][i][j];
}
o_data.push(temp);
}
return o_data;
}
2.2 配置数据解析
测试连接成功后,可查看API的返回结构。通过使用标准的JSONPath解析JSON的规则,可输入结果字段路径(结果字段路径支持JSON对象和数组),系统将自动解析结果字段路径的1级层级下所有对象的键值对(key/value)并自动展示一个勾选列表。如果需要进一步解析其中的嵌套结构,可参考《用ETL解析JSON》。
如果需要额外添加结果字段路径下嵌套对象中的某一键值对,则可通过新增字段来添加。
最后勾选所需字段,修改字段名称和类型,并可预览30行数据。
2.3 数据连接及更新设置
观远数据支持两种数据连接方式,分别为:
-
直连:通过Restful API进行准实时的接口数据获取,并通过BI进行可视化展示;同时可以通过全局参数等实现接口参数化查询。此时系统不会对抽取的数据进行持久化管理,也不进行增加更新,数据具有实时性。
-
Guan-Index:通过Restful API进行历史数据全量抽取,并配置好增量策略,将获取的数据在BI平台内沉淀为Guan-Index数据集,以便进行后续的数据加工处理。
ps:接口请求中使用全局参数后,仅支持“直连”,不支持“Guan-Index”。
当连接方式为“直连”时,可为Web Service数据集设置一个合理的缓存有效周期,并可选择是否支持卡片实时数据。
如果开通了“24h定时更新任务密度图功能”,功能开启后,缓存有效周期选择每天/每周/每月,则会展示定时更新任务密度图(如需使用该功能,请联系观远人员协助开启)。
当连接方式为“Guan-Index”时,可为Web Service数据集设置一个合理的更新周期,以及是否需要设置去重主键进行增量更新。
2.4 确认数据表信息
最后为数据集指定一个方便辨识的名字,以及指定保存位置。点击“确认新建”后,数据集创建成功,在对应的文件夹目录下能找到对应数据集。
2.5 数据集模型结构编辑
创建好Web Service数据集后,点击进入数据集详情页,可看到数据集的概览、相关联的卡片以及数据安全等信息。在“模型结构”页面,点击右上角的编辑,可修改编辑数据集模型结构,可修改的内容包括:
-
请求方式
-
请求地址
-
请求头/认证/请求参数/请求体
-
结果字段路径
注意:对于“抽取数据”类型(创建数据集时,选择“Guan-Index”连接方式)的Web Service数据集,不支持使用参数/用户基础属性 作为参数值。
2.6 数据集更新设置
在数据集详情页,点击“数据更新”,可以修改增量更新的相关配置;同时可以手动触发数据集的更新,包括覆盖旧数据和追加新数据2种方式。此外请求参数和请求体也支持自定义修改,也支持使用动态时间宏。(关于时间宏与参数的更多内容,可查看《动态时间宏》、《全局参数》)。
注意:增量更新仅是抽取模式(创建数据集时,选择“Guan-Index”连接方式)下的数据集可进行配置。
报错详见 数据量超出允许阈值
2.7 请求参数:“用户基础属性”参数说明
用户可以在创建数据集时添加“用户基础属性”作为参数,同时也可以在数据集的详情页内查看具体的参数信息。设置完成后,用户在查看仪表板时,能看到的数据会根据参数得到相应控制,最终让数据安全管控更加精细化;同时在用户看数时,实现千人千面的效果。
3.参数填写说明
Web Service支持在请求参数、请求体、前置请求中补充全局参数、时间宏参数、用户基础参数和token等,现对相关参数的填写说明进行介绍,方便用户快速入门。
3.1全局参数
填写入口:请求参数、请求体、前置请求。
3.2用户基础属性参数
填写入口:"请求体-添加用户基础属性"、"前置请求-新增前置参数-添加用户基础属性"
3.3时间宏参数
填写入口:"请求体-快速添加时间宏参数选择"、"前置请求-新增前置参数-快速添加时间宏参数选择"。
3.4前置请求动态参数
填写入口:"前置请求-新增前置参数-请求方式"
4. 名词解释
4.1 Web Service
Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的Web的应用程序。
4.2 API
API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
5. 常见问题
5.1 将API数据通过Web Service进行接入数据时,如何测试?
免费可供测试的API,可自行注册,注册后就有免费调用的资格,具体如下:
-
天气接口(Get 请求):https://www.kancloud.cn/ccjin/yingq/603579
-
24节气(Post请求):https://www.apishop.net/#/api/detail/?productID=88