A Conta Azul lançou uma funcionalidade que, no papel, é ótima para o controle financeiro: a possibilidade de detalhar cada lançamento por categorias e centros de custo. Um único pagamento pode ser rateado em múltiplas categorias, cada uma com seu percentual e centro de custo associado.
Ótimo para o financeiro. Um pesadelo para quem precisa analisar esses dados no Excel ou Power BI.
O problema: quando você exporta o Extrato de Movimentações depois dessa atualização, o arquivo vem com uma explosão de colunas. Cada categoria gera um conjunto de colunas novas. Com dois detalhamentos por lançamento, já são 12 colunas extras. Com quatro, você vai ter mais de 20 colunas repetindo a mesma estrutura — e o arquivo vira um labirinto.
Um arquivo com 201 linhas (apenas 18 linhas a mais que a versão anterior) levou mais de 10 minutos para atualizar no Excel. Para uma base com poucos meses de movimentação. Imagine no acumulado do ano.
Neste artigo você vai ver duas saídas: como tratar esse arquivo via Power Query quando não tem jeito, e como a API do Extrato de Movimentações da Conta Azul resolve isso de forma muito mais limpa.
Por que o relatório virou um caos de colunas
Antes da atualização, o Extrato de Movimentações da Conta Azul tinha uma estrutura simples: uma linha por lançamento, colunas fixas. Fácil de tratar, fácil de importar.
Depois da atualização, a plataforma passou a suportar rateio por categorias e centros de custo. Cada detalhe adicional vira um novo bloco de colunas no arquivo exportado. A lógica segue mais ou menos assim:
- 1 categoria + 1 centro de custo → bloco com 6 colunas extras
- 2 categorias + 2 centros de custo → 12 colunas extras por lançamento
- 4 categorias → 24 colunas extras
O crescimento é linear com o número de detalhamentos — mas como diferentes lançamentos têm quantidades diferentes de categorias, o arquivo precisa ter colunas suficientes para o lançamento com mais detalhes. Resultado: a maioria das linhas fica com colunas vazias, e o arquivo fica enorme e lento.
O formato de exportação da Conta Azul usa o padrão "wide" — cada detalhe adicional vira uma coluna nova. O ideal para análise é o formato "long" — cada detalhe vira uma linha. A transformação entre esses dois formatos é o que você vai fazer agora.
1 Entenda a estrutura do arquivo exportado
Antes de sair aplicando transformações, abra o arquivo e mapeie a estrutura. O padrão que a Conta Azul usa é:
- Colunas fixas no início: Data, Descrição, Valor, Tipo, Conta, etc.
- Depois das colunas fixas: blocos repetidos de colunas para cada detalhe
- Cada bloco tem variações do nome:
Categoria 1,Valor Categoria 1,% Categoria 1,Centro de Custo 1, e assim por diante
Identifique qual é a última coluna fixa e anote o padrão dos nomes das colunas dinâmicas. Isso vai definir a estratégia de tratamento no Power Query.
2 Código Power Query: transformando colunas em linhas
Abra o Power BI Desktop, clique em Obter Dados → Excel e carregue o arquivo exportado da Conta Azul. Depois, abra o Editor do Power Query → Editor Avançado e substitua o código gerado pelo script abaixo.
O script faz quatro coisas: identifica as colunas de categoria e centro de custo dinamicamente, transforma essas colunas em linhas (unpivot), filtra só os registros com valor preenchido e padroniza os tipos de dados.
let
// 1. Carrega o arquivo — ajuste o caminho
Fonte = Excel.Workbook(
File.Contents("C:\Seu\Caminho\extrato-conta-azul.xlsx"),
null, true
),
Plan1 = Fonte{[Item="Plan1", Kind="Sheet"]}[Data],
Cabecalhos = Table.PromoteHeaders(Plan1, [PromoteAllScalars=true]),
// 2. Separa colunas fixas das colunas de categoria/CC
TodasColunas = Table.ColumnNames(Cabecalhos),
ColunasCategoria = List.Select(
TodasColunas,
each Text.Contains(_, "Categoria") or Text.Contains(_, "Centro de Custo")
),
ColunasFijas = List.Difference(TodasColunas, ColunasCategoria),
// 3. Unpivot: transforma colunas de categoria em linhas
Unpivotado = Table.UnpivotOtherColumns(
Cabecalhos,
ColunasFijas,
"Tipo Detalhe",
"Valor Detalhe"
),
// 4. Filtra só registros preenchidos (remove as células vazias)
SemVazios = Table.SelectRows(
Unpivotado,
each [Valor Detalhe] <> null
and [Valor Detalhe] <> ""
and [Valor Detalhe] <> 0
),
// 5. Padroniza tipos das colunas fixas
TiposCorrigidos = Table.TransformColumnTypes(
SemVazios,
{
{"Data", type date},
{"Valor", type number},
{"Tipo Detalhe", type text},
{"Valor Detalhe", type text}
}
)
in
TiposCorrigidos
Os nomes "Categoria" e "Centro de Custo" no filtro do passo 2 precisam bater exatamente com o que está no cabeçalho do seu arquivo. Se a Conta Azul usar nomes ligeiramente diferentes (maiúsculas, acento, espaço), o filtro não vai funcionar. Confira antes de rodar.
3 Separando categorias de centros de custo
Depois do unpivot, você vai ter uma coluna Tipo Detalhe misturando "Categoria 1", "Centro de Custo 1", "% Categoria 1" e afins. Para análise fica melhor separar isso em duas tabelas ou adicionar uma coluna que identifique o tipo.
Adicione uma coluna condicional logo após o passo de unpivot:
// Após a etapa SemVazios:
ComClassificacao = Table.AddColumn(
SemVazios,
"Tipo",
each if Text.Contains([Tipo Detalhe], "Categoria") then "Categoria"
else if Text.Contains([Tipo Detalhe], "Centro de Custo") then "Centro de Custo"
else if Text.Contains([Tipo Detalhe], "%") then "Percentual"
else "Outro",
type text
),
Com isso você consegue filtrar só as linhas de categoria, só os percentuais ou só os centros de custo dependendo do que o seu modelo de dados precisar.
Conecte a Conta Azul direto no Power BI via API
Sem exportar planilha, sem tratar colunas manualmente. A formação Chora API Revolution cobre a API da Conta Azul do zero ao dashboard.
Conhecer a Formação →Por que a API resolve isso em menos de 2 minutos
Tudo que você viu acima funciona. Mas é um workaround — você ainda depende de exportar o arquivo manualmente, arrastá-lo para uma pasta, rodar a atualização e torcer para o Power Query aguentar o peso.
A API do Extrato de Movimentações da Conta Azul retorna os dados já no formato colunar correto. Cada movimento vem com suas categorias e centros de custo já estruturados em arrays — sem a explosão de colunas do arquivo exportado. Você não precisa fazer unpivot porque os dados já chegam no formato certo.
O resultado prático: o mesmo volume de dados que levava mais de 10 minutos para atualizar via Excel fica pronto em menos de 2 minutos via API. E com atualização automática agendada no Power BI — sem precisar abrir nada manualmente.
| Critério | Exportação Excel | API Conta Azul |
|---|---|---|
| Tempo de atualização | +10 min (201 linhas) | < 2 min |
| Intervenção manual | Exportar + mover arquivo | Zero |
| Estrutura dos dados | Colunas explosivas (wide) | Formato colunar (long) |
| Tratamento necessário | Unpivot + validação | Mínimo |
| Refresh automático | Não (arquivo local) | Sim (agendado no Power BI) |
A documentação oficial fica em developers.contaazul.com. O endpoint de movimentações financeiras retorna os dados com paginação e filtros por período — ideal para carregar incrementalmente no Power BI sem buscar tudo sempre.
Resumindo: quando usar cada abordagem
Se você precisa de uma solução rápida para um relatório pontual, o Power Query resolve. O código de unpivot acima é reutilizável e funciona bem enquanto o volume de dados for pequeno.
Se o relatório vai ser recorrente, se o volume cresce com o tempo, ou se você quer um dashboard que atualiza sozinho — a API é o caminho certo. O investimento inicial de configurar a autenticação e montar a query de API se paga já na segunda atualização.
A Conta Azul vai continuar evoluindo o produto e provavelmente vai continuar mudando a estrutura do arquivo exportado. A API, por outro lado, tem versionamento e você só muda quando quiser. É uma dependência muito mais estável para o seu pipeline de dados.
Quer aprender a usar a API da Conta Azul no Power BI?
Conta Azul, Omie, Bling, Open Finance — todos cobertos na formação Chora API Revolution, com n8n e Supabase inclusos.
Ver a Formação →