Conectando o Excel aos indicadores da Pesquisa Focus, usando API no Power Query

Como faço alguns trabalhos regulares onde faço projeções financeiras, uma das questões mais levantadas é sobre as correções monetárias com índices como IGP-M, IPCA ou INCC. Normalmente utilizo dados históricos desses índices para simular projeções futuras, mas existe a possibilidade de usar as projeções do boletim FOCUS – Relatório de Mercado, do Banco Central do Brasil.

O relatório é publicado oficialmente em PDF com projeções até 2025 de alguns índices. A ideia principal é extrair esses índices desse relatório. Pesquisando, encontrei as opções de fazer download desses dados em alguns formatos como Json, XML, Texto ou CSV, direto do site de dados abertos do governo, no endereço https://dados.gov.br/dataset/expectativas-mercado.

Para conseguir extrair os dados, escolha a opção API – Navegador de Dados.

Você será levado para a plataforma onde conseguirá gerar o arquivo com essas projeções mensais. Alguns campos você precisará preencher para conseguir gerar sua API de extração dos dados. Então vamos entender cada um deles:

  • Máximo: é a quantidade de dados que serão gerados dentro dessa API. Baseado na ultima data de projeção do relatório, ele trará a quantidade de linhas que preencher nesse campo.
  • Saída: Escolha a opção text/csv, para trabalharmos com ele depois.
  • Campos: Escolha as colunas que serão exportadas no seu arquivo csv.

Seguindo os passos acima, você terá as opções de Copiar o URL gerado automaticamente no campo URL de pesquisa, Baixar csv e Executar. A ultima opção vai te gerar uma visualização logo abaixo na página dos filtros que preencheu.

Vamos clicar em Copiar URL pois iremos utilizar em nosso Excel, para trazer esses dados diretamente do site.

Como utilizar a URL da API no Excel

Abra um arquivo de Excel. Conforme a sua versão do Excel, vá até a guia Dados e procure o submenu Obter e Transformar Dados, e encontre a opção Obter Dados > De Outras Fontes > Da Web.

Cole a URL que copiou no site Dados Abertos, dentro do campo de URL, e clique em OK.

Os dados serão carregados numa visualização do Power Query. Clique em Transformar Dados.

Todos os dados foram carregados e o Power Query Editor, ou Editor do Power Query, será aberto mostrando todos os dados carregados em formato de tabela para nós. É aqui onde toda a mágica acontece, e onde podemos formatar todo nosso arquivo.

Se você clicar dentro do campo Etapas Aplicadas, na etapa Fonte, você verá na guia de fórmulas que a fonte do arquivo é um CSV, e terá a URL que copiamos dentro das aspas e em vermelho. Podemos mudar essa URL a qualquer momento.

Modelando os dados com a Linguagem M

Toda e qualquer base que é carregada dentro do Power Query, pode ser editado e modificado. o campo das Etapas Aplicadas, ficam o registro de toda modificação e modelagem que façamos nessa base. Outra forma de enxergar essas etapas, é abrindo o Editor Avançado, que permite vermos o código na Linguagem M, de forma pura e simples. Não vou me apegar a explicar todas as características, fórmulas e outros assuntos que podem render nessa parte. Apenas siga a etapa para abrir o Editor Avançado: Guia Exibição > Editor Avançado.

Ele irá abrir para você a tela do Editor Avançado, onde teremos todo o script gerado pela conexão a nossa URL da API, e a modelagem que o próprio Excel fez com o Power Query, para trazer essa base original do site dos Dados Abertos. Nós vamos modificar esse script para uma versão nossa.

Copie esse código abaixo. Vá até o Editor Avançado, apague o código existente e cole-o. Depois clique em Concluído.

/*Criado por: Márcio Ferreira dos Santos*/
/*Resolvendo problemas de negócio, utilizando o poder dos dados! E Agora, usando o pode da Linguagem M*/
/*Site:https://oddata.com.br/*/
/* Para mais informações, procure o site de dados abertos no endereço: https://dados.gov.br/dataset/expectativas-mercado*/

/*Utilizando a API de dados abertos Expectativas de Mercado, utilizado no relatório FOCUS*/
/*O Endereço Web onde utilizamos e copiamos essa API foi: https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/aplicacao#!/recursos/ExpectativaMercadoMensais#eyJmb3JtdWxhcmlvIjp7IiRmb3JtYXQiOiJ0ZXh0L2NzdiIsIiR0b3AiOjEwMH0sInByb3ByaWVkYWRlcyI6WzAsMSwyLDMsNCw1LDYsNyw4LDldfQ==*/
/*Essa API traz os dados em serie temporal, ou seja, por mês. Os dados são flutuantes, e podem ser alterados a quantidade de dados pelo parâmetro $top=10000 no script da API.*/
let
    Fonte = Csv.Document(Web.Contents("https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/ExpectativaMercadoMensais?$top=10000&$format=text/csv&$select=Indicador,Data,DataReferencia,Media,Mediana,DesvioPadrao,Minimo,Maximo,numeroRespondentes,baseCalculo"),[Delimiter=",", Columns=10, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Cabeçalhos Promovidos" = Table.PromoteHeaders(Fonte, [PromoteAllScalars=true]),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Cabeçalhos Promovidos",{
        {"DataReferencia", type date},{"Media", type number}, {"Mediana", type number}, {"DesvioPadrao", type number}, 
        {"Minimo", type number}, {"Maximo", type number}, {"numeroRespondentes", type number}, {"baseCalculo", Int64.Type}}),
    #"Ano Inserido" = Table.AddColumn(#"Tipo Alterado", "Ano", each Date.Year([DataReferencia]), Int64.Type),
    #"Mês Inserido" = Table.AddColumn(#"Ano Inserido", "Mês", each Date.ToText([DataReferencia],"MMM/yy"), type text),
	  /*lista de índices que filtramos e não queremos em nossa base*/
		#"Linhas Filtradas" = Table.SelectRows(#"Mês Inserido", 
        each ([Indicador] <> "IPA-DI" 
					and [Indicador] <> "IPA-M" 
					and [Indicador] <> "IPCA Administrados"
          and [Indicador] <> "IPCA Alimentação no domicílio" 
					and [Indicador] <> "IPCA Bens industrializados" 
          and [Indicador] <> "IPCA Livres" 
					and [Indicador] <> "IPCA Serviços" 
					and [Indicador] <> "IPCA-15")
    ),
    #"Colunas Reordenadas" = Table.ReorderColumns(#"Linhas Filtradas",{"Indicador", "Data", "DataReferencia", "Ano", "Mês", "Media", "Mediana", "DesvioPadrao", "Minimo", "Maximo", "numeroRespondentes", "baseCalculo"}),
    #"Linhas Classificadas" = Table.Sort(#"Colunas Reordenadas",{{"DataReferencia", Order.Ascending}})
in
    #"Linhas Classificadas"

Após fazer o processo acima, sua base já ficará formatada com as colunas de valores em formato decimal, e inserida uma coluna de Ano. Essa base já estará filtrada com os indicadores: Câmbio, IGP-M, IPCA e Taxa de Desocupação.

 

 

 

 

Caso queira modificar os indicadores existentes, bastar ir na etapa Linhas Filtradas, e selecionar aqueles que deseja. Caso já tenha conhecimento na Linguagem M, basta acessar o código no Editor Avançado e excluir ou incluir o indicador que deseja.

 

 

 

 

Carregando os dados para o Excel

 

 

Basta clicar em Fechar e Carregar, e ponto! Sua base será carregada para o Excel, pronta para uso e totalmente atualizável!

 

 

 

 

 

 

Para atualizar basta ir na guia Dados > Consultas e Conexões > Atualizar Tudo > Atualizar. Ele trará sempre os ultimos dados atualizados e publicados no site dos dados abertos.

 

 

 

 

Espero que este artigo tenha ajudado!

 

 

Até a próxima dica!

Márcio Ferreira dos Santos

CEO e Fundador da Oddata, Expert em BI & Analytics, Especialista em Planejamento Financeiro e apaixonado por dados.

...