Extrair

Introdução à Engenharia de Dados

Vincent Vankrunkelsven

Data Engineer, DataCamp

Extraindo dados: o que isso significa?

Diagrama representando a fase simples de extração

Introdução à Engenharia de Dados

Extrair de arquivos de texto

Não estruturado

  • Texto simples
  • Ex.: capítulo de um livro

 

Call me Ishmael. Some years ago, never 
mind how long precisely, having little or
no money in my purse, and nothing particular
to interest me on shore, I thought ....

Arquivos flat

  • Linha = registro
  • Coluna = atributo
  • Ex.: .tsv ou .csv

 

Year,Make,Model,Price
1997,Ford,E350,3000.00
1999,Chevy,"Venture Extended Edition",4900.00
1999,Chevy,"Venture Extended Edition",5000.00
1996,Jeep,Grand Cherokee,4799.00
Introdução à Engenharia de Dados

JSON

  • JavaScript Object Notation
  • Semiestruturado
  • Atômico
    • number
    • string
    • boolean
    • null
  • Composto
    • array
    • object
{
  "an_object": {
    "nested": [
      "one",
      "two",
      "three",
      {
        "key": "four"
      }
    ]
  }
}
import json

result = json.loads('{"key_1": "value_1", "key_2":"value_2"}') print(result["key_1"])
value_1
Introdução à Engenharia de Dados

Dados na Web

Requisições

Diagrama representando o modelo de requisição-resposta

Exemplo

  1. Acessar o Google
  2. Requisição ao servidor do Google
  3. Google responde com a página
Introdução à Engenharia de Dados

Dados na Web via APIs

  • Enviar dados em formato JSON
  • API: interface de programação de aplicações
  • Exemplos
    • GitHub API
{ "login": "datacamp", "type": "Organization", "created_at": "2013-05-14T13:01:20Z" }
  • Hackernews API
import requests

response = requests.get("https://hacker-news.firebaseio.com/v0/item/16222426.json") print(response.json())
{'by': 'neis', 'descendants': 0, 'id': 16222426, 'score': 17, 'time': 1516800333, 'title': .... }
Introdução à Engenharia de Dados

Dados em bancos de dados

Bancos de dados de aplicações

  • Transações
  • Inserções ou alterações
  • OLTP
  • Orientados a linhas

Bancos de dados analíticos

  • OLAP
  • Orientados a colunas
Introdução à Engenharia de Dados

Extração de bancos de dados

String/URI de conexão

postgresql://[user[:password]@][host][:port]

Uso em Python

import sqlalchemy
connection_uri = "postgresql://repl:password@localhost:5432/pagila" 
db_engine = sqlalchemy.create_engine(connection_uri)

import pandas as pd pd.read_sql("SELECT * FROM customer", db_engine)
Introdução à Engenharia de Dados

Vamos praticar!

Introdução à Engenharia de Dados

Preparing Video For Download...