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

前言

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

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

设计

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

项目目录结构为如下:

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脚本,也能更好的进行自主开发。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,389评论 25 707
  • 我讨厌恶心这样的自己不甘现状却又无能为力不愿接受却又不敢反抗三分钟热度 脾气又差又暴躁什么都不行不完美却什么都想要...
  • ​秋高气爽,哺乳动物又到了一年一度的繁殖的季节了。 啊呸 又到了一年一度躁动的季节了 踏马在去日本路上,小皮鞭甩起...
    踏马在野路子上阅读 508评论 0 1
  • 1.频繁参加英语角、多跟老外交流,会有质的提升——是个伪命题?!提升的前提是,你有一定的外语知识储备,才会有真正的...
    無比阅读 277评论 0 0