如何按程序员思维写分析师脚本

栏目: IT资讯 · 发布时间: 6年前

内容简介:今天无意在在某群里,看到一个很复杂的SQL脚本,join很多,子查询很多,union很多,case when也很多。然后就让我们负责分析师脚本管理的同事给我看了下我们分析师的脚本,我发现随便一个竟然都超了三四百行。这脚本维护起来应该是个噩梦。如果要让一个东西好维护,好管理,那一定需要项目化,如何项目化一个脚本呢?这个其实很像前端,原先前端就是一个html页面,有html,javascript,css等,然后一开始大家就是在一个页面写完所有逻辑,后面出现了Vue,react等框架,把前端单一页面开发项目化了

前言

今天无意在在某群里,看到一个很复杂的 SQL 脚本,join很多,子查询很多,union很多,case when也很多。然后就让我们负责分析师脚本管理的同事给我看了下我们分析师的脚本,我发现随便一个竟然都超了三四百行。这脚本维护起来应该是个噩梦。如果要让一个东西好维护,好管理,那一定需要项目化,如何项目化一个脚本呢?

这个其实很像前端,原先前端就是一个html页面,有html,javascript,css等,然后一开始大家就是在一个页面写完所有逻辑,后面出现了Vue,react等框架,把前端单一页面开发项目化了。我们知道,表现层的东西是多变的,难以复用的,比如html代码片段就比较难以复用。同样的,SQL具有很强的表达能力,以及比编程语言更低的使用门槛,但是复用难度也是比较大的。不过你愿意,总是可以的。

设计

针对前面的问题,我设计了一套项目体系,可以让分析师以较为结构化和项目化的思维去完成一个脚本的编写。当然,这个是运行在我们内部的Skone系统之上的,底层的DSl语法则是MLSQL,引擎是StreamingPro。

项目目录结构为如下:

如何按 <a href='https://www.codercto.com'>程序员</a> 思维写分析师脚本

image.png

这是A分析师的一个项目目录,叫analyser。 里面分成了四个子目录。

  1. function 可以复用脚本片段,如果分析师还会写python,则包含udf函数。
  2. entity_tables 分析师使用到的落地中间表。
  3. virtual_tables 分析师使用到的虚拟中间表。
  4. job 分析师任务脚本集合,一个job就是完成一个功能点,比如出一张报表。

function

我们先来看function目录:

如何按程序员思维写分析师脚本

image.png

里面包含两种类型的的可复用脚本。第一个是SQL代码片。比如上图里的,我们经常会反复用一个case when,这个时候就可以抽象成一个代码片段。其实说白了就是做了个名字映射。

使用时,可以这样:

如何按程序员思维写分析师脚本

image.png

另外一个就是如果分析师会一些脚本,那么可以整理自己一些常用的函数库。

如何按程序员思维写分析师脚本

image.png

使用时可以这样:

如何按程序员思维写分析师脚本

image.png

virtual_tables

我们知道,在分析师实际写脚本的时,往往为了完成一个结果,会需要产生大量的中间表,不同的job可能会有依赖同一批中间表。virtual_tables目录使得分析师可以统一管理自己的经常使用的中间表。

如何按程序员思维写分析师脚本

image.png

这张图例,就是产生了一张表明为 vistor_count_from_three_channes的表。

job

job 目录则是分析师真正完成工作的地方。通常,分析师会include function/virtual_tables里函数或者表在最终job里使用,比如:

如何按程序员思维写分析师脚本

image.png

这个过程,分析师导入了votes表,shares表,然后union 了他们,最后追加到hive表里。

总结

通过这套体系,强化了分析师们的抽象和复用能力,也简化了脚本复杂度。分析师自己就很方便构建常用的虚拟表集合,对于经常用到的一些处理逻辑,也可以进行很好的封装。而如果分析师熟悉 python 脚本,也能更好的进行自主开发。

我们还可以让分析师把项目一键发送给数仓工程师,让他们完成最后的上线过程。


以上所述就是小编给大家介绍的《如何按程序员思维写分析师脚本》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

视觉链

视觉链

吴佳敏 / 机械工业出版社 / 59.00

这是一部能帮助视觉设计师开悟的著作,由携程网UED视觉高级经理撰写,是她9年互联网视觉设计经验的总结和奉献。 全书从设计师的专业能力、设计方向、设计技巧、设计理念、设计规范5个维度展开,其中前4项可以构成一个完整的视觉设计工作链,在这个链条上每一环都是后面一环的支撑,缺一不可。但是在这个链条之上必须配以设计规范,才能让这个链条更加稳固。因此本章主要分为5章: 第1章:首先介绍了互联网产......一起来看看 《视觉链》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试