Path: blob/master/site/pt-br/io/tutorials/postgresql.ipynb
25118 views
Copyright 2020 The TensorFlow IO Authors.
Leitura de banco de dados PostgreSQL pelo TensorFlow IO
Visão geral
Este tutorial mostra como criar um tf.data.Dataset
a partir de um servidor de banco de dados PostgreSQL de forma que o Dataset
criado possa ser passado ao tf.keras
para treinamento e inferência.
Bancos de dado SQL são uma fonte de dados importante para cientistas de dados. Por ser um dos bancos de dados SQL de código aberto mais populares, o PostgreSQL é amplamente usado em empresas para armazenar dados críticos e transacionais. Criar um Dataset
a partir de um servidor de banco de dados PostgreSQL diretamente e passar o Dataset
ao tf.keras
para treinamento e inferência pode simplificar bastante o pipeline da dados e ajudar os cientistas de dados a se concentrarem em criar modelos de aprendizado de máquina.
Configuração e uso
Instale os pacotes tensorflow-io necessários e reinicie o runtime
Instale e configure o PostgreSQL (opcional)
Atenção: este notebook foi criado para execução somente no Google Colab. Ele instala pacotes no sistema e requer acesso sudo. Se você quiser executar em um notebook Jupyter local, prossiga com cautela.
Para demonstrar o uso no Google Colab, você instalará o servidor PostgreSQL. Também serão necessários a senha e um banco de dados vazio.
Se você não estiver executando este notebook no Google Colab ou se preferir usar um banco de dados existente, pule a configuração abaixo e avance para a próxima seção.
Configure as variáveis de ambiente necessárias
As variáveis de ambiente abaixo são baseadas na configuração do PostgreSQL da última seção. Se você tiver uma configuração diferente ou se estiver utilizando um banco de dados existente, altere as variáveis conforme necessário:
Prepare os dados no servidor PostgreSQL
Para fins de demonstração deste tutorial, você vai criar um banco de dados e preenchê-lo com alguns dados. Os dados usados no tutorial são do dataset Air Quality (qualidade do ar), disponível no Repositório de aprendizado de máquina da UCI.
Veja abaixo uma prévia de um subconjunto do dataset Air Quality:
Data | Horário | CO(GT) | PT08.S1(CO) | NMHC(GT) | C6H6(GT) | PT08.S2(NMHC) | NOx(GT) | PT08.S3(NOx) | NO2(GT) | PT08.S4(NO2) | PT08.S5(O3) | T | UR | UA |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10/03/2004 | 18.00.00 | 2,6 | 1360 | 150 | 11,9 | 1046 | 166 | 1056 | 113 | 1692 | 1268 | 13,6 | 48,9 | 0,7578 |
10/03/2004 | 19.00.00 | 2 | 1292 | 112 | 9,4 | 955 | 103 | 1174 | 92 | 1559 | 972 | 13,3 | 47,7 | 0,7255 |
10/03/2004 | 20.00.00 | 2,2 | 1402 | 88 | 9,0 | 939 | 131 | 1140 | 114 | 1555 | 1074 | 11,9 | 54,0 | 0,7502 |
10/03/2004 | 21.00.00 | 2,2 | 1376 | 80 | 9,2 | 948 | 172 | 1092 | 122 | 1584 | 1203 | 11,0 | 60,0 | 0,7867 |
10/03/2004 | 22.00.00 | 1,6 | 1272 | 51 | 6,5 | 836 | 131 | 1205 | 116 | 1490 | 1110 | 11,2 | 59,6 | 0,7888 |
Confira mais informações sobre o dataset Air Quality e o Repositório de aprendizado de máquina da UCI na seção Referências.
Para ajudar a simplificar a preparação dos dados, preparamos uma versão em SQL do dataset Air Quality, disponível como AirQualityUCI.sql.
A declaração para criar a tabela é:
Veja os comandos completos para criar a tabela no banco de dados e preencher com os dados:
Crie um dataset a partir do servidor PostgreSQL e utilize-o no TensorFlow
Criar um dataset a partir do servidor PostgreSQL é fácil, basta chamar tfio.experimental.IODataset.from_sql
com os argumentos query
(consulta) e endpoint
. query
é a consulta SQL para selecionar colunas nas tabelas, e endpoint
é o endereço e nome do banco de dados:
Como podemos ver na saída de dataset.element_spec
acima, o elemento do Dataset
criado é um objeto dict (dicionário) do Python, com nomes de colunas da tabela do banco de dados usadas como chaves. É muito simples aplicar outras operações. Por exemplo, você pode selecionar tanto o campo nox
quanto o campo no2
do Dataset
e calcular a diferença:
Agora, o Dataset
criado está pronto para ser passado ao tf.keras
diretamente para treinamento ou inferência.
Referências
Dua, D. e Graff, C. (2019). Repositório de aprendizado de máquina da UCI [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
S. De Vito, E. Massera, M. Piga, L. Martinotto, G. Di Francia, On field calibration of an electronic nose for benzene estimation in an urban pollution monitoring scenario, Sensors and Actuators B: Chemical, volume 129, edição 2, 22 de fevereiro de 2008, páginas 750-757, ISSN 0925-4005 (Calibração em campo de um nariz eletrônico para estimativa de benzeno em um cenário de monitoramento de poluição urbana)