【要約】GCPで始めるデータエンジニアリング入門①:生データをGCSで受け取ってプロファイリングする [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
データエンジニアは、未知の生データを扱う際、品質や特性が不明であるという課題に直面する。事前の調査なしにパイプラインを構築すると、予期せぬデータ型や欠損値によって処理が停止する恐れがある。
- ・CustomerIDの約37%に及ぶ欠損による、顧客特定不能のリスク。
- ・キャンセル取引に伴うQuantityの負値や、UnitPriceのゼロ値。
- ・土曜日にデータが届かないといった、配信タイミングの不規則性。
// Approach
筆者は、実務に近い連携フローを模し、統計的手法でデータの性質を明らかにする手法を採用している。まず、単一のExcelファイルを日次CSVに分割し、GCSをLanding Zoneとして構築する。
- ・
split_data.pyによる日次ファイルへの分割処理。 - ・
upload_to_gcs.pyを用いたGCSへのアップロード。 - ・
profiling.ipynbによるPandasを用いた統計的プロファイリング。
// Result
本工程により、後続のクレンジング設計に必要な具体的なビジネスルールが抽出された。プロファイリングを通じて、データの欠損や異常値の正体を定量的に特定することに成功している。
- ・CustomerIDの欠損は「ゲスト購入」として扱う方針の策定。
- ・InvoiceNoが'C'で始まる行を「キャンセル取引」と定義。
- ・土曜日のデータ不在を前提とした、パイプラインの耐障害性設計。
Senior Engineer Insight
> Landing Zoneを設ける設計は、データの不変性を担保する上で極めて重要だ。実務では、生データを加工せずそのまま保存する。これにより、ロジック変更時の再処理が容易になる。また、プロファイリングを工程に組み込むことは、開発コストの削減に直結する。データ特性を事前に把握せず実装を進めるのは、設計ミスを誘発するリスクが高い。本記事は、その初歩的な、しかし不可欠な作法を正しく示している。