Todas as coleções
APIs
Configurando Integrações
Configurando a paginação no PowerBI
Configurando a paginação no PowerBI

Nesse artigo, descubra como realizar a configuração no PowerBI para trabalhar com mais de uma página na mesma requisição

Hugo Alves avatar
Escrito por Hugo Alves
Atualizado há mais de uma semana

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

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:

Integração, Chave de Acesso, Credenciais, usuário e senha API, App Key, App Secret
Respondeu à sua pergunta?