การแยกข้อมูลที่ไม่ใช่ตาราง

ETL และ ELT ด้วย Python

Jake Roach

Data Engineer

การแยกข้อมูลที่ไม่ใช่ตาราง

ETL pipeline โดยไฮไลต์ส่วน extract.

ETL และ ELT ด้วย Python

ประเภทของข้อมูลที่ไม่ใช่ตาราง

ข้อมูลส่วนใหญ่ที่ผลิตและใช้งานเป็นข้อมูลไม่มีโครงสร้าง

  • ข้อความ
  • เสียง
  • รูปภาพ
  • วิดีโอ
  • เชิงพื้นที่
  • IoT

แหล่งข้อมูลไม่มีโครงสร้างที่กำลังผ่านกระบวนการแปลงข้อมูล

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
ETL และ ELT ด้วย Python

การทำงานกับ API และข้อมูล JSON

API (Application Programming Interface)

  • ซอฟต์แวร์ที่อยู่เหนือแหล่งข้อมูล
  • ป้องกันการเข้าถึงฐานข้อมูลโดยตรง

$$

Data engineer ใช้ API เพื่อติดต่อกับฐานข้อมูล

JSON (JavaScript Object Notation)

  • คู่ key-value
  • ไม่มี schema ที่ตายตัว
  • มีรูปแบบคล้ายกับ dictionary
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL และ ELT ด้วย Python

การอ่านไฟล์ JSON ด้วย pandas

{
    "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
ETL และ ELT ด้วย Python

ข้อมูล JSON แบบซ้อนกันหรือไม่มีโครงสร้าง

ข้อมูลไม่ได้พร้อมใช้เป็น DataFrame เสมอไป

  • ออบเจกต์แบบซ้อนกัน
  • "schema" ที่แตกต่างกัน
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
ETL และ ELT ด้วย Python

การอ่านไฟล์ 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'>
ETL และ ELT ด้วย Python

มาฝึกกันเถอะ!

ETL และ ELT ด้วย Python

Preparing Video For Download...