Descrição:
Este artigo demonstra como enviar dados armazenados no Elipse Plant Manager (EPM) para o Google BigQuery, utilizando um código Python executado pelo EPM Processor e uma conexão ODBC com o BigQuery.
Introdução:
Conforme abordado no artigo “Visualizando dados do EPM no Power BI”, a escolha da ferramenta de análise ideal depende do perfil e necessidade de cada usuário. O Google BigQuery é uma plataforma de análise de dados escalável e pronta para IA, com recursos de Business Intelligence, Machine Learning e análise geoespacial.
Pensando nisso, o usuário pode utilizar essa ferramenta para analisar os dados do EPM e até mesmo combiná-los com dados de outras origens, gerando análises avançadas e indicadores que auxiliam no processo de tomada de decisão.
Diferentemente do Power BI da Microsoft, o Google BigQuery não possui um “gateway” para o carregamento automático de dados na ferramenta. Por isso, para enviarmos dados ao Google BigQuery, é possível utilizar diferentes abordagens. Neste artigo, optaremos por enviar os dados por meio de um código Python executado pelo EPM Processor, que utilizará uma conexão ODBC com o Google BigQuery.
O primeiro passo para a gravação dos dados é ter um projeto criado no Google BigQuery e, nele, criar uma tabela de dados com os campos desejados.
Estrutura da Tabela no BigQuery:
Antes de iniciar a integração, é necessário:
-
Criar um projeto no Google BigQuery;
-
Criar uma tabela com os campos:
-
Name
(STRING – obrigatório): nome da variável ou medida; -
Timestamp
(TIMESTAMP – obrigatório): data e hora da amostragem; -
Quality
(INTEGER – obrigatório): qualidade do dado; -
Value
(FLOAT – obrigatório): valor do dado.
-
Instalando e configurando o driver ODBC:
-
Faça o download e instale o Simba ODBC Driver for Google BigQuery.
-
Acesse Fontes de dados ODBC (64 bits) e crie uma nova fonte:
-
DSN de Usuário (válido para o usuário atual) ou
-
DSN de Sistema (válido para todos os usuários).
-
-
Configure a fonte com os dados do seu projeto BigQuery.
Consulte a documentação oficial do driver Simba para detalhes de instalação e configuração.
Após adicionarmos uma nova fonte de dados, devemos configurá-la, passando as informações de conexão com o nosso projeto no Google BigQuery. Todos os detalhes sobre essa configuração devem ser verificados na documentação do Simba ODBC Driver.
Consultando dados no EPM com o EPM Processor:
Agora, no EPM Processor, devemos criar um algoritmo para consultar os dados do EPM e enviar para o Google BigQuery. Para utilizar o EPM Processor, sugerimos a leitura de artigos disponíveis em nossa base de conhecimento, como “Criando Algoritmos em Python para o EPM Processor”, além da playlist de vídeos sobre o EPM Processor, disponível em nosso canal no YouTube.
Um exemplo de código para consultar dados do EPM pode ser encontrado em nosso repositório no GitHub, onde também estão disponíveis diversos outros exemplos de código:
- #EPM Processor modules
- import epmprocessor as epr
- import epmwebapi as epm
- import datetime
- @epr.applicationMethod('GetHistoryInterpolative')
- def get_history_interpolative(epmdataobject, starttime, endtime, interval_seconds):
- try:
- queryperiod = epm.QueryPeriod(starttime,endtime)
- processInterval = datetime.timedelta(seconds=interval_seconds)
- aggregationdetails = epm.AggregateDetails(processInterval, epm.AggregateType.Interpolative)
- data = epmdataobject.historyReadAggregate(aggregationdetails,queryperiod)
- except:
- raise Exception('Error in read aggregation')
- print(data)
- return epr.ScopeResult(True)
Este código de exemplo serve para consultar os dados de uma variável informada no parâmetro “epmdataobject” no período informado nos parâmetros “starttime” e “endtime”, com intervalo informado no parâmetro “interval_seconds”.
Enviando os dados para o BigQuery:
A partir deste código, é possível expandir e configurá-lo para gravar os dados consultados em uma tabela do Google BigQuery. Abaixo, apresentamos um exemplo de código para essa tarefa:
- import pyodbc
- # Configurar a conexão ODBC
- dsn = 'DSN=dsBigQuery'
- # Conectar ao BigQuery
- conn = pyodbc.connect(dsn)
- cursor = conn.cursor()
- select_table_query = "select * from MyDatasetTest.MyBQTable;"
- cursor.execute(select_table_query)
- conn.commit()
- # Inserção de dados na tabela
- insert_query = "INSERT INTO your_dataset.your_table (Name, Timestamp, Value) VALUES ('Nome da variável ou medida', ?, ?, ?)"
- """
- cursor.executemany(insert_query, data)
- conn.commit()
- # Fechar a conexão
- cursor.close()
- conn.close()
Como pode ser visto, o código é bastante simples e pode ser alterado conforme a necessidade para lidar com diferentes situações.
Automatizando o envio de dados:
O código pode ser configurado no EPM Processor para execução periódica, mantendo a tabela do BigQuery sempre atualizada com novos dados, sem necessidade de intervenção manual.