个人简介姓名:Vincent.Z毕业院校:上海对外经贸大学项目经验SUNTECK(尚德)预算项目技术负责人CSI(阿特斯)预算项目技术负责人半岛酒店预算项目报表负责人新世界百货BI项目前端负责人TAKATA(高田)BI项目前端负责人德邦物流BIBI项目产品负责人;模块负责人德邦物流移动BIBI项目产品负责人;项目负责人上海众有科技有限公司SCM的Saas类项目产品部总监2汇报框架1BI工作回顾4下一步计划CUBE问题分析与应对3BI中的时间场景设计2BI工作回顾——工作内容需求收集7个业务小组指标字典需求规格说明1763个指标368份需求规格说明书•347份详细需求规格说明书•21份模块总体需求规格说明书•1份KPI与需求映射关系表•带领梳理1723个KPI指标需求开发数据产生区CRMFSSCFOSSFINFINSFINB19个系统数据。。系统数据OGGETL工具抽取数据仓库数据集市基础层汇总层集市一集市二缓冲层功能展示区战略管理固定报表驾驶舱主题分析指标查询自定义报表•32个FM模型,1763个查询指标•18个MDL模型,18个报表自定义,一期覆盖363个常用指标•Python脚本CUBE维护机制,覆盖所有CUBE(22主题分析+18个自定义报表)•31个集市层存储过程,101张后台数据表4汇报框架1BI工作回顾4下一步计划CUBE问题分析与应对3BI中的时间场景设计252.1、IBM方案问题2、用“当期,累计”做场景选择,使场景选择显得模糊1、用“ALL”表示“全部”;“——”表示“无”从而使时间选择显得模糊3、时间场景在各个页面意义不一致62.1.1、时间场景的特点2.1数据里的时间和场景时间:它可以是一个时点,也可以是一个区间场景:其是数据在时间选项里的补充,和其在一起,合成“时间场景”时间场景72.1、优化后时间场景方案1、根据指标的业务粒度,时间选择到日和月!时间选择清晰2、根据指标的查看模式,用以反馈各指标业务表现!场景选择清楚3、时间定义为截止日,截止月,默认开始时间为年初,月初!全系统时间场景选择意义一致需求设计方案8汇报框架1BI工作回顾4下一步计划CUBE问题分析与应对3BI中的时间场景设计292.1.1、什么是CUBE(多维立方体)2.1BI-CUBE技术简单的说:就是将很多二维表根据其它某个维度(如时间)重叠在一起2.1.2、为什么使用CUBE(多维立方体)1.查询效率快以MDX语言写的算法,在汇总层上的计算效率远远大于关系型数据库SQL语句查询效率2.行业常用方式PICC,中、农、工、建、招商、均以CUBE为做BI分析的数据源。其中农行总行,70%的数据分析建立在CUBE数据源之上!102.4方案地图(IBM方案)Python脚本自定义报表汇总层集市一集市二MDLCUBEMDL主题分析效率低质量低原因:1、数据太多2、管道太小原因:1、行政组织,时间等维度缓慢变化2、Web容器闪断,3、CUBE空刷现象:CUBE的刷新时间太长,超过4小数效率低现象:CUBE刷新时常失败,成功率太低,低于50%以下质量低112.4方案地图(优化后方案)Python脚本1自定义报表汇总层集市一集市二Python脚本2周日周一~周六MDLCUBEPYJBK_MDLPYJ主题分析汇总表存储过程Etl_job_logcube_runn_log问题1:数据为何太多,如何解决分析:抽取表数量多,单表重复抽取,抽取时逻辑判断过多优化方法:在集市层建立存储过程及对应的汇总表,从ETL过程中,将数据及逻辑物理化-----------------------------------问题2:管道为何太小,如何解决分析:一个python脚本承载过多的CUBE执行任务,没有充分利用系统性能优化方法:根据运行时间和依赖模式,将执行任务分类拆分,运用多个python脚本运行122.4方案地图(优化后方案)Python脚本1自定义报表汇总层集市一集市二Python脚本2周日周一~周六MDLCUBEPYJBK_MDLPYJ主题分析汇总表存储过程Etl_job_logcube_runn_log问题1:为何维度会缓慢变化,如何解决分析:由于公司发展行政组织等维度会经常变更,而mdl无法处理缓慢变化维的需求优化方法:使用mdl生成具有容纳缓慢变化维需求的PYJ文件,且写入对cube的相关设置----------------------------------------分析:CUBE增量执行随着时间的递增而出现不稳定现象优化方法:用Python脚本判断运行日期,周一到周六增量刷新,周日全量更新132.4方案地图(优化后方案)Python脚本1自定义报表汇总层集市一集市二Python脚本2周日周一~周六MDLCUBEPYJBK_MDLPYJ主题分析汇总表存储过程Etl_job_logcube_runn_log问题2:为何web容器会中断,如何解决分析:在数据传输中,数据丢失,因为cognos资料库的一张表有不结构数据,从而导致web闪断,而CUBE因此刷新失败优化方法:清空资料库,从新导入。另外通过脚本将log日志分类落到数据库中,监控日志错误,形成新的执行任务回馈到Python调度之中----------------------------------------------------------------问题3:为何CUBE会空刷,如何解决分析:cube定时执行,如果物理表届时未执行完备,将会导致CUBE空刷优化方法:用python脚本不断解读etljob日志,直到监测到etl各表执行成功,python方可启动数据刷新14效率质量优化前优化后每日平均跑数时长4H2H稳定运行率99.95%50%2.5方案结果-直接现象15汇报框架1BI工作回顾4下一步计划CUBE问题分析与应对3BI中的时间场景设计216下一步计划ETL重刷信息回馈增、删、改、查、重刷待优化项1:数据库底层数据重刷了,依赖其的CUBE自动重新刷新待优化项2:作为我们自己的一个待优化项,以后台界面形式维护2个高级开发员SQL+Python2个高级开发员SQL+Python+DPAP15.115.215.414.12DI需求分析Thx!presentbyVincnet.Zifyouhaveanythoughtsaboutbigdataproduct,pleasecontactmebyemailzhanganchun@hotmail.comwecansearchsomebrilliantwaystomakedatamoremeaningfulandmoreinteresting,whichissocooltothesociety