页面树结构

版本比较

标识

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


3060-16218466159333060-1621846615933又该写年终总结了,数据有了吗?数据对了吗?
DeYH-1736824867039DeYH-1736824867039什么,数据不对?来来来,告诉你个秘籍,掌握秘籍后,妈妈再也不用担心我的数据不对了!
XgO6-1736825214625XgO6-1736825214625 Image Removed
6tAR-17363861349396tAR-1736386134939首先我们先了解下,smartbi展示的数据从何而来。smartbi本身不存储业务库数据,前端展示的数据,是通过jdbc驱动跟数据库交互,将SQL送到数据库执行,数据库执行完之后再返回到前端展示。
GCFt-1736386369118GCFt-1736386369118知道原理后,那就简单了,可以一步步去溯源,看看到底是哪里有问题。按现有smartbi的功能,目前主要划分为旧数据集开发报表,以及数据模型开发的报表。那接下来我们一个个来看。
fhis-1736387864509fhis-1736387864509


旧数据集篇
BskS-1736387874268BskS-1736387874268何为旧数据集呢?一说老朋友们估计就知道了,其实就是数据集家族们:原生SQL数据集、SQL数据集、可视化数据集、自助数据集、存储过程数据集、Java数据集、多维数据集、即席查询(旧)、透视分析(旧),统称为旧数据集。
E87q-1736389410732
E87q-1736389410732PS:即席查询(旧)、透视分析(旧),是两个特殊的数据集,它既可以作为数据集,用于做电子表格报表,也可以分析展现层面直接作为报表数据,不得不说,真是面面俱到的好牛马。
Mz08-1736389229289Mz08-1736389229289


就目前来说,大部分旧数据集中常用的基本还是原生SQL数据集、SQL数据集、可视化数据集、自助数据集。就这几种类型,外加即席查询、透视分析,那排查数据不对就比较简单了,主要就是看看是SQL哪儿不对。
Tumq-1736391674832Tumq-1736391674832那怎么知道SQL在哪儿啊,这就要用到修炼来的秘技去找SQL了!
ttSW-1736393159406ttSW-1736393159406但是!在找SQL前,得先清空缓存,因为有缓存情况下,不会重新将SQL拿到数据库中执行,此时就找不到执行SQL了:

0Sfj-17363940439810Sfj-1736394043981Image Modified
LNuZ-1736391861390LNuZ-1736391861390


秘技一:用户日志

...

c4MY-1736391938687入口:就在右上角,点开三个点就能看到:
sUqC-1736392008730sUqC-1736392008730 Image Removed
ZJhS-1736391881523ZJhS-1736391881523 Image Added


进去之后,需要点击开始监控,并切换到服务器端


cQ9D-1736392826032cQ9D-1736392826032 Image Removed
5moz-17363920788175moz-1736392078817接着就可以回到数据集的界面,去预览数据,或是回到报表查看界面,去重新打开报表后,再返回这个监控界面,那就可以看到SQL了:
OLLK-1736404120252OLLK-1736404120252 Image Removed
D041-1736393038071D041-1736393038071秘技二:SQL监控/MDX监控
oVSw-1736401274830oVSw-1736401274830入口:也在右上角,点开三个点就能看到:
55eL-173640872442455eL-1736408724424 Image Removed
Xr46-1736408677199Xr46-1736408677199 Image Added
接着就可以回到数据集的界面,去预览数据,或是回到报表查看界面,去重新打开报表后,再返回这个监控界面,那就可以看到SQL了:
 Image Added


秘技二:SQL监控/MDX监控

入口:也在右上角,点开三个点就能看到:


 Image Added


进去之后,在左侧目录树上找到入口:SQL监控/MDX监控


xGKB-1736408856951xGKB-1736408856951 Image Removed
0t8C-17364087220070t8C-1736408722007刚打开看到的是所有的,可不都是你的,选个会话,选完了你就能看到属于你的了:
M9yK-1736409129812M9yK-1736409129812 Image Removed
aCQo-1736408702833aCQo-1736408702833跟【秘技一】一样,2234再来一次,重新刷新报表再回到这个页面点个刷新,就能看到对应的SQL了。
xHPU-1736819791120xHPU-1736819791120秘技三:耗时分析
nodD-1736819807847nodD-1736819807847 Image Added


刚打开看到的是所有的,可不都是你的,选个会话,选完了你就能看到属于你的了:


 Image Added


跟【秘技一】一样,2234再来一次,重新刷新报表再回到这个页面点个刷新,就能看到对应的SQL了。


秘技三:耗时分析


这个的入口需要现在系统选项->公共设置开启耗时分析,选择为开启后记得点右下角的保存:


dGlB-1736819926588dGlB-1736819926588 Image Removed
aAGi-1736409361400aAGi-1736409361400 Image Added


开启后,以仪表盘为例,可以看到耗时分析的入口:


YoFa-1736820015402YoFa-1736820015402 Image Removed
Qi8c-1736820149722Qi8c-1736820149722如图所示,点开就能看到对应的sql啦:
ag0o-1736820135059ag0o-1736820135059 Image Removed
9Bg2-17368201343269Bg2-1736820134326秘技四:工具栏查看SQL
zMrs-1736822960453zMrs-1736822960453即席查询报表,我们工具栏是有个查看SQL的,可以直接点击查看SQL就好啦。
yoos-1736822863215yoos-1736822863215 Image Removed
A1W8-1736822789245A1W8-1736822789245 pmV3-1736822952226pmV3-1736822952226 Image Removed
h7W8-1736822952230h7W8-1736822952230借助秘技拿到SQL后剩下就是去找地方执行了,可以拿去原生SQL数据集或者模型查询中的SQL查询里面执行,毕竟这两个地方比较特别,我们不会对在里面执行的SQL套一层,数据集里面写了啥我们送啥SQL去数据库执行。
kC4g-1736409548953kC4g-1736409548953那要是怀疑是产品的问题,也可以换别的数据库工具,但要JDBC方式连接的数据库工具,for example:DBeaver,DBvisualizer等等。
EHVC-1736410233581EHVC-1736410233581接下来就是根据执行结果,看看是SQL写的不对,还是实际原始数据有问题,或者是可能设置了数据权限,多拼接了一些条件导致不对等等。
PsPp-1736414323074PsPp-1736414323074总的来说,这几个秘技对于旧数据集而言基本够用了,相信你自己!看看SQL借助AI问问,基本都知道为什么我的数据不是我要的了。
Vrbb-1736817306852Vrbb-1736817306852来个例子
lSp5-1736747939772lSp5-1736747939772说那么多,下面举个简单例子套一套我们的公式。小红说,怎么我这张报表没有数据,但是只是检查查询一张表的字段,数据库也是有数据的。
q9sB-1736748637402q9sB-1736748637402 Image Removed
IEKK-1736413667622IEKK-1736413667622首先我们来根据上面说的,来获取下我们执行SQL,所属资源ID是报表用的数据集ID,用户时间都对的上,没错,就是这条了,让我们来复制下来,去模型那边的SQL查询看看。
wlrI-1736748749433wlrI-1736748749433 Image Removed
aLs1-1736748985745aLs1-1736748985745然后我们看,真的没有欸,再看,怎么多了个where条件,而且注释掉也是有数据的,那问题就出现在这里了,报表界面也没看到有啥参数,我们倒回到数据集看看。
lAxQ-1736748971444lAxQ-1736748971444 Image Removed
JM4f-1736748982585JM4f-1736748982585 NNaf-1736749074744NNaf-1736749074744 Image Removed
6tut-17367489773566tut-1736748977356数据集也就是一个简单的可视化数据,条件那里也没写东西,那真是奇了怪了,到底哪儿来的呢。
0Lr7-17367491244910Lr7-1736749124491 Image Removed
CKsu-1736749080891CKsu-1736749080891数据集没配置,那这种情况下,就可能是数据源那边配置了数据权限了,配置数据权限后,系统会自动拼接对应条件到where部分,根据实际情况进行过滤。这个时候去数据源那里右键数据权限配置看,欸,还真有,并且编辑进去看就是获取了当前日期,罪魁祸首就是他,那这个时候就是看要是不是不需要这个数据权限,还是改一改了,具体就要看实际业务场景啦。
pPkw-1736749459589pPkw-1736749459589 Image Removed
mO73-1736823880170mO73-1736823880170 hSQ8-1736749517186hSQ8-1736749517186 Image Removed
ZPIi-1736749517189ZPIi-1736749517189那么以上只是旧数据集,但我们不是还有个数据模型,数据模型又是怎么个事?请各位看官敬请期待下篇。 Image Added


如图所示,点开就能看到对应的sql啦:


 Image Added


秘技四:工具栏查看SQL

即席查询报表,我们工具栏是有个查看SQL的,可以直接点击查看SQL就好啦。


 Image Added

 Image Added

借助秘技拿到SQL后剩下就是去找地方执行了,可以拿去原生SQL数据集或者模型查询中的SQL查询里面执行,毕竟这两个地方比较特别,我们不会对在里面执行的SQL套一层,数据集里面写了啥我们送啥SQL去数据库执行。
那要是怀疑是产品的问题,也可以换别的数据库工具,但要JDBC方式连接的数据库工具,for example:DBeaver,DBvisualizer等等。
接下来就是根据执行结果,看看是SQL写的不对,还是实际原始数据有问题,或者是可能设置了数据权限,多拼接了一些条件导致不对等等。
总的来说,这几个秘技对于旧数据集而言基本够用了,相信你自己!看看SQL借助AI问问,基本都知道为什么我的数据不是我要的了。


来个例子


说那么多,下面举个简单例子套一套我们的公式。小红说,怎么我这张报表没有数据,但是只是检查查询一张表的字段,数据库也是有数据的。


 Image Added
首先我们来根据上面说的,来获取下我们执行SQL,所属资源ID是报表用的数据集ID,用户时间都对的上,没错,就是这条了,让我们来复制下来,去模型那边的SQL查询看看。


 Image Added


然后我们看,真的没有欸,再看,怎么多了个where条件,而且注释掉也是有数据的,那问题就出现在这里了,报表界面也没看到有啥参数,我们倒回到数据集看看。


 Image Added

 Image Added


数据集也就是一个简单的可视化数据,条件那里也没写东西,那真是奇了怪了,到底哪儿来的呢。


 Image Added


数据集没配置,那这种情况下,就可能是数据源那边配置了数据权限了,配置数据权限后,系统会自动拼接对应条件到where部分,根据实际情况进行过滤。这个时候去数据源那里右键数据权限配置看,欸,还真有,并且编辑进去看就是获取了当前日期,罪魁祸首就是他,那这个时候就是看要是不是不需要这个数据权限,还是改一改了,具体就要看实际业务场景啦。


 Image Added

 Image Added