データエンジニアのためのPython

Python入門:データエンジニアのための基礎ガイド

初心者向けの高度なETL技術

Photo by Boitumelo on 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)# テキストファイルをblobとして読み込むblob = """        [{"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())# このデータファイルはBigQueryのNewline delimited JSONとして準備ができているprint(data_file)

出力はnewline delimited JSONになります。これはBigQueryデータウェアハウスのデータの標準形式であり、テーブルにロードする準備ができています。

{"id": "1", "first_name": "John"}{"id": "2", "first_name": "Mary"}<_io.BytesIO object at 0x10c732430>

ジェネレータ

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more