...
可以通过什么方式获取用户在smartbi操作时相关的知识库执行SQL?
解决方案
(v95 版本以上(不含v97)2021年中后版本支持,v97版本2022年3月中旬版本支持smartbi v95 版本以上(不含v97)2021年6月后版本支持,v97版本2022年3月中旬后版本支持)
具体步骤如下: 1、管理员角色打开系统监控新增一行
1、修改系统监控日志级别
管理员角色打开系统监控-log4j信息
在如下图区域输入框新增一行lo4j信息日志级别:common.repository.sql DEBUGsql,下拉框选择 DEBUG,或trace(可以输出执行耗时)
填写完成后,点击修改按钮。填写完成后,点击底部的修改按钮。
2、实时查看执行sql
此后,有两种方式在有两种方式在smartbi界面上实时查看相关的知识库执行sql日志,根据实际需要灵活选择。
(1)系统监控查看(1)系统监控查看
系统监控-日志,点击开始监控,然后用户去smartbi界面操作,再看系统监控输出用户日志 ,就能看到执行了哪些sql,就能看到执行了哪些sql,如下图,sql is后面拼接的字符串是一条sql语句:
左边一长串的字符串是会话id,同一个用户的会话会一样,左边较长字符串是会话id,[]里面是用户名里面是用户名,
上面这个图的用户名是c,代表这个sql是c用户操作产生的上面这个图的用户名是c,代表这个sql是c用户操作产生的,
若日志太多 ,可在过滤输入框输入会话id过滤,可在过滤输入框输入会话id过滤,
NOT_LOGGED_IN : 代表还没有登录的会话标识IN 代表还没有登录的会话标识,
会话id一致,代表同一个用户在一个客户端上操作的记录。
这种sql里有问号的,实际的值在后面中括号里面,最终的sql需要根据字段类型和中括号中的值按顺序替换问号和确认这个替换的值在sql中需不需要添加单引号。
上图中sql中经常是带有“?”的,其执行时实际的值会打印在后面的中括号中,实际执行的sql语句需要将中括号中的值按顺序替换上图sql的问号,并根据数据库表对应字段的数据类型确定替换问号的值需不需要添加单引号。
如果打出来的sql语句没有问号 ,那中括号里面一般都是空的。
...
,则中括号内一般为空。
(2)用户日志查看
当在线用户比较多的时候,系统监控看到的日志可能特别多,容易造成浏览器卡顿,不方便排查,此时如果操作的用户如果有用户日志的操作权限,该用户打开用户日志,点击开始监控,也是可以看到相关的基于知识库执行的sql语句,并且用户日志中看到的sql,都是由当前的用户的操作发起的,不需要进行过滤查找。
3、导出日志
对于步骤2(1)的系统监控查看的日志,如需导出,可通过系统运维-系统日志导出
对于步骤2(2)的用户日志查看到的日志,可直接在用户日志右上角导出所有