页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

2、去建数据模型,并在模型中建 Java查询 ,并选择 CSV查询 ,操作如下图:

  • 文件存放路径:输入刚存放的路径,一定要输入 :输入刚存放的路径"/home/StudentScore.csv"; 注意: 一定要输入 绝对路径 (即指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径),如果不是绝对路径,会查找不到文件。
  • 编码:一般填写GBK或UTF-8,也可以根据需求填写其他的编码比如Unicode、ASCII; 另外,上传的文件如果没有列头,则默认以第一行数据为列头。
  • 执行:填写配置信息 点击  执行 ,可以预览到文件的数据。

      

3、 如果想回到数据模型,建议先点击 保存,再点击 回到模型回到模型,在回到模型,在 关系视图可以选中查询/ 可以选中查询,右键菜单 可以进行更多操作,具体可查看:设置及修改查询

...

4、基于模型去建 交互式仪表盘, 最终效果如下,可以查看”学生每个月考试分数趋势分析“:

由于 txt查询CSV查询 都是获取文件数据,逻辑一致,不再单独说明 txt查询。

2.1.2 通过Java代码自定义类获取数据

对于技术能力比较强的客户,Smartbi提供了灵活的接口,方便用户自定义Java文件,实现某些业务需求。

为了方便举例,使用产品内置的类”获取某段日期范围的会话信息“为例进行查看”日期汇总信息“.为例进行查看”日期汇总信息“。

具体的操作如下:

1、创建数据模型并在添加 Java查询

  • 自定义类名:输入”smartbi.session.SessionQueryData类名;类名。
                        在输入自定义类名之前,需要先参考二次开发文档,编写IJavaQueryData接口实现类,实现自己的JAVABean逻辑,并将编译好的class文件添加到系统中。相关内容请参考:IJavaQueryData
  • 输入了 自定义类名 之后,点击右侧的 获取默认配置 ,在配置信息中会出现java类中定义的一些配置信息,对此进行配置,如果没有则无需进行配置。
  • 配置完毕之后,需要点击工具栏的 执行 按钮或 鼠标移开,会根据输入的自定义类和配置信息,输出参数和结果集。
  • 设置参数默认值:如果有参数,需要输入参数默认值,给参数”BeginTime“ 参数默认值:如果有参数,需要输入参数默认值;给参数”BeginTime“ 默认值设成 ”2023-05-01“, "EndTime"默认值设成”2023-06-01“,"Scale"默认值设成”1“。
  • 点击 执行  在 数据预览 区域 可以查看参数默认值的数据。

2、如果要回到数据模型,建议先点击 2、执行成功之后,如果要回到数据模型,建议先点击 保存,再回到模型; 再回到模型; 回到数据模型,可以在关系视图可以选中  查询  查询 右键菜单 支持进行更多操作,具体可查看:设置及修改查询

      如果 查询的参数需要在模型中进行映射,可以查看 参数管理; 如果在模型不映射查询参数,则以 如果在数据模型不映射,则以 查询 设置的 参数默认值 进行抽取

3、基于建好的数据模型去建 交互式仪表查看日期汇总数据:

...

另外,Java查询自定义类示例,可参考:Java查询介绍 

3 脚本查询

脚本查询是指通过编写代码脚本获取数据结果;

...

为了方面理解,以产品自带的数据源“northwind”中的【产品表】为目标资源,展示了如何通过编写JavaScript脚本获取指定节点ID的数据源表数据的例子来进行说明。

具体操作如下:

1)左侧 1、在左侧 “系统导航栏”中的“数据连接” ,选择  “数据连接” > “northwind” > “产品表” ,右键打开扩展菜单,点击“属性”,找到【产品表】资源的节点ID,并且记录下来 ,右键打开扩展菜单,点击“属性”,找到 “产品表” 资源的节点ID,并且记录下来

2)去模型中建【脚本查询】,把刚记录下来的资源节点复制下图的变量中,如下图, 并且写好获取数据的代码,执行成功之后可以看到已经获取【产品表】的数据

2、 建数据模型并增加 脚本查询 , 把刚记录下来的资源节点复制到下图的变量中, 再写获取数据的代码,写完之后,点击 执行  执行成功之后可以看到已经获取到产品表 的数据:

代码块
languagejs
title示例代码·读取指定节点资源的表数据
linenumberstrue
collapsetrue
importPackage(Packages.smartbi.freequery.client.datasource);

var datasourceService = DataSourceService.getInstance();
var tableId = "TAB.northwind.null.products";   //目标资源的节点ID
var table = datasourceService.getTable(tableId);
var sql = "select";
var data;

function init() {
    var fieldList = table.getFields();
    var fields = [];
    for (var i = 0; i < fieldList.size(); i++) {
        var field = fieldList.get(i);
        sql = sql + " " + field.getName();
        fields[i] = {
            id: field.getId(), //字段ID
            name: field.getName(), //字段名称
            alias: field.getAlias(), //字段别名
            desc: field.getDesc(), //字段描述
            valueType: parseValueType(field.getDataType().getSQLType()) //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
        }
        if (i < fieldList.size() - 1) {
            sql = sql + ",";
        }
    }
    sql = sql + " from " + table.getName();
    return {
		// //参数列表
		// params: [{
			// id: 'Param.northwind.null.products', //参数ID
			// name: 'ParamName', //参数名称
			// alias: 'ParamAlias', //参数别名
			// desc: 'ParamDesc', //参数描述
			// nullable: true, //参数是否允许是空
			// valueType: 'STRING' //参数数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
		// }],
		//输出字段
        fields: fields
    };
}

function getGridData(paramValues, from, count) {
    data = datasourceService.executeNoCacheable(table.getDataSource().getId(), sql);
    return data;
}


function getRowCount() {
    return data.getRowsCount();
}


/**
  关闭查询对象
*/
function close() {}

function parseValueType(type) {
    switch ("" + type) {
        case "LONG":
            return "LONG";
        case "BIGINT":
        case "INTEGER":
            return "INTEGER";
        case "BIGDECIMAL":
        case "DOUBLE":
            return "DOUBLE";
        case "TIME":
        case "DATE":
        case "DATETIME":
            return "DATETIME";
        default:
            return "STRING";
    }
}

单击 保存 按钮,系统提示保存成功后,当前脚本查询会以表的输出节点方式保存在数据模型的”表关系区“中,如下图:

Image Removed

可以在模型修改数据类型、修改别名设置与其他查询的关系或者构建数据模型3、执行成功后,如果想回到数据模型,建议先 保存 再回到数据模型;在模型的关系视图可以选中  查询 右键菜单 支持进行更多操作,具体可查看:设置及修改查询

      如果 查询的参数需要在模型中进行映射,可以查看 参数管理; 如果在数据模型不映射,则以 查询 设置的 参数默认值 进行抽取

Image Added