You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tanghe-report/doc/docs/guide/dataset.md

124 lines
3.5 KiB
Markdown

2 years ago
## 介绍
2 years ago
根据选中的数据源+查询 sql 或请求体完成数据的查询。<br>
3 years ago
![img5](../picture/dateset/img_5.png) <br>
[数据源数据集用法总结](https://my.oschina.net/u/4517014/blog/5270828) <br>
3 years ago
## SQL数据集
2 years ago
尽量不要使用 “select *”,以及展示很大的数据量,图表不一定能展示、页面可能会卡死。 <br>
3 years ago
### Mysql数据集
在数据源处添加了mysql的数据源后即可使用。<br>
![img_1.png](../picture/dateset/img_1.png) <br>
### ES数据集
2 years ago
**注**es是通过调用xpack-sql注意写法数据源亦有说明。 <br>
![es.png](../picture/dateset/img.png) <br>
### Kudu数据集
![kudu.png](../picture/dateset/img_2.png) <br>
2 years ago
## HTTP数据集
2 years ago
即原有Http数据源的功能请注意Http接口返回类型必须是Json、不能是texttext无法解析。 <br>
支持请求路径和请求头中存在动态数据,采用 ${} 方式进行动态替换,具体看下面查询参数的相关说明。 <br>
2 years ago
![http.png](../picture/dateset/img_7.png) <br>
## 功能栏
**可以看在线环境,有示例参考** <br>
### 查询参数
2 years ago
[数据源数据集用法总结](https://my.oschina.net/u/4517014/blog/5270828) <br>
2 years ago
注意参数名要和sql(请求体)中变量名保持一致sql(请求体)中的变量用 ${} 表示。 <br>
![img3](../picture/dateset/img_3.png) <br>
2 years ago
如图所示,查询 sql 中定义了两个变量startTime 和 endTime。那需要我们在查询参数中添加对应的两个参数。 参数名保持和查询 sql
中 ${param} 保持一致。<br>
数据类型可以不填,暂时未用到。
2 years ago
#### 数据类型
暂时无用写了也不生效目前统一都是string处理。 <br>
#### 高级规则
2 years ago
自定义JS这里的JS是java的scriptengine执行的支持ES5的写法。
2 years ago
```js
2 years ago
//返回yyyyy-MM-dd类型的当前时间
function verification(data){
//自定义脚本内容
//获取当前时间
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
var nowDate = year + "-" + month + "-" + day;
return nowDate;
}
```
### 数据转换
2 years ago
数据转换是在执行完 sql 之后进行的数据清洗操作。
#### js脚本
3 years ago
![img4](../picture/dateset/img_4.png) <br>
2 years ago
入参是data返回值也必须是data中间是JS的处理过程注意入参返回都是``List<JSONObject>``
2 years ago
```js
2 years ago
// 根据sql查询出的结果进行数据清洗
function dataTransform(data){
//自定义脚本内容
//1.遍历测试预览中的java.util.ArrayList<java.lang.Object>
for(j = 0, len = data.length; j < len; j++){
//获取一行数据
var row = data[j]
//比如对brand字段进行拆分,例如A-100B-50
var brand = row['brand']
var split = brand.split('-')
//新增两个字段
var model = split[0]
var series = split[1]
//对原始对象赋值
data[j]['model'] = model
data[j]['series'] = series
}
return data;
}
```
2 years ago
#### java脚本
2 years ago
通过Groovy来进行实现的[Groovy用法参考](https://my.oschina.net/u/4517014/blog/5526324) <br>
如下图所示: <br>
建议在 idea 写好复制整个类到此处,位置 report-core/src/test/java/com/DemoGroovyHandler.java <br>
出入参皆为 ``List<JSONObject>`` data
![img8](../picture/dateset/img_8.png) <br>
2 years ago
#### 字典项
3 years ago
2 years ago
针对查询结果某一项 key 值,做一个翻译。<br>
2 years ago
![img6.png](../picture/dateset/img_6.png) <br>
3 years ago
2 years ago
### 数据预览
2 years ago
针对此次数据集,进行数据预览,尽量不要使用 select * from table <br>