Cotação do dólar automática pelo Banco Central no Power Query

Power BI · 6 min de leitura

Em resumo

Para trazer a cotação do dólar automaticamente para o Power BI, gere o link da série no portal de dados do Banco Central, importe-o como fonte Web e troque a data final fixa por uma consulta que calcula a data de hoje. Assim o histórico cresce sozinho a cada atualização.

Cotação do dólar automática pelo Banco Central no Power Query

Copiar a cotação do dólar de um site todo dia e colar na planilha é o tipo de tarefa que ninguém deveria fazer manualmente. O Banco Central disponibiliza essas cotações por uma API gratuita, e o Power Query consegue buscá-las sozinho. Com um ajuste simples, a consulta passa a trazer até a data de hoje a cada atualização, sem você mexer em nada.

Neste guia você vai montar o link da API do Banco Central, importar as cotações no Power BI e tornar a data final dinâmica, para o histórico crescer automaticamente todos os dias.

Caso prefira aprender por vídeo, veja o vídeo abaixo:

O que você vai aprender

  • O que é uma API e onde fica a do Banco Central;
  • Como gerar o link da cotação do dólar por período;
  • Como importar os dados com Obter Dados > Web;
  • Como criar uma consulta com a data de hoje e usá-la no link;
  • Como tratar as colunas e conferir a atualização no dia seguinte.

O material da aula, um arquivo de texto com todos os links e códigos usados, está disponível para download logo abaixo do vídeo.

O que é uma API (de forma simples)

Uma API é um endereço que um sistema disponibiliza para que outros programas busquem informações. Em vez de abrir um site e ler a tabela, o Power BI chama o endereço e recebe os dados prontos, em formato estruturado (JSON). O Banco Central mantém um portal de dados abertos com várias APIs, entre elas a do dólar comercial (PTAX), com cotações de compra e venda.

Passo 1: gerar o link no portal do Banco Central

  1. Pesquise no Google por API Banco Central dólar comercial e abra o resultado "Dólar comercial (venda e compra)", do portal de dados abertos do BCB (o endereço começa com olinda.bcb.gov.br);
  2. Entre os recursos disponíveis, escolha Cotação do dólar por período;
  3. Preencha a data inicial (no vídeo, 01/01/2018) e a data final (o dia de hoje);
  4. Em campos, marque cotacaoCompra, cotacaoVenda e dataHoraCotacao;
  5. Em Máximo, coloque 10000 (o limite de registros por consulta);
  6. Deixe o formato de saída como JSON e clique em Copiar URL.

Atenção ao formato da data: o formulário usa o padrão americano, mês-dia-ano. 17 de setembro é 09-17-2024; se você digitar 17-09-2024, a consulta vem vazia.

Se quiser conferir antes, clique em Executar: a página mostra a tabela de cotações.

Passo 2: importar no Power BI

  1. No Power BI Desktop, clique em Obter Dados > Web;
  2. Cole a URL copiada e clique em OK;
  3. Se pedir o tipo de acesso, escolha Anônimo e conecte. Se aparecer uma lista de níveis do link, escolha o último e dê OK;
  4. No Power Query, a lista de cotações é convertida em tabela e expandida nas colunas de compra, venda e data/hora.

O problema: a data final está fixa

Clique na etapa Fonte, em Etapas Aplicadas, e veja a URL: a data final está escrita no link. Amanhã, a consulta continuará trazendo só até aquela data. Para o histórico crescer sozinho, a data final precisa ser sempre o dia de hoje.

Passo 3: criar a consulta com a data de hoje

  1. No painel de consultas, clique com o botão direito em uma área vazia e vá em Nova Consulta > Consulta Nula;
  2. Na barra de fórmulas, cole o código abaixo e dê Enter;
  3. Renomeie a consulta para DataHora.
= Date.ToText(Date.From(DateTime.LocalNow()), [Format = "MM-dd-yyyy"])

DateTime.LocalNow() pega a data e hora atuais; Date.From fica só com a data; e Date.ToText transforma em texto no formato que a API exige (mês-dia-ano). O resultado é algo como 09-17-2024, e muda sozinho a cada dia.

Passo 4: usar a DataHora no link

Volte à consulta das cotações, clique na etapa Fonte e substitua a data final fixa pela consulta DataHora, concatenando com &:

= Json.Document(Web.Contents("https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)?@dataInicial='01-01-2018'&@dataFinalCotacao='" & DataHora & "'&$top=10000&$format=json&$select=cotacaoCompra,cotacaoVenda,dataHoraCotacao"))

Dê Enter e vá até a última etapa: se não aparecer erro, a ligação funcionou.

Passo 5: tratar as colunas e carregar

  • Remova a coluna que não será usada (a primeira, com o identificador do registro, no exemplo);
  • Renomeie as colunas para Valor de compra, Valor de venda e Data e hora da cotação;
  • Mova a data para o início (botão direito > Mover > Para o Início);
  • Confira os tipos: números decimais para os valores e data/hora para a cotação;
  • Renomeie a consulta para algo como fCotacoes e clique em Fechar e Aplicar.

Conferindo no dia seguinte

No vídeo, a consulta foi criada num dia 17 e trazia cotações até o dia 17. No dia seguinte, bastou clicar em Atualizar: a cotação do dia 18 apareceu no fim da tabela, sem nenhuma alteração na consulta.

Lembre que a PTAX só existe em dias úteis: fins de semana e feriados não têm cotação. Se você precisar de um valor por dia do calendário, relacione com uma tabela calendário e use a última cotação disponível.

Ideias de uso

  • Converter vendas ou custos em dólar para reais pela cotação do dia da transação;
  • Acompanhar a variação do câmbio num gráfico de linhas, com média móvel;
  • Simular cenários de importação e exportação com a cotação mais recente;
  • Outras moedas: a mesma API tem cotações de euro, libra e outras, no recurso de cotação por moeda.

Dica para atualizar no Power BI Service

Ao publicar o relatório e agendar a atualização no Service, URLs montadas com concatenação às vezes são tratadas como "fonte dinâmica" e bloqueiam o agendamento. Se isso acontecer, mantenha a parte fixa do endereço como base e passe o resto pelas opções RelativePath e Query do Web.Contents:

= Json.Document(Web.Contents(
    "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/",
    [
        RelativePath = "CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)",
        Query = [
            #"@dataInicial" = "'01-01-2018'",
            #"@dataFinalCotacao" = "'" & DataHora & "'",
            #"$top" = "10000",
            #"$format" = "json",
            #"$select" = "cotacaoCompra,cotacaoVenda,dataHoraCotacao"
        ]
    ]
))

Perguntas frequentes

A API do Banco Central é gratuita?

Sim. Os dados fazem parte do portal de dados abertos do BCB e não exigem cadastro nem chave.

Por que a consulta voltou vazia?

Quase sempre é o formato da data. A API espera mês-dia-ano (MM-dd-yyyy).

Por que não aparece cotação no sábado?

A PTAX é divulgada apenas em dias úteis.

Funciona no Excel?

Sim. O Power Query do Excel (Dados > Obter Dados > De Outras Fontes > Da Web) aceita os mesmos passos e o mesmo código.

Conclusão

Com a API do Banco Central e uma consulta que calcula a data de hoje, a cotação do dólar entra no Power BI sozinha e o histórico cresce a cada atualização. Baixe o arquivo de texto com os links e códigos da aula e monte a sua consulta. Para avançar nos cálculos com essas cotações, veja o minicurso gratuito de fórmulas DAX.

Bons estudos e até o próximo conteúdo! 🚀

Quer dominar o Power BI do básico ao avançado? Conheça o curso de Power BI online da Atuar: 245 aulas, certificado e monitoria 24h com IA.

Continue aprendendo