学习心得:品质MR图遇到帆软tab块分析

博主分享了在使用帆软报表系统时遇到的移动极差计算和图表显示不全的问题。通过研究,发现了SQL的开窗函数和LEAD/LAG函数可以有效解决移动极差计算,并提供了相应的SQL代码示例。对于帆软报表块的BUG,通过调整解决了图表自适应问题。
摘要由CSDN通过智能技术生成

前言:

最近使用帆软的报表系统搭建品质的IQC趋势分析demo给相关领导汇报争取一炮打响,哪知道连续打了两个哑炮。一个就是MR里面的移动极差的计算,一个是使用帆软tab块然后增加报表块,再在报表块里面增加图表进行趋势分析,如果你有兴趣的话,请继续往下看。本次心得分析主要是整理网上没有系统总结的开窗函数的使用和移动求和、移动极差、移动平均的运用。然后就是帆软tab块BUG的处理。

  • 解题思路
  1. 移动极差的计算

Q:如图所示,移动极差=ABS(计算列的第一个值-第二个值),但第一个计算结果是空值

A:假如将这些数据存储值数据库的表t1中,数据列为Ni,在SQL里面怎么写呢,第一种会想到使用自连接的形式,分两断重新关联使用,利用第一段行号=第二段行号-1关联得错位的数据,可实现该需求,但在实际应用发现,该种方法效率比较低而且占用服务器较多的资源。

对于一个IT人员来说不是只实现了客户需求就会满足,因此,放弃了这套思路,去网上查找开窗函数的相关用法,因此开展了自己的新大陆,发现类似直接使用over函数和 rows between n preceding and n following就可以得到移动累计数值,求出移动累计后,求移动平均就很简单,除以对应天数或者使用AVG函数即可,效果如图所示:

SELECT  [salesdate]

      ,[Region]

  ,sale

      ,sum(sale)over(order by salesdate,region rows BETWEEN 2 preceding AND CURRENT ROW)--

  FROM [Rollingtest] t1

  where salesdate <'20210910'

但是所有的开窗函数好像不支持“移动相减”的算法。因此此时我又换了一个思路,是不是有个函数可以直接获取上下行相邻的数据呢,功夫不负有心人找到了lead和lag函数,解决了这个问题,具体解释可点击链接:SQL SERVER LEAD和LAG函数_二月十六的博客-CSDN博客

最终的效果图如图所示:

参考代码如下所示:

Select t1.*,

case when ROW_NUMBER() OVER ( ORDER BY SUBSTRING(CONVERT(varchar(100),更新时间,23),1,10) )=1 then 0 else ABS(Mn-LAG(Mn, 1, 0) OVER (ORDER BY SUBSTRING(CONVERT(varchar(100),更新时间,23),1,10))) end jc

          from  t1--通过ROW_NUMBER() OVER ()开窗函数排序实现了第一行为空的处理,使用lag函数实现了错位取值的功能

  1. 帆软bug展示

Q:tab块下图表显示不全

A:通过与帆软客服一下午的调试,刚开始怀疑是插件的问题,后来怀疑是浏览器缩放的问题,后面与其他环境对比发现是tab块下,报表块自适应的问题,具体操作如图所示。

  • 心得体会

理清思路,学无止境

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他们叫我技术总监

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值