1、概述
接口查询主要场景是客户不想或者没有办法连接到数据源,需要通过接口的方式获取数;更多的是作为数据集的存在,并且返回的数据是基本都是一个大宽表。
Smartbi 数据模型支持添加 2 种接口查询:Java查询、脚本查询.
2 Java查询
Java查询是指由用户通过二次开发,自定义JavaQueryData接口实现类,以实现自定义数据结构;
Java查询允许没有一个物理数据库存储其字段和数据,比如可以通过类将任意一个含有数据的文件或报表通过解析后,运用到Smartbi中,当然它也允许对数据库中的数据查询出来通过Java代码进行二次计算加工后返回给Smartbi。
支持以下几种方式:
- 读取客户放在服务器上文件:CSV查询、Txt查询
- WebService作为数据源:通过http方式获取数据
自定义类:一般都是需要写java代码从接口获取不开放数据库取数的场景.
2.1 示例1
下面通过一个简单的示例要演示通过"CSV查询"获取文件数据。
刘老师想基于把学生的每个月的考试分数进行一个趋势分析,所以把线下数据上传到服务器上进行分析。
下载示例数据:StudentScore.xls
具体步骤如下:
1)需要先把CSV格式的文件上传到服务器上,如下图所示:
文件存放路径不限,存放的文件夹可以是自己新建的,也可以是已有的文件夹中。
存放好之后再去模型中建【Java查询】,选择”CSV查询“,操作如下图:
- 文件存放路径:绝对路径;填写时要注意,如果不是绝对路径,会查找不到文件;
- 编码:一般GBK或UTF-8,也可以根据需求填写其他的编码比如Unicode、ASCII;
- 上传的文件如果没有列头,则默认第一行数据为列头;
- “TXT查询”与”CSV查询“操作逻辑是一致的,不再另写示例说明;其中“TXT查询”需要写“分割符”,分隔符需要与文件保持一致,才能正常取数。
- 获取到数据,想回到数据模型,建议先点击【保存】之后再点击【回到模型】;可以在模型修改数据类型、修改别名、设置与其他查询的关系或者构建数据模型
Java查询只支持抽取模式。如果模型原先是直连模式,加入了Java查询会强制变成抽取模式!
2.2 示例2
一般WebService 查询的使用场景是:调用外部第三方系统的WSDL接口获取外部系统数据;
在使用 WebService 作为数据源时,在模型中如何获取WebService的数据呢,这样要怎么实现呢?下面以一个例子进行说明.
为了方便举例,本文用产品内置的WSDL地址测试,以获取用户接口(本质是查询smartbi知识库数据)为例。
其中接口地址可从系统监控-wsdl地址中获取,具体可参考wiki文档:系统监控-wsdl地址
- 在"WSDL地址“输入: http://xx.xx.xx.xx:端口号/smartbi/vision/services/UserManagerService?wsdl ,
- 方法名称输入:getAllUsers(在WSDL地址内容一定能找到对应的方法)
- 点击执行 按钮,如果有“方法名称”有参数,则需要填写参数;没有,则直接显示数据
- 回到数据模型,建议先点击【保存】之后再点击【回到模型】;可以在模型修改数据类型、修改别名、设置与其他查询的关系或者构建数据模型
2.3 示例3
对于技术能力比较强的客户,Smartbi提供了灵活的接口,方便用户自定义Java文件,实现某些业务需求。
Java查询自定义类示例,可参考:Java查询介绍