锚 |
---|
3060-1621846615933 | 3060-1621846615933 | 又该写年终总结了,数据有了吗?数据对了吗? 锚 |
---|
DeYH-1736824867039 | DeYH-1736824867039 | 什么,数据不对?来来来,告诉你个秘籍,掌握秘籍后,妈妈再也不用担心我的数据不对了! 锚 |
---|
XgO6-1736825214625 | XgO6-1736825214625 |
Image Removed 锚 |
---|
6tAR-1736386134939 | 6tAR-1736386134939 | 首先我们先了解下,smartbi展示的数据从何而来。smartbi本身不存储业务库数据,前端展示的数据,是通过jdbc驱动跟数据库交互,将SQL送到数据库执行,数据库执行完之后再返回到前端展示。
锚 |
---|
GCFt-1736386369118 | GCFt-1736386369118 | 知道原理后,那就简单了,可以一步步去溯源,看看到底是哪里有问题。按现有smartbi的功能,目前主要划分为旧数据集开发报表,以及数据模型开发的报表。那接下来我们一个个来看。
锚 |
---|
fhis-1736387864509 | fhis-1736387864509
旧数据集篇
锚 |
---|
BskS-1736387874268 | BskS-1736387874268 | 何为旧数据集呢?一说老朋友们估计就知道了,其实就是数据集家族们:原生SQL数据集、SQL数据集、可视化数据集、自助数据集、存储过程数据集、Java数据集、多维数据集、即席查询(旧)、透视分析(旧),统称为旧数据集。
锚 |
E87q-1736389410732E87q-1736389410732 | PS:即席查询(旧)、透视分析(旧),是两个特殊的数据集,它既可以作为数据集,用于做电子表格报表,也可以分析展现层面直接作为报表数据,不得不说,真是面面俱到的好牛马。
锚 |
Mz08-1736389229289Mz08-1736389229289 |
就目前来说,大部分旧数据集中常用的基本还是原生SQL数据集、SQL数据集、可视化数据集、自助数据集。就这几种类型,外加即席查询、透视分析,那排查数据不对就比较简单了,主要就是看看是SQL哪儿不对。
锚 |
---|
Tumq-1736391674832 | Tumq-1736391674832 | 那怎么知道SQL在哪儿啊,这就要用到修炼来的秘技去找SQL了!
锚 |
---|
ttSW-1736393159406 | ttSW-1736393159406 | 但是!在找SQL前,
得先清空缓存,因为有缓存情况下,不会重新将SQL拿到数据库中执行,此时就找不到执行SQL了:
锚 |
---|
0Sfj-1736394043981 | 0Sfj-1736394043981 |
Image Modified 锚 |
---|
LNuZ-1736391861390 | LNuZ-1736391861390
秘技一:用户日志
...
c4MY-1736391938687 | 入口:就在右上角,点开三个点就能看到:
锚 |
---|
sUqC-1736392008730 | sUqC-1736392008730 |
Image Removed 锚 |
---|
ZJhS-1736391881523 | ZJhS-1736391881523
Image Added
进去之后,需要点击开始监控,并切换到服务器端:
锚 |
---|
cQ9D-1736392826032 | cQ9D-1736392826032 |
Image Removed 锚 |
---|
5moz-1736392078817 | 5moz-1736392078817 | 接着就可以回到数据集的界面,去预览数据,或是回到报表查看界面,去重新打开报表后,再返回这个监控界面,那就可以看到SQL了: 锚 |
---|
OLLK-1736404120252 | OLLK-1736404120252 |
Image Removed 锚 |
---|
D041-1736393038071 | D041-1736393038071 | 秘技二:SQL监控/MDX监控 锚 |
---|
oVSw-1736401274830 | oVSw-1736401274830 | 入口:也在右上角,点开三个点就能看到: 锚 |
---|
55eL-1736408724424 | 55eL-1736408724424 |
Image Removed 锚 |
---|
Xr46-1736408677199 | Xr46-1736408677199 |
Image Added接着就可以回到数据集的界面,去预览数据,或是回到报表查看界面,去重新打开报表后,再返回这个监控界面,那就可以看到SQL了:
Image Added
秘技二:SQL监控/MDX监控
入口:也在右上角,点开三个点就能看到:
Image Added
进去之后,在左侧目录树上找到入口:SQL监控/MDX监控
锚 |
---|
xGKB-1736408856951 | xGKB-1736408856951 |
Image Removed 锚 |
---|
0t8C-1736408722007 | 0t8C-1736408722007 | 刚打开看到的是所有的,可不都是你的,选个会话,选完了你就能看到属于你的了: 锚 |
---|
M9yK-1736409129812 | M9yK-1736409129812 |
Image Removed 锚 |
---|
aCQo-1736408702833 | aCQo-1736408702833 | 跟【秘技一】一样,2234再来一次,重新刷新报表再回到这个页面点个刷新,就能看到对应的SQL了。 锚 |
---|
xHPU-1736819791120 | xHPU-1736819791120 | 秘技三:耗时分析 锚 |
---|
nodD-1736819807847 | nodD-1736819807847 |
Image Added
刚打开看到的是所有的,可不都是你的,选个会话,选完了你就能看到属于你的了:
Image Added
跟【秘技一】一样,2234再来一次,重新刷新报表再回到这个页面点个刷新,就能看到对应的SQL了。
秘技三:耗时分析
这个的入口需要现在系统选项->公共设置开启耗时分析,选择为开启后记得点右下角的保存:
锚 |
---|
dGlB-1736819926588 | dGlB-1736819926588 |
Image Removed 锚 |
---|
aAGi-1736409361400 | aAGi-1736409361400
Image Added
开启后,以仪表盘为例,可以看到耗时分析的入口:
锚 |
---|
YoFa-1736820015402 | YoFa-1736820015402 |
Image Removed 锚 |
---|
Qi8c-1736820149722 | Qi8c-1736820149722 | 如图所示,点开就能看到对应的sql啦: 锚 |
---|
ag0o-1736820135059 | ag0o-1736820135059 |
Image Removed 锚 |
---|
9Bg2-1736820134326 | 9Bg2-1736820134326 | 秘技四:工具栏查看SQL 锚 |
---|
zMrs-1736822960453 | zMrs-1736822960453 | 即席查询报表,我们工具栏是有个查看SQL的,可以直接点击查看SQL就好啦。 锚 |
---|
yoos-1736822863215 | yoos-1736822863215 |
Image Removed 锚 |
---|
A1W8-1736822789245 | A1W8-1736822789245 | 锚 |
---|
pmV3-1736822952226 | pmV3-1736822952226 |
Image Removed 锚 |
---|
h7W8-1736822952230 | h7W8-1736822952230 | 借助秘技拿到SQL后剩下就是去找地方执行了,可以拿去原生SQL数据集或者模型查询中的SQL查询里面执行,毕竟这两个地方比较特别,我们不会对在里面执行的SQL套一层,数据集里面写了啥我们送啥SQL去数据库执行。 锚 |
---|
kC4g-1736409548953 | kC4g-1736409548953 | 那要是怀疑是产品的问题,也可以换别的数据库工具,但要JDBC方式连接的数据库工具,for example:DBeaver,DBvisualizer等等。 锚 |
---|
EHVC-1736410233581 | EHVC-1736410233581 | 接下来就是根据执行结果,看看是SQL写的不对,还是实际原始数据有问题,或者是可能设置了数据权限,多拼接了一些条件导致不对等等。 锚 |
---|
PsPp-1736414323074 | PsPp-1736414323074 | 总的来说,这几个秘技对于旧数据集而言基本够用了,相信你自己!看看SQL借助AI问问,基本都知道为什么我的数据不是我要的了。 锚 |
---|
Vrbb-1736817306852 | Vrbb-1736817306852 | 来个例子 锚 |
---|
lSp5-1736747939772 | lSp5-1736747939772 | 说那么多,下面举个简单例子套一套我们的公式。小红说,怎么我这张报表没有数据,但是只是检查查询一张表的字段,数据库也是有数据的。 锚 |
---|
q9sB-1736748637402 | q9sB-1736748637402 |
Image Removed 锚 |
---|
IEKK-1736413667622 | IEKK-1736413667622 | 首先我们来根据上面说的,来获取下我们执行SQL,所属资源ID是报表用的数据集ID,用户时间都对的上,没错,就是这条了,让我们来复制下来,去模型那边的SQL查询看看。 锚 |
---|
wlrI-1736748749433 | wlrI-1736748749433 |
Image Removed 锚 |
---|
aLs1-1736748985745 | aLs1-1736748985745 | 然后我们看,真的没有欸,再看,怎么多了个where条件,而且注释掉也是有数据的,那问题就出现在这里了,报表界面也没看到有啥参数,我们倒回到数据集看看。 锚 |
---|
lAxQ-1736748971444 | lAxQ-1736748971444 |
Image Removed 锚 |
---|
JM4f-1736748982585 | JM4f-1736748982585 | 锚 |
---|
NNaf-1736749074744 | NNaf-1736749074744 |
Image Removed 锚 |
---|
6tut-1736748977356 | 6tut-1736748977356 | 数据集也就是一个简单的可视化数据,条件那里也没写东西,那真是奇了怪了,到底哪儿来的呢。 锚 |
---|
0Lr7-1736749124491 | 0Lr7-1736749124491 |
Image Removed 锚 |
---|
CKsu-1736749080891 | CKsu-1736749080891 | 数据集没配置,那这种情况下,就可能是数据源那边配置了数据权限了,配置数据权限后,系统会自动拼接对应条件到where部分,根据实际情况进行过滤。这个时候去数据源那里右键数据权限配置看,欸,还真有,并且编辑进去看就是获取了当前日期,罪魁祸首就是他,那这个时候就是看要是不是不需要这个数据权限,还是改一改了,具体就要看实际业务场景啦。 锚 |
---|
pPkw-1736749459589 | pPkw-1736749459589 |
Image Removed 锚 |
---|
mO73-1736823880170 | mO73-1736823880170 | 锚 |
---|
hSQ8-1736749517186 | hSQ8-1736749517186 |
Image Removed 锚 |
---|
ZPIi-1736749517189 | ZPIi-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