转至内容
转至导航栏
转至主菜单
转至动作菜单
转至快速搜索
空间
按回车键(Enter)搜索
帮助
在线帮助
快捷键
RSS源建立器
新功能
可用的小工具
关于Confluence
登录
FAQ中心
页面树结构
浏览页面
设置
空间管理
查看页面
页面历史
页面信息
以层级方式查看
查看页面源代码
导出为PDF
Page View Statistics
页面
…
FAQ中心
专家分享合集
经验分享
如何找SQL看数据不对问题(旧数据集)
页面历史
版本比较
旧版本
1
changes.mady.by.user
潘家宜
保存于
四月 02, 2025
比较
新版本
2
changes.mady.by.user
潘家宜
保存于
四月 02, 2025
下一变化: 2 和 3版本的不同
查看页面历史
标识
该行被添加。
该行被删除。
格式已经改变。
锚
3060-1621846615933
3060-1621846615933
又该写年终总结了,数据有了吗?数据对了吗?
锚
DeYH-1736824867039
DeYH-1736824867039
什么,数据不对?来来来,告诉你个秘籍,掌握秘籍后,妈妈再也不用担心我的数据不对了!
锚
XgO6-1736825214625
XgO6-1736825214625
Image Added
锚
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-1736389410732
E87q-1736389410732
PS:即席查询(旧)、透视分析(旧),是两个特殊的数据集,它既可以作为数据集,用于做电子表格报表,也可以分析展现层面直接作为报表数据,不得不说,真是面面俱到的好牛马。
锚
Mz08-1736389229289
Mz08-1736389229289
就目前来说,大部分旧数据集中常用的基本还是原生SQL数据集、SQL数据集、可视化数据集、自助数据集。就这几种类型,外加即席查询、透视分析,那排查数据不对就比较简单了,主要就是看看是SQL哪儿不对。
锚
Tumq-1736391674832
Tumq-1736391674832
那怎么知道SQL在哪儿啊,这就要用到修炼来的秘技去找SQL了!
锚
ttSW-1736393159406
ttSW-1736393159406
但是!在找SQL前,
得先清空缓存
,因为有缓存情况下,不会重新将SQL拿到数据库中执行,此时就找不到执行SQL了:
锚
0Sfj-1736394043981
0Sfj-1736394043981
Image Added
锚
LNuZ-1736391861390
LNuZ-1736391861390
秘技一:用户日志
锚
c4MY-1736391938687
c4MY-1736391938687
入口:就在右上角,点开三个点就能看到:
锚
sUqC-1736392008730
sUqC-1736392008730
Image Added
锚
ZJhS-1736391881523
ZJhS-1736391881523
进去之后,需要点击
开始监控
,并切换到
服务器端
:
锚
cQ9D-1736392826032
cQ9D-1736392826032
Image Added
锚
5moz-1736392078817
5moz-1736392078817
接着就可以回到数据集的界面,去预览数据,或是回到报表查看界面,去重新打开报表后,再返回这个监控界面,那就可以看到SQL了:
锚
OLLK-1736404120252
OLLK-1736404120252
Image Added
锚
D041-1736393038071
D041-1736393038071
秘技二:SQL监控/MDX监控
锚
oVSw-1736401274830
oVSw-1736401274830
入口:也在右上角,点开三个点就能看到:
锚
55eL-1736408724424
55eL-1736408724424
Image Added
锚
Xr46-1736408677199
Xr46-1736408677199
进去之后,在左侧目录树上找到入口:
SQL监控/MDX监控
锚
xGKB-1736408856951
xGKB-1736408856951
Image Added
锚
0t8C-1736408722007
0t8C-1736408722007
刚打开看到的是所有的,可不都是你的,选个会话,选完了你就能看到属于你的了:
锚
M9yK-1736409129812
M9yK-1736409129812
Image Added
锚
aCQo-1736408702833
aCQo-1736408702833
跟【秘技一】一样,2234再来一次,重新刷新报表再回到这个页面点个刷新,就能看到对应的SQL了。
锚
xHPU-1736819791120
xHPU-1736819791120
秘技三:耗时分析
锚
nodD-1736819807847
nodD-1736819807847
这个的入口需要现在
系统选项->公共设置
开启耗时分析,选择为开启后记得点右下角的保存:
锚
dGlB-1736819926588
dGlB-1736819926588
Image Added
锚
aAGi-1736409361400
aAGi-1736409361400
开启后,以仪表盘为例,可以看到
耗时分析
的入口:
锚
YoFa-1736820015402
YoFa-1736820015402
Image Added
锚
Qi8c-1736820149722
Qi8c-1736820149722
如图所示,点开就能看到对应的sql啦:
锚
ag0o-1736820135059
ag0o-1736820135059
Image Added
锚
9Bg2-1736820134326
9Bg2-1736820134326
秘技四:工具栏查看SQL
锚
zMrs-1736822960453
zMrs-1736822960453
即席查询报表,我们工具栏是有个查看SQL的,可以直接点击查看SQL就好啦。
锚
yoos-1736822863215
yoos-1736822863215
Image Added
锚
A1W8-1736822789245
A1W8-1736822789245
锚
pmV3-1736822952226
pmV3-1736822952226
Image Added
锚
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 Added
锚
IEKK-1736413667622
IEKK-1736413667622
首先我们来根据上面说的,来获取下我们执行SQL,所属资源ID是报表用的数据集ID,用户时间都对的上,没错,就是这条了,让我们来复制下来,去模型那边的SQL查询看看。
锚
wlrI-1736748749433
wlrI-1736748749433
Image Added
锚
aLs1-1736748985745
aLs1-1736748985745
然后我们看,真的没有欸,再看,怎么多了个where条件,而且注释掉也是有数据的,那问题就出现在这里了,报表界面也没看到有啥参数,我们倒回到数据集看看。
锚
lAxQ-1736748971444
lAxQ-1736748971444
Image Added
锚
JM4f-1736748982585
JM4f-1736748982585
锚
NNaf-1736749074744
NNaf-1736749074744
Image Added
锚
6tut-1736748977356
6tut-1736748977356
数据集也就是一个简单的可视化数据,条件那里也没写东西,那真是奇了怪了,到底哪儿来的呢。
锚
0Lr7-1736749124491
0Lr7-1736749124491
Image Added
锚
CKsu-1736749080891
CKsu-1736749080891
数据集没配置,那这种情况下,就可能是数据源那边配置了数据权限了,配置数据权限后,系统会自动拼接对应条件到where部分,根据实际情况进行过滤。这个时候去数据源那里右键数据权限配置看,欸,还真有,并且编辑进去看就是获取了当前日期,罪魁祸首就是他,那这个时候就是看要是不是不需要这个数据权限,还是改一改了,具体就要看实际业务场景啦。
锚
pPkw-1736749459589
pPkw-1736749459589
Image Added
锚
mO73-1736823880170
mO73-1736823880170
锚
hSQ8-1736749517186
hSQ8-1736749517186
Image Added
锚
ZPIi-1736749517189
ZPIi-1736749517189
那么以上只是旧数据集,但我们不是还有个数据模型,数据模型又是怎么个事?请各位看官敬请期待下篇。
概览
内容工具
活动
{"serverDuration": 256, "requestCorrelationId": "0120523c9d194c1f"}