高效ETL,如何避开数据处理的深坑?

2019-08-13 21:44:22 SoftEasy 18

# 如何简单方便的进行数仓开发?


      一方面面对爆炸增长的数据量,一方面面对敏捷BI、自助分析,传统数仓建设的缺点导致很多企业在选型BI工具时有诸多顾虑,该如何进行选择?


##数仓的必要性和持续性


      首先我们应该了解当前市场主流的解决方案,但是越来越多的工具重前端展示而忽略背后数据处理,我们不是为了保护数据仓库,而是因为我们不应该怀疑数据仓库的必要性和持续性,尤其是当下前端技术迅猛发展的大背景下,现代化的可视化工具功能越来越强大,自助式分析越来越重要,才将我们关注点引入到可视化效果上来,敏捷开发没有错,自助分析也是必须,但是数据仓库也还是最核心的那一层,承上启下:往下承接各类数据源中的数据,往上支撑各类分析报表,看似矛盾,其实真正需要解决的应该是如何利用敏捷的思想、传统数仓的智慧和经验铺设现代数仓建设之路。


      数据仓库的重要性往往被传统数仓暴露的缺点所掩盖,诸如:开发部署周期长、 缺少统一的开发标准和规范、 跨源数据缺乏一致性、 无法支撑不断增长的数据及变化的需求,现在的BI产品重视前端效果,追求局部的敏捷开发,但是纵观一个完整的BI项目,只有 20% 的时间是在处理开发各种可视化报表,80% 的时间基本上都花在需求梳理、数据清洗治理、ETL 过程、数据仓库的搭建上。因此我们的最终用户,特别是管理层,已经成为信息的诉求者,而不是信息的访问者,这就要求我们利用敏捷思想,加快数据架构/数据基础架构的创建和管理,统一开发和处理规范,快速应对数据增长及需求变更自动构建数据仓库以释放IT资源用于处理更有价值的任务和项目,消除整个BI项目周期中使用不同的工具来进行ETL和数据仓库建模,逐步形成一体化的数据管理平台,最终降低80%的数据仓库构建成本和70%维护成本,成倍加快数据洞察时间。


##如何进行高效数仓开发?

       我们多次听到数据是新石油的说法,其一是强调其价值,还有一个很重要的方面即在使用前是需要对其优化和处理的。试想如果把一个数据仓库工具比作一个数据加工厂用来生产有价值的数据,那么引入一套高效运转的生产设备将会避免重复劳动,加快有价值的数据的产生效率,形成价值数据仓库为最终用户所用,将极大的节省企业成本,成倍加快数据洞察时间,灵活快速应对市场的变化。那么这个高效运转的数据处理工具更应该具有哪些功能呢?


1、**多数据源适配器**


       散落在各源系统中的数据好比原材料,我们需要可以连接到任何数据源并从中提取数据,更应该智能的适配比如:封装市场上流行的源系统如用友、金蝶等ERP或者其他知名CRM等,依据源系统的业务逻辑检索数据,这使您可以比以前更快,更有效地从任何源系统中提取和同步数据,而这一切一步操作打通即可,剩下的交给工具来完成。


2、**多用户协作**


     这意味着更多人可以同时进行数据加工处理工作,并由工具进行协作管控防止冲突,让每个用户自由的签入签出,发挥团队最大化力量。


3、**版本控制**


     利用工具对数据进行加工和处理的历史进行有效控制,可以根据每个版本标识,时间戳以及描述进行统一控制,发生错误时候点击一个按钮轻松进行恢复,在数仓开发过程中做到'有后悔药吃',让您轻松回退至任意一个历史版本。


4、**溯源(血缘分析)**


       如同加工厂产品追溯,我们的可视化报告中的数据也需要进行追溯,这使您可以回答诸如“我正在查看的报告中数据的来源是什么?”和“我在看到这个数据前都经过了哪些加工?”等问题,因此工具必须提供可以从任一节点溯源,并提供直观的数据生命周期的端到端可视化展示。


5、**影响分析 **


      我们无时无刻不在应对变更产生的影响,使用自动化工具,我们可以自动识别数据依赖关系和潜在影响,自动显示变更前后整个数据仓库关联位置的变化情况。


6、**增量加载**


       只需简单设置即可启用增量加载,避免传统方式处理,这节省了时间并有助于优化系统性能,通过仅加载新的和更改的记录,您可以显着减少加载时间,提高系统性能,节省时间,资源,内存,带宽和CPU磁盘空间,并促进更快,更准确的决策。


7、**缓慢渐变**


       数据仓库是要反映历史变化的,跨时间处理维度数据是数据库设计中最棘手的方面之一,通过自动化工具建立自身SCD处理模型,无需关心如何实现,只需要几步配置即可完成,极大的加快处理历史数据跟踪的任务。


8、 **安全**


      自动化工具应该内置的安全功能,您可以识别用户和配置访问权限,并启用对象级和行级安全性。对象级安全性可确保经过身份验证的用户仅访问他们有权查看的数据,表或列。


9、**执行引擎**


       加入智能执行引擎允许您并行执行多个任务,而不是简单的按照顺序执行。工具应该自动记录各个对象的执行时间,并通过此信息不断优化执行顺序,让数据处理执行变得非常快。