统计任务类型汇总初稿.docx
《统计任务类型汇总初稿.docx》由会员分享,可在线阅读,更多相关《统计任务类型汇总初稿.docx(19页珍藏版)》请在冰豆网上搜索。
统计任务类型汇总初稿
统计常见任务类型及解决方法汇总
1、配置新增统计与查询
增加一个新的统计,统计中要求有指定的分组字段和汇总字段,同时所需的字段在表中已有,或者直接增加可用。
例:
长沙需求责任网格打卡统计,所需样式如图
这种样式的统计中,分为分组字段和汇总字段,汇总字段中又分为表中有现场字段的字段和配置的扩展字段。
解决方法:
先把统计数据来源的表配成数据视图
然后把数据视图中需要显示的字段的显示名称输入进去。
扩展字段配置:
可进行添加、删除、修改操作。
当需要修改一个扩展字段的SQL,且扩展字段的SQL中有出现单引号时,每个单引号要多输入一个单引号,否则无法修改。
配置完数据视图之后,打开统计配置,新建一个统计:
列表字段:
添加上的字段即是反查显示的字段。
如果有必须配置,但是反查又不需要显示的字段,那么把前台显示的勾去掉即可。
统计的条件:
在这里添加,所添加的条件用到的字段必须是列表字段中已经添加的字段。
条件配置:
可选为隐藏条件,隐藏条件勾上以后,比较值中要写上表达式。
分组字段和汇总字段配置:
这里添加统计结果中用于分组的字段
汇总添加的是要进行数据统计的字段
根据分组字段进行排序:
配置完统计,还需要给指定的帐号配置使用这个统计的权限:
配置完之后,登录对应的帐号即可看到新增的统计:
2、反查之后页面没有任何数据
如下图所示:
反查之后就卡住了
这种情况一般是超链接配置的有问题,
但是数据视图中,超链接的地址不对:
这里只要把超链接地址加上即可。
还有一种情况是统计之后能反查,且超链接为可点击,但是点击之后页面打开报错。
这个可能是因为任务号、案件标识没有在列表字段中添加导致的。
注意这里是案件标识RecID,不是案卷标识。
3、增加下拉列表和树状条件
这两种条件形式如下:
下拉选择:
树状条件:
配置如下图,两种条件都需要有一个字典表来存放选项,分别填在字典表表名和树状字典表表名列中。
字典表可以根据需求自行创建。
两种情况下字典表ID、Name串的写法不一样,下拉列表的写法:
$umstat$vcdicactproperty$actpropertyid$0$actpropertyname
Umstat.vcdicactproperty是表名,actpropertyid和actpropertyname是表中用到的字段
树状结构的写法:
(districtidin({0})orstreetidin({1})orcommunityidin({2}))
districtid,streetid,communityid对应树状结构中的三个条件字段.
下拉列表的Name条框要勾上,否则会出错:
4、查询案件或统计没有任何数据
首先判断查询的条件是否有误。
在查询和统计时,日志中都会有记录,查询和反查记录的是sql语句,统计会显示传递的参数,从这里面可以判断是否是条件有误从而查不到数据。
日志在以下目录中:
\eGovaStatV13\webapp\WEB-INF\log
如果条件没有问题,那么可能是查询的表中没有数据。
先根据配置信息来获取对应的视图名,找到对应的table或者view,然后在数据库中看看这个表在对应条件下是否有数据,没有数据则说明数据没有采集上来。
以统计表umstat.tostatinfo为例,假设该表中没有需要的案件。
这个表对应的采集存储过程是umstat.fcUpdateStatInfoOne,从dlmis.toRec或者dlhist.toRec中找到需要的案件的案件标识RecID(selectRecIDfromdlmis.toRecwhere...)where后面的条件是查找这个案件的根据,例如tasknum=‘16020100001’。
获取RecID之后,test存储过程umstat.fcUpdateStatInfoOne。
umstat.fcUpdateStatInfoOne的主要采集过程:
其中,tostatinfo的大部分指标都是在umstat.foUpdateStatinfoMain中采集的,tostatinfo表中数据没有采集成功问题就很有可能是在这个存储过程中。
Main在采集的最后会对信息进行判断,社区、街道、区域、问题来源、问题类型、大类、小类、责任网格这些信息不可少,否则这条案件不采集。
有些案件没有采集上来就可能是这个原因。
不同地方情况可能不一样,排查的时候要根据存储过程中的逻辑来判断。
5、某个统计需要新增字段,或是已有字段采集逻辑不对
字段原本在表中不存在,或是已经存在但是采集逻辑不对。
那么就要在表中增加字段,然后在对应存储过程中增加或是修改采集逻辑。
还是以umstat.toStatInfo表为例,许多地方都有增加一二三级部门的需求,处置案件的专业部门可能是个三级部门,上面还有二级部门和一级部门,而有些统计可能要统计的是专业部门上属的二级部门,这就需要增加二级部门和一级部门的字段。
统计表中原本已经有了一级和二级部门的字段,只不过没有采集的逻辑。
在umstat.foupdatestatinfomain后面加个存储过程,作为对统计表特殊指标的补充,逻辑写在这里面。
6、统计速度过于缓慢的优化
随着系统的使用,数据库中的数据量会越来越大,统计的速度也会随之变慢,有时统计一次要过好几分钟才能出来数据。
优化的方法:
①将统计表进行分表,一个统计用到的字段可能只有几十个,但是统计表中有几百个字段,对于这一个统计来说,表中大部分数据是没有用的。
这种情况下可以新建一张小表,字段就是统计用到的那些字段,表中数据量少了速度能有明显提升。
相关的表:
umstat.tcqueryaggrfield --汇总字段表
umstat.tcquerygroupfield --分组字段表
umstat.tcqueryresultfield --列表字段表
从这几个表中获取要优化统计的字段,然后用这些字段来创建小表。
selectdistinctfieldid,fieldname,fielddispnamefromumstat.tcqueryaggrfield
wherequeryidin(1002)union--汇总字段
selectdistinctfieldid,fieldname,fielddispnamefromumstat.tcquerygroupfield
wherequeryidin(1002)union--分组字段
selectdistinctfieldid,fieldname,fielddispnamefromumstat.tcqueryresultfieldwherequeryidin(1002)--列表字段
创建可以用createtable()asselectx,x,x,xfromumstat.tostatinfo这样的语句,创建的同时加入数据。
在采集的存储过程中加入一个采集这个表数据的存储过程:
存储过程中从toStatInfo表中采集小表的数据:
②还有一种方法是采用分区表的方式优化,通过一个字段将一张表分为几个部分,例如通过上报时间将表中数据分隔开,2016年1月单独一个部分,2016年2月单独一个部分,查找2月的数据就不需要管其他分区的数据。
③有些表可能没有创建索引,导致统计速度特别慢,这种情况可以根据统计的条件,在相应的字段上增加索引。
7、锁表
有时操作不当可能会引起锁表的问题,锁表之后一些存储过程就无法正常执行,从而出现数据缺失、统计失败等问题。
像这样:
这种情况下就需要查找锁住的表,然后将session杀掉。
查锁表的语句:
selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id = o.object_idandl.session_id=s.sid;
根据查到的sid和serial来kill:
altersystemkillsession'24,111';
8、权限过滤
有些地方可能会需求不同人员登录之后使用不同统计能看到不同的结果,例如专业部门综合评价,人员登录只能看到自己部门的数据。
这些控制可以在umstat.pcgetspecilwheresql中实现。
这里面是根据输入的iQueryID、iHumanID来输出一个特殊的条件用以过滤。
根据传入的人员ID来获取该人员所在的部门:
然后加上部门过滤条件:
9、自定义统计
部分统计无法配置出来,例如多表头的统计形式,需要用自定义存储过程来实现统计。
V13自定义统计的存储过程名称是umstat.postatv31000,v11系统的是umstat.postat1000。
参数如下:
清空临时表:
处理时间条件,获取时间点:
处理获取数据的表名:
然后把数据从表中放到临时表中:
处理表头:
返回结果:
自定义反查:
自定义反查不是在存储过程中统计出结果再返回结果,而是在存储过程中形成特定的反查条件语句。
存储过程名为umstat.pogetantiqueryconv31000。
前台双击数字,传到后台的条件为分组字段名、指标名,根据这些再加上传入的其他条件和表名来拼出一句语句from表名where条件。
先处理表名,要用小表就换成小表表名,如果有数据固化需要用固化表就换成固化表表名。
然后处理时间条件获取时间点。
处理反查行列条件既是根据传入的行和列的信息来确定条件,例如双击‘专业部门A’的‘立案数’,获取的条件就是DisposeDepartName=‘专业部门A’,立案数>0,而表中是没有’立案数’这个字段的,因此要替换为InstNum>0。
最后把所有获取的条件拼成一个sql语句:
10、统计配置中子系统的问题
有些统计不是配置在标准城管系统中:
把这类统计的权限配给相应的帐号之后,帐号登录统计页面的url还要加上参数appType=x,x是对应子系统的ID。
例如
http:
//localhost:
8080/eGovaStatV13/statanalysis/getstat.htm?
queryType=1&humanID=23
改为
http:
//localhost:
8080/eGovaStatV13/statanalysis/getstat.htm?
queryType=1&humanID=23&appType=29