Python for Data Engineers’ 的翻译结果是:
数据工程师的Python指南
初学者的高级ETL技术
在这个故事中,我将讲述Python中的高级数据工程技术。毫无疑问,Python是数据领域最流行的编程语言。在我进行了近12年的数据工程职业生涯中,我遇到了各种代码问题的情况。本故事是我解决这些问题并学会编写更好的代码的简要总结。我将展示一些使我们的ETL更快并帮助改进代码性能的技巧。
列表理解
想象一下,你正在遍历一个表的列表。通常,我们会这样做:
data_pipelines = ['p1','p2','p3']processed_tables = []for table in data_pipelines: processed_tables.append(table)
但是,我们可以使用列表理解。它们不仅更快,而且减少了代码,使其更加简洁:
processed_tables = [table for table in data_pipelines]
例如,遍历包含需要转换(ETL)每行数据的超大文件从未如此简单:
- SalesForce AI推出CodeChain:一种通过一系列自我修订具有代表性子模块的模块化代码生成的创新人工智能框架
- 一支来自德国的研究团队已经开发出DeepMB:一种通过MSOT实现高质量和实时光声成像的深度学习框架
- CMU研究人员推出多模式图学习(MMGL):一种新的人工智能框架,用于捕捉多个多模式邻居之间的关系结构中的信息
def etl(item): # 在这里进行一些数据转换 return json.dumps(item)data = u"\n".join(etl(item) for item in json_data)
列表理解在ETL处理大数据文件时非常有用。想象一下,我们需要将一个数据文件转换为换行符分隔的格式。在Python环境中尝试运行此示例:
import ioimport jsondef etl(item): return json.dumps(item)# 将文本文件加载为blobblob = """ [{"id":"1","first_name":"John"},{"id":"2","first_name":"Mary"}]"""json_data = json.loads(blob)data_str = u"\n".join(etl(item) for item in json_data)print(data_str)data_file = io.BytesIO(data_str.encode())# 此数据文件已准备好作为换行分隔的JSON传递给BigQueryprint(data_file)
输出将是一个换行符分隔的JSON。这是BigQuery数据仓库中数据的标准格式,并且准备好加载到表中:
{"id": "1", "first_name": "John"}{"id": "2", "first_name": "Mary"}<_io.BytesIO object at 0x10c732430>