Python for Data Engineers’ 的翻译结果是:

数据工程师的Python指南

初学者的高级ETL技术

由Boitumelo在Unsplash上的照片

在这个故事中,我将讲述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)每行数据的超大文件从未如此简单:

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>

生成器