Витягнення нетабличних даних

ETL та ELT у Python

Jake Roach

Data Engineer

Витягнення нетабличних даних

Конвеєр ETL з підсвіченим етапом 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)

  • Програмний шар над джерелами даних
  • Уникає прямої взаємодії з базою даних

$$

Інженер даних працює з базою через API.

JSON (JavaScript Object Notation)

  • Пари ключ–значення
  • Немає фіксованої схеми
  • За виглядом подібний до dict
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL та ELT у Python

Читання JSON-файлів у pandas

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

Використайте функцію .read_json()

# Прочитайте JSON-файл у наведеному форматі
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

  • Вкладені об'єкти
  • Змінна «схема»
{
    "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:
    # Завантажте файл у словник
    raw_stock_data = json.load(file)

# Перевірте тип змінної raw_stock_data
print(type(raw_stock_data))
<class 'dict'>
ETL та ELT у Python

Давайте потренуємось!

ETL та ELT у Python

Preparing Video For Download...