...
客户的数据是使用redis数据库存储的,需要使用smartbi做数据分析,但是目前的smartbi是不支持redis数据取数的。
解决方案:
Redis部署及启动
参考资料
http://www.runoob.com/redis/redis-java.html
解压redis-64.3.0.503.zip
修改redis.windows.conf文件,设置登录密码
...
步骤1:
重新使用 cmd命令打开windows命令窗口
步骤2:
进入到redis的安装目录并执行命令登录resis
执行的命令:redis-cli.exe -h 127.0.0.1 -p 6379 -a manager
登录成功如下图:
登录成功后,请不要关闭这两个命令窗口,否则redis服务被关闭后,会连接不上。
扩展包配置文件修改
实例扩展包下载:jiujiangyinhang.ext
用好压打开扩展包,然后找到对应的文件config.properties,然后修改覆盖回去即可:
锚 | ||||
---|---|---|---|---|
|
...
如:关闭数据库连接,文件流等,一般没有的话,不管它。
单列的演示的例子
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
importPackage(Packages.java.sql); |
...
importPackage(Packages.smartbi.jjyh.module); |
...
/** |
...
服务器先调用init初始化,获取参数与输出字段 |
...
返回参数与输出字段的声明对象 |
...
*/ |
...
function init() { |
...
return { |
...
//参数列表 |
...
params: [{ |
...
id: 'ParamId', //参数ID |
...
name: 'ParamName', //参数名称 |
...
alias: 'ParamAlias', //参数别名 |
...
desc: 'ParamDesc', //参数描述 |
...
nullable: true, //参数是否允许是空 |
...
valueType: 'STRING' //参数数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME |
...
}], |
...
//输出字段 |
...
fields: [{ |
...
id: 'FieldId', //字段ID |
...
name: 'FieldName', //字段名称 |
...
alias: 'FieldAlias', //字段别名 |
...
desc: 'FieldDesc', //字段描述 |
...
valueType: 'STRING' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME |
...
}] |
...
}; |
...
} |
...
/** |
...
获取数据,以二维数组返回。每个元素包含value属性 |
...
也可以返回smartbi.freequery.querydata.GridData对象 |
...
@param paramValues 参数值 |
...
@param from 开始行 |
...
@param count 返回的行数 |
...
@result 返回数据 |
...
*/ |
...
function getGridData(paramValues, from, count) { |
...
//通过 paramValues.get("参数ID") 获取参数值对象(包含value与displayValue属性) |
...
var val = paramValues.get("ParamId"); |
...
//下面根据参数值取数 |
...
//根据key取出它的值,并且key的value是一个集合 |
...
var key = "categories"; //每个字段对应一个key |
...
var data = RedisService.getSet(key); |
...
var dataAry = []; |
...
dataAry = data.split("#"); |
...
var dataLen = dataAry.length; |
...
var ret = []; |
...
for (var i = 1; i < dataLen; i++) { |
...
var tmp = []; |
...
var json = { |
...
value: dataAry[i] |
...
}; |
...
if (val && val.value == dataAry[i]) { |
...
tmp.push(json); |
...
ret.push(tmp); |
...
} } if(ret.length == 0){ |
...
ret = [[{}]]; |
...
} |
...
return ret; |
...
} |
...
/** |
...
获取总行数,只在usePaging=true时会被调用,若无法获取总行数则不要定义这个方法 |
...
*/ |
...
/* |
...
function getRowCount() { |
...
return 10000; |
...
} |
...
*/ |
...
/** |
...
关闭查询对象 |
...
*/ |
...
function close() { |
...
} |
多列的演示例子
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
importPackage(Packages.java.sql); |
...
importPackage(Packages.smartbi.jjyh.module); |
...
/** |
...
服务器先调用init初始化,获取参数与输出字段 |
...
返回参数与输出字段的声明对象 |
...
*/ |
...
function init() { |
...
return { |
...
//参数列表 |
...
params: [{ |
...
id: 'ParamId', //参数ID |
...
name: 'ParamName', //参数名称 |
...
alias: 'ParamAlias', //参数别名 |
...
desc: 'ParamDesc', //参数描述 |
...
nullable: true, //参数是否允许是空 |
...
valueType: 'STRING' //参数数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME |
...
}], |
...
//输出字段 |
...
fields: [{ |
...
id: 'FieldId', //字段ID |
...
name: 'FieldName', //字段名称 |
...
alias: 'FieldAlias', //字段别名 |
...
desc: 'FieldDesc', //字段描述 |
...
valueType: 'STRING' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME |
...
}, { |
...
id: 'FieldId1', //字段ID |
...
name: 'FieldName1', //字段名称 |
...
alias: 'FieldAlias1', //字段别名 |
...
desc: 'FieldDesc1', //字段描述 |
...
valueType: 'STRING' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME |
...
}] |
...
}; |
...
} |
...
/** |
...
获取数据,以二维数组返回。每个元素包含value属性 |
...
也可以返回smartbi.freequery.querydata.GridData对象 |
...
@param paramValues 参数值 |
...
@param from 开始行 |
...
@param count 返回的行数 |
...
@result 返回数据 |
...
*/ |
...
function getGridData(paramValues, from, count) { |
...
//通过 paramValues.get("参数ID") 获取参数值对象(包含value与displayValue属性) |
...
var val = paramValues.get("ParamId"); |
...
//下面根据参数值取数 |
...
//根据key取出它的值,并且key的value是一个集合 |
...
var key = "categories"; //每个字段对应一个key |
...
var key1 = "categories"; //每个字段对应一个key |
...
var data = RedisService.getSet(key); |
...
var data1 = RedisService.getSet(key1); |
...
var dataAry = []; |
...
var dataAry1 = []; |
...
dataAry = data.split("#"); |
...
dataAry1 = data1.split("#"); |
...
var dataLen = dataAry.length; |
...
var dataLen1 = dataAry1.length; |
...
var len = 0; |
...
if(dataLen > dataLen1){//取长度最短的作为数据的条数,否则越界 |
...
len = dataLen1; |
...
}else{ |
...
len = dataLen; |
...
} var ret = []; |
...
for (var i = 1; i < len; i++) { |
...
var tmp = []; |
...
var json = { |
...
value: dataAry[i] |
...
}; |
...
var json1 = { |
...
value: dataAry1[i] |
...
}; |
...
if(val && val.value == dataAry[i]){//数据筛选 |
...
tmp.push(json); |
...
tmp.push(json1); |
...
ret.push(tmp); |
...
} } if(ret.length < 1) { |
...
return [ |
...
[{}, {}] |
...
] } return ret; } /** |
...
获取总行数,只在usePaging=true时会被调用,若无法获取总行数则不要定义这个方法 |
...
*/ |
...
/* |
...
function getRowCount() { |
...
return 10000; |
...
} |
...
*/ |
...
/** |
...
关闭查询对象 |
...
*/ |
...
function close() { } |
}
取数方法介绍
取redis中List
RedisService.getList(key)
...