O aplicativo Power BI é outra ferramenta que possui uma versão gratuita que você pode utilizar para realizar testes de API's
Para começar, faça o download da versão desktop pelo link:
📌 Pontos Importantes
Esse é apenas um exemplo de código, pois não prestamos suporte às funcionalidades do PowerBI. O tratamento dos dados obtidos deve ser feito pelo desenvolvedor responsável pela integração
A configuração da paginação é uma configuração diferente da apresentada no passo a passo "Configurando o PowerBI", onde são trabalhados conceitos mais básicos da integração com a ferramenta
Caso tenha muitos dados, opte por utilizar filtros. Afinal, o tamanho dos dados tem influência direta no desempenho da integração!
Configurando as credenciais
Após a instalação, abra o aplicativo e clique sobre a opção “Transformar dados” para iniciar o “Power Query Editor”:
Já no Power Query, vamos criar um grupo específico para guardar as nossas credenciais. Para isso, clique com o botão direito no menu esquerdo e depois em "Novo Grupo":
Defina um nome de sua preferência. Aqui no exemplo, vamos preencher com "credenciais":
Por fim, clique em "Ok" para criar a pasta
Com a pasta criada, clique com o botão direito em cima dela e depois em "Novo Parâmetro":
Devemos criar dois parâmetros: "app_key" e "app_secret" conforme as imagens abaixo:
💡 Caso não saiba qual o seu APP_KEY e APP_SECRET você pode obtê-los facilmente: Obtendo a chave de acesso para integração por API
Configurando o método
Com as credenciais já configuradas, vamos deixar parametrizados os métodos que iremos trabalhar, e aqui vai uma dica: se você for trabalhar com mais de um método, ou seja, realizar mais de uma requisição vale a pena dar uma olhada nesse passo a passo abaixo:
Como realizar mais de uma requisição no PowerBI
Pois nele mostramos um exemplo de como configurar os métodos e funções separadamente de cada requisição
Agora, se você for trabalhar com apenas um método, clique com o botão direito do mouse na aba esquerda e depois em "Novo Grupo":
Defina um nome de sua preferência. Aqui no exemplo, vamos utilizar "metodos":
Clique com o botão direito em cima da pasta criada, e depois em "Novo Parâmetro":
📌 Para este primeiro exemplo em específico, trabalharemos com a listagem das contas a receber
A documentação da API pode ser acessada clicando aqui
Outros exemplos de querys podem ser acessados clicando aqui
Devemos criar dois parâmetros: "call"e "relative_path" conforme as imagens abaixo:
Call
Relative_path
Configurando as funções
Clique com o botão direito do mouse na aba esquerda e depois em "Novo Grupo":
Defina um nome de sua preferência. Aqui no exemplo, vamos utilizar "functions":
Clique com o botão direito em cima da pasta criada, e depois em "Nova Consulta" > "Consulta Nula":
Clique novamente com o botão direito em cima da nova consulta criada e realize dois procedimentos:
Renomeie a consulta para: get_body
Ao clicar em "Editor Avançado", cole o seguinte trecho de código:
(page as number) =>
let
Fonte = Json.FromValue ([
call = call,
app_key = app_key,
app_secret = app_secret,
param = {
[
pagina = page,
registros_por_pagina = 20,
apenas_importado_api = "N"
]
}
])
in
Fonte
Com tudo certo, clique em "Concluído"
📌 Nessa função get_body informarmos os parâmetros da requisição, ou seja, eles podem variar de requisição para requisição. Por isso, consulte sempre o site do Developer para entender quais são os parâmetros necessários para a sua requisição!
Você deve realizar o mesmo procedimento de criação de consulta nula na mesma pasta mais duas vezes, com os seguintes nomes e trechos de código:
get_data
(page as number) =>
let
Data=Json.Document(Web.Contents(
"https://app.omie.com.br/api/v1", [
Headers= get_header(),
Content= get_body(page),
RelativePath= relative_path
]))
in
Data
get_header
() => [#"Content-Type"="application/json"]
Configurando a requisição
Com tudo configurado, vamos para o nosso último passo que é fazer a chamada da requisição
Clique com o botão direito na basta "Outras Consultas" e depois em "Nova Consulta" > "Consulta Nula":
Clique com o botão direito na nova consulta criada e depois em "Editor Avançado", e cole o seguinte trecho de código:
let
totalPages = get_data(1)[total_de_paginas],
listOfPages = List.Generate(
() => [ page = 1, conteudo = get_data(1)],
each [page] <= totalPages,
each [page = [page] +1, conteudo = get_data([page] + 1)]
),
#"Convertido para Tabela" = Table.FromList(listOfPages, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Column1 Expandido" = Table.ExpandRecordColumn(#"Convertido para Tabela", "Column1", {"page", "conteudo"}, {"Column1.page", "Column1.conteudo"}),
#"Column1.conteudo Expandido" = Table.ExpandRecordColumn(#"Column1 Expandido", "Column1.conteudo", {"pagina", "total_de_paginas", "registros", "total_de_registros", "conta_receber_cadastro"}, {"Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros", "Column1.conteudo.conta_receber_cadastro"}),
#"Column1.conteudo.conta_receber_cadastro Expandido" = Table.ExpandListColumn(#"Column1.conteudo Expandido", "Column1.conteudo.conta_receber_cadastro"),
#"Column1.conteudo.conta_receber_cadastro Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_receber_cadastro Expandido", "Column1.conteudo.conta_receber_cadastro", {"boleto", "categorias", "codigo_categoria", "codigo_cliente_fornecedor", "codigo_lancamento_integracao", "codigo_lancamento_omie", "codigo_tipo_documento", "codigo_vendedor", "data_emissao", "data_previsao", "data_registro", "data_vencimento", "distribuicao", "id_conta_corrente", "id_origem", "info", "nCodPedido", "numero_documento_fiscal", "numero_parcela", "numero_pedido", "operacao", "retem_cofins", "retem_csll", "retem_inss", "retem_ir", "retem_iss", "retem_pis", "status_titulo", "tipo_agrupamento", "valor_documento", "bloqueado", "bloquear_baixa"}, {"Column1.conteudo.conta_receber_cadastro.boleto", "Column1.conteudo.conta_receber_cadastro.categorias", "Column1.conteudo.conta_receber_cadastro.codigo_categoria", "Column1.conteudo.conta_receber_cadastro.codigo_cliente_fornecedor", "Column1.conteudo.conta_receber_cadastro.codigo_lancamento_integracao", "Column1.conteudo.conta_receber_cadastro.codigo_lancamento_omie", "Column1.conteudo.conta_receber_cadastro.codigo_tipo_documento", "Column1.conteudo.conta_receber_cadastro.codigo_vendedor", "Column1.conteudo.conta_receber_cadastro.data_emissao", "Column1.conteudo.conta_receber_cadastro.data_previsao", "Column1.conteudo.conta_receber_cadastro.data_registro", "Column1.conteudo.conta_receber_cadastro.data_vencimento", "Column1.conteudo.conta_receber_cadastro.distribuicao", "Column1.conteudo.conta_receber_cadastro.id_conta_corrente", "Column1.conteudo.conta_receber_cadastro.id_origem", "Column1.conteudo.conta_receber_cadastro.info", "Column1.conteudo.conta_receber_cadastro.nCodPedido", "Column1.conteudo.conta_receber_cadastro.numero_documento_fiscal", "Column1.conteudo.conta_receber_cadastro.numero_parcela", "Column1.conteudo.conta_receber_cadastro.numero_pedido", "Column1.conteudo.conta_receber_cadastro.operacao", "Column1.conteudo.conta_receber_cadastro.retem_cofins", "Column1.conteudo.conta_receber_cadastro.retem_csll", "Column1.conteudo.conta_receber_cadastro.retem_inss", "Column1.conteudo.conta_receber_cadastro.retem_ir", "Column1.conteudo.conta_receber_cadastro.retem_iss", "Column1.conteudo.conta_receber_cadastro.retem_pis", "Column1.conteudo.conta_receber_cadastro.status_titulo", "Column1.conteudo.conta_receber_cadastro.tipo_agrupamento", "Column1.conteudo.conta_receber_cadastro.valor_documento", "Column1.conteudo.conta_receber_cadastro.bloqueado", "Column1.conteudo.conta_receber_cadastro.bloquear_baixa"}),
#"Column1.conteudo.conta_receber_cadastro.boleto Expandido" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_receber_cadastro Expandido1", "Column1.conteudo.conta_receber_cadastro.boleto", {"cGerado", "cNumBancario", "cNumBoleto", "dDtEmBol", "nPerJuros", "nPerMulta"}, {"Column1.conteudo.conta_receber_cadastro.boleto.cGerado", "Column1.conteudo.conta_receber_cadastro.boleto.cNumBancario", "Column1.conteudo.conta_receber_cadastro.boleto.cNumBoleto", "Column1.conteudo.conta_receber_cadastro.boleto.dDtEmBol", "Column1.conteudo.conta_receber_cadastro.boleto.nPerJuros", "Column1.conteudo.conta_receber_cadastro.boleto.nPerMulta"}),
#"Column1.conteudo.conta_receber_cadastro.categorias Expandido" = Table.ExpandListColumn(#"Column1.conteudo.conta_receber_cadastro.boleto Expandido", "Column1.conteudo.conta_receber_cadastro.categorias"),
#"Column1.conteudo.conta_receber_cadastro.categorias Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_receber_cadastro.categorias Expandido", "Column1.conteudo.conta_receber_cadastro.categorias", {"codigo_categoria", "percentual", "valor"}, {"Column1.conteudo.conta_receber_cadastro.categorias.codigo_categoria", "Column1.conteudo.conta_receber_cadastro.categorias.percentual", "Column1.conteudo.conta_receber_cadastro.categorias.valor"}),
#"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido" = Table.ExpandListColumn(#"Column1.conteudo.conta_receber_cadastro.categorias Expandido1", "Column1.conteudo.conta_receber_cadastro.distribuicao")
in #"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido"
Por fim, clique em "Concluído"
O sistema irá trazer todos os registros de todas as páginas em uma tabela no PowerBI 😉
📌 Confira alguns exemplos de querys do PowerBI com paginação: