DAP数据分析平台主要是为了满足企业数据分析的需要而开发的一款产品,不同于一般的BI平台,DAP数据分析平台更侧重数据聚合,平台预置有数据源注册、ODS注册与管理、数仓配置与数据聚合,从而实现企业业务数据的统一,构建企业统一的、标准的、完整的数据仓库,而数据展现、数据分析、数据报表,以及外部系统数据交互提供支持。
本文将介绍在DAP结合ESB实现的数据调度功能,完善开发过程中的相关工作,和对数据调度功能相关功能的业务逻辑理解,其中涉及到调度资源、调度任务以及调度日志功能。
DAP数据分析平台是一款专门用于企业大数据平台构建的产品,它可以对从业务系统或者ODS中抽取来的海量数据进行高效存储、计算、分析并处理。最终将有价值的数据以可视化的形式进行展现,能够有效帮助企业清晰的分析优劣势,从而调整企业策略,加快企业的信息化发展与整体竞争力。
公司产品可以通过不同的组合来解决不同的问题,帮助企业范围内建立起一整套统一、规范的IT架构标准体系,包括数据规范、服务规范、流程规范、界面规范、接口规范等,彻底解决了当前面临的信息孤岛问题,有利于提高效率和降低成本。下面介绍我们公司的产品体系,如下:
我们公司的所有产品都是通过K8S云平台进行部署搭建产品环境,通过不同产品间的“化学反应”来解决不同的信息化问题,帮助企业建设统一规范的IT架构标准。
DAP数据分析平台,数据分析平台将企业数据进行治理分析,并且通过图形组件呈现出来,充分将企业的数据利用起来,发挥数据的最大价值,为企业决策者提供直观的展示效果,从而获得更大的商业价值。在DAP数据分析平台中预置了丰富的组件,饼状图、条形图、散点图、折线图等满足企业的真实所需。它可以对从业务系统或者ODS中抽取来的海量数据进行高效存储、计算、分析并处理。最终将有价值的数据以可视化的形式进行展现,能够有效帮助企业分析优劣势,从而调整企业策略,加快企业的信息化发展与整体竞争力。
本次主要完善DAP结合ESB创建调度资源,并在DAP中可将调度资源合并成调度任务执行,执行结束后会在相应的日志接口形成相对应的调度日志具体的过程,如下:
本次完善的数据调度功能主要分为两种情况,一种通过ESB结合DAP接口生成对应的业务系统到ods、ods到数仓的调度,并在DAP的调度资源功能下逐条执行,或者是创建完对应的调度资源后,在DAP的调度任务中选择对应的调度资源形成对应的调度任务,直接执行从业务系统到数仓这一过程。上述两种情况执行结束后,ESB流程会调用DAP对应的日志接口完成调度日志的回写,回写的数据可以在调度日志功能中查看。
下面我们先来介绍一下DAP数据调度功能,如何结合ESB生成相应的调度流程,介绍下流程相关的一些配置。
首先如何创建一个ods流程,在ESB设计器中新建调度流程,选择http请求响应消息流程,之后选择业务源数据同步,点击next,点击刷新就会出现业务系统到ods的调度流程。具体如下:
选择对应流程后就会生成相对应的数据调度流程,接下来我们需要找到我们需要修改的节点,一个同步时间、一个读取、一个插入三个节点我们需要进行手动操作,如下:
首先需要调整的就是数据源,需要调整为对应的库,业务系统选择业务系统库,ods选择ods库,如下:
接下来选择唯一字段为该表id,并配置相应的映射关系,插入字段节点道理相同配置好像对的映射关系即可,以上是在ods中调度选择对比字段的相应调整,下面是选择时间戳的对应样式,我们可以看到流程中会出现相应的变化,如下:
这里我们需要在查询源数据记录节点配置对应的sql语句,其他的操作与对比字段模式相同,就不再重复说明了。以上是两种不同ods调度的调度流程以及相关配置。
下面我们介绍一下维表的流程创建,在ESB设计器中新建调度流程,选择http请求响应消息流程,之后选择维度表加工处理,点击next,点击刷新就会出现业务系统到ods的调度流程,具体如下:
接下来就会生成维表相关的流程,具体的流程样式,如下:
这里我们需要修改上面上个节点,同样的道理时间节点需要调整数据源、查询汇总数据节点需要调整数据源,调整对应的sql、调整映射、数据插入节点需要配置唯一字段和映射。
接下来我们来介绍下事实表的流程创建,在ESB设计器中新建调度流程,选择http请求响应消息流程,之后选择事实表加工汇总,点击next,点击刷新就会出现ods到事实表的调度流程。
接下来就会出现相对应的事实表流程,样式如下:
这里我们需要修改上面上个节点,同样的道理时间节点需要调整数据源、查询汇总数据节点需要调整数据源,调整对应的sql、调整映射、数据插入节点需要配置唯一字段和映射。
上面介绍了esb相对应数据调度流程创建,下面我们对DAP上面相对应功能完善进行介绍。
首先,最主要的功能就是执行调整,我们ods类型的调度存在时间戳和对比字段的流程我们需要改变执行,无论什么类型都要输入时间的设定,因此当你设置ods为对比字段时,将不会在出现输入时间的页面,如下:
接下来对,对明细页面进行调整,明细页面添加对应的目标编码,编码为目标数据数据表,同时设置相应的时间间隔,同时在页面中添加对应的数据预览功能,具体样式如下:
调整后我们可以在DAP端看到流程执行后的相关数据,并能在数据预览明细页面设置相对应的数据条数,具体样式如下:
调度任务的调整主要在明细页面,首先在明细拓展触发机制为多选并拓展相应的事件触发机制,会制动生成对应的接口地址,具体样式如下:
接下来在添加资源处拓展快速添加,可以根据不同的模型中配置的维表、事实表以及相关的ods,存在资源则会被一起添加到添加资源的下拉框中,快速添加弹窗的页面如下:
之后,我们拓展的是任务相关的目标资源表格,现在已经执行过的任务,可以在下面看到流程相关的目标资源名称编码,可以进行数据预览。
以上是相关的任务调度的改造。
调度日志的改造主要就是接口中相对应的数据读取,进行调整,当我们通过资源自行的调度资源会回写对应的数据到调度资源中默认任务名称为“资源执行”,正常任务执行的调度就会被显示为对应的调度任务名称,具体的样式如下:
明细页面中调整了部分数据的读取方式,并没有做出太多样式上的调整,具体的样式如下:
以上是本次对数据调度模块的完善内容。
接下来我们对创建的流程在相应组件上面进行使用,来展示一下我们数据调度功能起到的作用,我们在DAP大屏中通过组件的刷新可,以来感受下从业务系统到数仓的数据变化,首先我们介绍下该过程的配置,首先我们创建使用的ods表,在表中添加相应的数据,之后我们在维表或是事实表中创建使用的维表、事实表,并在明细页面的来源表中选择我们刚刚创建的ods表,如下:
接下来我们在模型中将上面的过程配置到一个模型上,方便我们在调度任务中快速通过模型拉取相应已创建的调度资源,如下:
接下来,我们就可以通过上文介绍的创建流程方式进行流程创建,创建后我们可以通过调度任务中的快速添加,通过模型加入资源,如下:
接下来我们在数据集和立方体选择相应的数据集、立方体关联我们在上面创建的模型并选择相应的字段,具体如下:
接下来我们可以在相应的导航管理配置页面的组件上,选择已经配置好的数据集或是立方体,到此整个调用的过程就配置结束了。下面是组件配置数据集或是立方体的页面,如下:
记下来,展示相应的效果,我们通过DAP导航管理功能进入相应的大屏页面,如下:
同步结束后,数据就会同业务系统的数据表中保持一致,如图:
下面我们对本次数据调度相关的完善问题做一个总结,首先是接口相关问题的调整,接下来实在制作功能时出现的问题。
接口部分的调整首先改造了调度出现的策略,现在在设计器中已经选择过的流程将不再二次出现在流程创建列表,这是一个简单的去重操作,就不再详细介绍了,接下来调整部分数据的读取,例如在日志中添加任务id的获取,具体代码如下:
上面是对任务ID获取方式的增加,model对象为在esb中创建获取,在对象中通过set和get方法获取对应ID,其他数据获取方式相同,这里不再赘述。
接下来就是关于流程资源的结束时间获取,在创建流程资源的时候数据库中存在资源的开始和结束时间,我们的开始时间,是在按下执行按钮的方法中获取到的,而当esb流程执行结束后,调用接口在日志接口中获取的时间,即可被看做该流程的结束时间。
下面我们来说下在研发过程中遇到的基础常见问题。
第一,在执行调度资源时带有时间参数的调度资源执行失效。
第二,在执行调度任务的时候,执行正常,但却只有业务系统到ods的流程起效,ods到数仓的流程并未起到相应效果。
以上就是本次在完善功能时出现的两个执行流程相关的问题,那么接下来我们来分析一下这两个流程相关的问题,并给出对应的解决方式。
下面我们对上述两个流程执行的问题进行一下,分析原因并给出对应的解决方案,首先在执行调度资源时带有时间参数的调度资源执行失效。我们可以很清楚的看到带有时间参数,所以很明显这里的问题就是出现在时间参数上,我们在esb调用流程是时间参数,应该带有对应的格式,具体的处理办法如下:
接下来我们处理第二个问题,在执行的过程中如果业务系统到ods,但ods到数仓并不好使,这里很有可能出现一个顺序问题,当数据应该是从业务系统为起点,但当ods到数仓先执行,那么ods数据表中应该并没有数据,而执行两一个包含起点的流程,则生效,由此找到了问题的原由,我们就可以给出相应的办法,首先找到对应的代码位置。
可以看到这是一个查询查到的资源,因此我们需要一个排序字段来排流程对应的顺序,那么问题就可以得到解决。
在进行调度资源完善的过程中,发现了自身的一些不足之处并提升了研发经验,下面将本次工作中的心得体会进行分享。
首先,自己本次的研发过程花费的时间较长,主要是因为自己并没有把公司内的产品串联起来使用明白,对于自己负责外的其他产品掌握得还不够深入,导致自己研发效率并不是很高。今后要培养自己的全局思维,不能仅仅只局限于自己的产品中,要高效完成研发任务对产品和业务的理解是十分必要的,同时自己的编程思维不够开阔,并不能很好的把产品的所有功能串联起来,总结来说就是对产品的了解不足,需要提升对公司的产品认知。
在研发上,自己更多的问题在于掌握的不够牢靠,自己日常处理代码,处理得比较顺手,像本次处理的接口,由于之前很少进行接口开发,自己在处理代码时出现了很多不懂的方面,经验有所欠缺,需要自己在接下来的研发工作中付出足够的努力去吸收经验让自己快速成长,同时自己知识掌握不足,导致效率不高,需要多多利用业余时间提升自己的知识储备量,让自己尽快成熟起来。
在本次研发中,发现自己研发能力还有需要提升的地方,知识储备永远都是硬伤,只有不断完善自己才能提高研发能力,提升研发效率。同时自己对产品的了解不是很全面,很多地方很难一次了解全,需要不断的请教这样大大的耽误了自己和他人的研发效率,并且公司内产品的组合使用也并不是很熟练,在接下来学习自己负责的产品的同时也要不断的学习公司其他产品,学习对应的解决方案,不能只局限于自己的研发工作。
在今后的研发生活中,不断改变提升自己,在这次工作中的不足和缺点也要即使的进行弥补,快速提升自己的研发效率,提升自己的同时也能为自己的团队和公司创造更多的价值。