データエンジニアのためのPython
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)するための非常に大きなファイルをループ処理する場合、これまで以上に簡単に行えます:
- 「ラズベリーパイ上でApache Airflowを使用してデータを収集する」
- 『平易な日本語で解説する基本的な10の統計概念』
- 『ダフニーを使用してラストのアルゴリズムを正式に検証するための9つのルール(パート2)』
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles