南京项目统计表思路 4页

  • 88.00 KB
  • 2023-01-18 11:47:32 发布

南京项目统计表思路

  • 4页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
测点原始数据测点注册的时候增加一个分区字段的设置,所有分区字段值相同的测点公用一个表。由此來折中测点数据表个数和测点数据表大小的平衡。比如a,b,c,d,e个测点注册,其中a,b,c的分区字段值为1,d,e的分区字段值为2,那么a?bzc测点将公用一个表,d,e测点公用一个表。原始数据表(MPS{businessName}{partition})表名MPS{businessName}{partition}中文名原始数据表备注用來存储原始数据,businessName:项目或者业务模块名,partition:分区字段数据来源通过接入服务器采集而来序号字段名中文名类型(长度)约束备注1IDIDbigint卞键2factor_rel_code因/关联代码Varchar(lO)Notnull这个是测点与因子关联的一个关联code3device_status设备状态Char(l)如0:损坏,1:正常,2:中断等4datetime采集时间datetimeNotnull5value采集到的原始值floatNotnull6mochfied^value修正值floatNotnull如果没做修正就和原始值一样7audinstate审核状态Char(l)1为已市核8mpcode测点编码String数据分段汇总表(MPS{businessName}{partition}{sectionName})表名MPS_{businessName}_{partition}_{sectionName}中文名分段数据表备注原始表的汇总表JsectionName}:汇总区间名如year,month,day...数据来源通过原始数据表汇总而來序号字段名中文名类型(长度)约束备注1IDIDbigint主键2datetime汇总时间datetimeNotnull3value原始值floatNotnull4mod讦ied_value修正值floatNotnull5mpcode测点编码StringNotnull6factor_rel_code因子关联代码Varchar(lO)Notnull这个是测点与因子关联的一个关联code 测点统计数据为了优化统计的效率,不做实时的统计运算,事先将数据存放与统计表。针对于统计接口的每种请求信息(接口参数),各创建一张表,表里的数据通过做固定周期(每天晚上)的数据交换,从数据分段汇总表里过来。统计表创建的规则:根据接口的传入参数来区别每种请求对应的表。先看下接口:/***根据过滤维度集和统计数据的来源取得统计结果数据集*@paramfds过滤维集合,FilterDim封装了维度成员和维度层级*@paramdms需要统计的度量集,DimMeasure里面封装了MPFactor*@paramtimeWrap时间*@paramstatsType统计方式*@paramsourceType统计数据的来源,比如直接来源与测点,来源与统计表,来源于手动提交等*@return*/ListgetStatDataByDimMember(Listfds,Listdms,TimeWraptitringsourceType);创建表名规则要用到3个参数List,List,TimeWrapFilterDim里封装了维度成员及层级。将List的元素按维度成员code先排序(参数传过来list里面3个元素的循序不一样,其实业务上是一种请求,如果不做排序,会出现排列组合种字符串),再将所有的FilterDim的维度成员和维度层级按字符串加起来。举例:Listfcls有3个FilterDim元素,第一个FilterDim的维度成员code为0003,维度成级code为02。第二个FilterDim的维度成员code为0002,维度成级code为04。第三个FilterDim的维度成员code为0009,维度成级code为03。组成的字符串为000204_000302_000903List按因子编码排序,然后将所有因子编码+统计方式也都加起来。比如List有2个因子元素:第一个DimMeasure里的因子编码为005,统计方式为lo第二个DimMeasure里的因子编码为003,统计方式为3组成的字符串为0033_0051TimeWrap取出统计刻度如M那么该请求对应着3个字符串加起来:000204_000302_000903SOO33_OO51SM我们将这个自T串做亦统计表的表明统计表监控表(MPSstattablesmonitoring) 表名(MPS_stat_tables_monitoring中文名统计表监控表备注该表主要用来记录:1.该统计请求是否已经创建了统计表。2.该统计表数据交换的周期。3.上次周期数据交换的游标,以便做增量交换数据来源序号字段名中文名类型(长度)约束备注1IDIDbigint主键2Statutable统计表表名StringNotnull根据请求生成的唯一字符串3vernier游标String暂时为时间的字符串统计表规则当接口请求发生吋,先查询“统计表监控表(MPS_stat_tables_monitoring)",是否有该请求对应的表,如果有,直接读取对应的统计表,做统计运算。如果没有,创建统计表。表结构:表名:根据请求生成的字符串女口000204_000302_000903SOO33_OO51SM列:id:longvalue:floattime:date每个请求参数的维度成员对应的维度都为一个列名:列明规则,找到该维度成员的维度code,前面加上dod{dimCode}o举例,如果该维度成员的所属的维度编码9527,那么该列明为d9527每个请求参数对应的因子也为一个列名;f+因子的code组成列明,f{fCode},该因子的编码为007,那么该列明为f007举例:接口请求ListgetStatDataByDimMember(Listfds^ListcDimMeasure〉dms,TimeWraptimeWrap^StringsourceType);List封装了维度成员有2个。分别对应了地区维度和行业维度,其维度code分别为003,004那么就有2列d003,d004.Listdms封装的因子有2个,水和电,分别对应05,06那么也对应2列f05/06・因此这个统计请求对应的表结构是id:longvalue:floattime:dated003varchar代表地区d004varchar代表行业f05varchar代表水f06varchar代表电 其数据举例idvaluetimeD003D004F05F0611012012-06滨江化工20010022012012-06滨江电力30020033232012-07西湖化工300200创建完成后,在MPS_stat_tables_monitoring增加一个记录。数据交换暂时在一个常量里配置一个quarz表达式。调度job启动时,去读取MPS_stat_tables_monitoring,遍历里面的每天记录。就单独一条记录而言,根据“000204_000?02_000903SOO33_OO51SM”,可以反向解析出接口的查询条件。然后根据该条件做数据交菽。根据维度集取得各维度集合的笛卡尔积,然后每个笛卡尔积作为一组查询条件,找到对应的所有测点,到分段表里取得统计数据。