Extraindo dados não tabulares

ETL e ELT em Python

Jake Roach

Data Engineer

Extraindo dados não tabulares

Pipeline de ETL com o componente de extração destacado.

ETL e ELT em Python

Tipos de dados não tabulares

A maior parte dos dados produzidos e consumidos é não estruturada

  • Texto
  • Áudio
  • Imagem
  • Vídeo
  • Espacial
  • IoT

Fontes de dados não estruturados passando por transformação.

1 https://mitsloan.mit.edu/ideas-made-to-matter/tapping-power-unstructured-data
ETL e ELT em Python

Trabalhando com APIs e dados JSON

API (Application Programming Interface)

  • Software que fica acima das fontes de dados
  • Evita interação direta com o banco de dados

$$

Engenheiro de dados usando uma API para interagir com um banco de dados.

JSON (JavaScript Object Notation)

  • Pares chave-valor
  • Sem esquema fixo
  • Visual e uso similares a dicionários (dict)
{
    "key": "value",
    ...
    "open": 0.121875
}
ETL e ELT em Python

Lendo arquivos JSON com pandas

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

Use a função .read_json()

# Leia um arquivo JSON no formato acima
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 e ELT em Python

JSON aninhado ou não estruturado

Nem sempre os dados estão prontos para DataFrame

  • Objetos aninhados
  • "Esquema" variável
{
    "863703000": {
        "volume": 1443120000,
        "price": {
            "close": 0.09791,
            "open": 0.12187
        }
    }, 
    "863789400": {
        ...
    }, ...
}
ETL e ELT em Python

Lendo JSON com json

import json

with open("raw_stock_data.json", "r") as file:
    # Carrega o arquivo em um dicionário
    raw_stock_data = json.load(file)

# Confirma o tipo da variável raw_stock_data
print(type(raw_stock_data))
<class 'dict'>
ETL e ELT em Python

Vamos praticar!

ETL e ELT em Python

Preparing Video For Download...