非表形式データの抽出

Python で学ぶ ETL と ELT

Jake Roach

Data Engineer

非表形式データの抽出

抽出コンポーネントが強調表示されたETLパイプライン。

Python で学ぶ ETL と ELT

非表形式データの種類

生成・消費されるデータの大半は非構造化データ

  • テキスト
  • 音声
  • 画像
  • 動画
  • 空間データ
  • IoT

変換処理中の非構造化データソース。

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
Python で学ぶ ETL と ELT

APIとJSONデータの操作

API(アプリケーションプログラミングインターフェース)

  • データソースの上位に位置するソフトウェア
  • データベースへの直接アクセスを防止

$$

APIを使用してデータベースにアクセスするデータエンジニア。

JSON(JavaScript Object Notation)

  • キーと値のペア
  • スキーマなし
  • dict(辞書型)に似た構造
{
    "key": "value",
    ...
    "open": 0.121875
}
Python で学ぶ ETL と ELT

pandasでJSONファイルを読み込む

{
    "timestamps": [863703000, 863789400, ...],
    "open": [0.121875, 0.098438, ...],
    "close": [...],
    "volume": [...]
}

.read_json() 関数を使用する

# Read in a JSON file in the format above
raw_stock_data = pd.read_json("raw_stock_data.json", orient="columns")
1 https://pandas.pydata.org/docs/reference/api/pandas.read_json.html
Python で学ぶ ETL と ELT

ネストまたは非構造化JSONデータ

データが常にDataFrame形式とは限らない

  • ネストされたオブジェクト
  • スキーマが不定
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
Python で学ぶ ETL と ELT

jsonでJSONファイルを読み込む

import json

with open("raw_stock_data.json", "r") as file:
    # Load the file into a dictionary
    raw_stock_data = json.load(file)

# Confirm the type of the raw_stock_data variable
print(type(raw_stock_data))
<class 'dict'>
Python で学ぶ ETL と ELT

さあ、練習しましょう!

Python で学ぶ ETL と ELT

Preparing Video For Download...