辗转多个公司,我从与数据打交道的工作中学到了什么?
全文共3103字 , 预计学习时长8分钟
文章插图
图源:unsplash
数据工程是本世纪发展最快的行业之一 。 工作以来 , 笔者在各个公司见识了许多确保数据和代码质量的方法 。 每个公司可能遵循不同的流程和标准 , 但是有一些通用的原则可用于提高开发速度 , 改进代码维护 , 降低数据工作难度 。
1. 函数式编程
笔者学习的第一种编程语言是Java 。 尽管深知面向对象编程与创建可重用类和模块相关的好处 , 但其在处理数据时不便应用 。 两年后 , 笔者偶然发现了R语言——一种函数式编程语言 , 笔者立刻就被它迷住了 。
R语言能够使用dplyr包并简单地通过管道传输函数来转换数据并快速查看结果 , 大大便利了工作 。 但现在 , Python要求将二者结合 , 编写面向对象的模块化脚本 , 同时利用函数式编程 , 这种编程在与R语言中的数据交互时运行良好 。
函数式编程极其适用于处理数据 , 原因就在于几乎任何数据工程任务都可以通过输入数据实现 , 应用一些函数(也就是说 , 实现ETL中的T环节 , 即数据的转换,清洗及加载) , 将其输出加载到某个集中存储库 , 或者用于撰写报告或数据科学用例 。
函数式编程范型在数据工程中非常常见 , 许多博客都写过关于它的文章 。 例如 , 下面链接的文章 , 是Apache气流的创始人马克西姆·博切宁在2018年初发表的:@maximebeauchemin/functional-data-engineering-a-modern-paradigm-for-batch-data-processing-2327ec32c42a
同样地 , 人们已经创建了许多数据工程工具来改善这一过程 。 函数式编程可让创建的代码重用在许多数据工程任务中 。
2. 设计专用型函数
要使函数可重用 , 编写专用型函数是一种很好的实践 。 可以设计主要功能 , 并把不同的部分连接在一起 。 总的来说 , 笔者发现通过使函数缩小应用范围(即专门用于某项任务) , 可以更快地开发代码 , 因为识别和修复单个元素的错误更为容易 。
功能范围更小也使得交换单个组件变得更容易 , 可以将它们像乐高积木一样针对不同的用例组合在一起 。
文章插图
图源:unsplash
3.正确的命名规则至关重要
【辗转多个公司,我从与数据打交道的工作中学到了什么?】将对象进行命名 , 这样其他人查看代码时就可以立即理解你的意图 , 这种做法非常不错 。 但有些缩写可能不是每个人都能理解 , 所以最好避免使用 , 而是选择写出全名 。 我见过的大多数数据工程师倾向于使用以下协议:
· 使用动词作为函数名 , ex. get_dataframe_from_google_ads()可能比google_ads()更容易理解——较长的版本不仅能显示源系统 , 还可指出函数执行的操作和它返回的对象类型(数据框架) 。 它看起来很冗长 , 但通常只需要编写两次:一次是在定义时编写 , 一次是在调用时编写 。 因此 , 笔者认为编写那些较长的函数名是值得的 。
· 大写全局变量——与笔者工作过的大多数数据工程师都将全局变量定义为大写 , 以区别于局部变量(例如主函数中的变量) 。
· 许多人认为最好只在脚本的顶部定义导入——理论上 , 可以在函数或类中导入库 , 但是如果所有的导入都在脚本的顶部 , 那么跟踪包依赖关系可能会更容易 。
理想情况下 , 命名可以使代码自我记录 , 这也可以实现高效编程 。
4. 简洁而高质量的代码更便于维护
通常 , 程序员读代码要比写代码更频繁 。 因此 , 使代码易于阅读和理解是非常重要的 。
通过进行恰当的命名和建立良好的结构 , 我们可以便利个人未来的工作 , 其他人在使用我们代码时也会更容易 。 代码简洁好处多多:编写的代码越少 , 需要维护的代码就越少 。 如果可以用更少的代码完成任务 , 这也是一种潜在的胜利 。
5. 文档是关键 , 但前提是要做得正确
这听起来可能违反直觉 , 但是我们不应该记录代码在做什么;相反 , 我们应该记录为什么代码要做它正在做的事情 , 很多代码注释老在说明一些显而易见的事情 。
文章插图
图源:Reddit
例如 , get_dataframe_from_google_ads()函数不必说明我们正在从谷歌广告下载数据 , 而应说明这样做的原因 , 例如“下载广告支出数据以供稍后的营销成本归因” 。 使用docstring或类型注释来记录函数的预期输入和输出非常有帮助 , 它能立马让你摇身一变成为更好的数据工程师 。
- 自动|碳博士控股子公司推出最新款自动驾驶清扫车
- 公司|LVMH首席数字官跳槽至加密数字钱包公司Ledger
- 余额|中兴通讯:现有资金余额仅能确保公司当前经营规模下现金流安全
- 长庚君|向小米公司致歉
- 账号|“共享会员”公司侵权被告!爱奇艺公司起诉获赔300万
- Store|在BlueMail的App Store反垄断案中 法官作出有利于苹果公司的判决
- 自动驾驶汽车|海外|自动驾驶无法可依?美国多个团体联合发布自动驾驶立法大纲
- 疫情|2021,AI公司将难上加难
- 阿尔法|击败李世石的AI公司,又研发出生物版“阿尔法狗”:破解50年生物学难题
- 退费|女子公众号上买菜,出现问题时已充上万元,公司:我们没有退费规矩