Passar para o conteúdo principal
Todas as coleçõesAPIs e WebhooksConfigurando Integrações
Como realizar mais de uma requisição no PowerBI
Como realizar mais de uma requisição no PowerBI

Nesse artigo, descubra realizar mais de uma requisição e para montar o relacionamento entre as tabelas

Diego Pancera avatar
Escrito por Diego Pancera
Atualizado há mais de um ano

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 os parâmetros gerais

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 "parametros_gerais":

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:

E por fim, ainda na mesma pasta, vamos criar uma consulta nula. Para isso, clique com o botão direito do mouse em cima da pasta criada, e depois em "Nova Consulta" > "Consulta Nula":

Clique com o botão direito em cima da consulta criada:

Vamos fazer duas modificações:

  • Renomear para: get_header

  • No campo de editor avançado, informe o seguinte texto:

() => [#"Content-Type"="application/json"]

Configurando as requisições

No exemplo que vamos trabalhar, iremos criar um relacionamento de tabelas no financeiro, ou seja, iremos utilizar as seguintes requisições:

A configuração final deverá ficar da seguinte forma:

Todas as pastas deverão ser criadas conforme o exemplo abaixo:

Copie e cole os seguintes códigos nas consultas nulas:

  • ListarContasReceber

    • body_conta_receber

      (page as number) =>
      let
      Fonte = Json.FromValue ([
      call = "ListarContasReceber",
      app_key = app_key,
      app_secret = app_secret,
      param = {
      [
      pagina = page,
      registros_por_pagina = 20,
      apenas_importado_api = "N"
      ]
      }
      ])
      in
      Fonte

    • data_conta_receber

      (page as number) =>
      let
      Data=Json.Document(Web.Contents(
      "https://app.omie.com.br/api/v1", [
      Headers= get_header(),
      Content= body_conta_receber(page),
      RelativePath= "/financas/contareceber/"
      ]))
      in
      Data

    • request_conta_receber

      let
      totalPages = data_conta_receber(1)[total_de_paginas],
      listOfPages = List.Generate(
      () => [ page = 1, conteudo = data_conta_receber(1)],
      each [page] <= totalPages,
      each [page = [page] +1, conteudo = data_conta_receber([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.info Expandido" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_receber_cadastro.categorias Expandido1", "Column1.conteudo.conta_receber_cadastro.info", {"cImpAPI", "dAlt", "dInc", "hAlt", "hInc", "uAlt", "uInc"}, {"Column1.conteudo.conta_receber_cadastro.info.cImpAPI", "Column1.conteudo.conta_receber_cadastro.info.dAlt", "Column1.conteudo.conta_receber_cadastro.info.dInc", "Column1.conteudo.conta_receber_cadastro.info.hAlt", "Column1.conteudo.conta_receber_cadastro.info.hInc", "Column1.conteudo.conta_receber_cadastro.info.uAlt", "Column1.conteudo.conta_receber_cadastro.info.uInc"}),
      #"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido" = Table.ExpandListColumn(#"Column1.conteudo.conta_receber_cadastro.info Expandido", "Column1.conteudo.conta_receber_cadastro.distribuicao"),
      #"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido", "Column1.conteudo.conta_receber_cadastro.distribuicao", {"cCodDep", "cDesDep", "nPerDep", "nValDep"}, {"Column1.conteudo.conta_receber_cadastro.distribuicao.cCodDep", "Column1.conteudo.conta_receber_cadastro.distribuicao.cDesDep", "Column1.conteudo.conta_receber_cadastro.distribuicao.nPerDep", "Column1.conteudo.conta_receber_cadastro.distribuicao.nValDep"}),
      #"Colunas Removidas" = Table.RemoveColumns(#"Column1.conteudo.conta_receber_cadastro.distribuicao Expandido1",{"Column1.page", "Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros"}),
      #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas",{{"Column1.conteudo.conta_receber_cadastro.codigo_cliente_fornecedor", "Cod_Cliente"}, {"Column1.conteudo.conta_receber_cadastro.id_conta_corrente", "Cod_CC"}}),
      #"Tipo Alterado" = Table.TransformColumnTypes(#"Colunas Renomeadas",{{"Column1.conteudo.conta_receber_cadastro.valor_documento", Currency.Type}})
      in
      #"Tipo Alterado"

  • ListarContasPagar

    • body_conta_pagar

      (page as number) =>
      let
      Fonte = Json.FromValue ([
      call = "ListarContasPagar",
      app_key = app_key,
      app_secret = app_secret,
      param = {
      [
      pagina = page,
      registros_por_pagina = 20,
      apenas_importado_api = "N"
      ]
      }
      ])
      in
      Fonte

    • data_conta_pagar

      (page as number) =>
      let
      Data=Json.Document(Web.Contents(
      "https://app.omie.com.br/api/v1", [
      Headers= get_header(),
      Content= body_conta_pagar(page),
      RelativePath= "/financas/contapagar/"
      ]))
      in
      Data

    • request_conta_pagar

      let
      totalPages = data_conta_pagar(1)[total_de_paginas],
      listOfPages = List.Generate(
      () => [ page = 1, conteudo = data_conta_pagar(1)],
      each [page] <= totalPages,
      each [page = [page] +1, conteudo = data_conta_pagar([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_pagar_cadastro"}, {"Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros", "Column1.conteudo.conta_pagar_cadastro"}),
      #"Column1.conteudo.conta_pagar_cadastro Expandido" = Table.ExpandListColumn(#"Column1.conteudo Expandido", "Column1.conteudo.conta_pagar_cadastro"),
      #"Column1.conteudo.conta_pagar_cadastro Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_pagar_cadastro Expandido", "Column1.conteudo.conta_pagar_cadastro", {"baixa_bloqueada", "bloqueado", "categorias", "codigo_categoria", "codigo_cliente_fornecedor", "codigo_lancamento_integracao", "codigo_lancamento_omie", "codigo_tipo_documento", "data_emissao", "data_entrada", "data_previsao", "data_vencimento", "distribuicao", "id_conta_corrente", "id_origem", "info", "numero_parcela", "retem_cofins", "retem_csll", "retem_inss", "retem_ir", "retem_iss", "retem_pis", "status_titulo", "valor_documento", "numero_documento_fiscal"}, {"Column1.conteudo.conta_pagar_cadastro.baixa_bloqueada", "Column1.conteudo.conta_pagar_cadastro.bloqueado", "Column1.conteudo.conta_pagar_cadastro.categorias", "Column1.conteudo.conta_pagar_cadastro.codigo_categoria", "Column1.conteudo.conta_pagar_cadastro.codigo_cliente_fornecedor", "Column1.conteudo.conta_pagar_cadastro.codigo_lancamento_integracao", "Column1.conteudo.conta_pagar_cadastro.codigo_lancamento_omie", "Column1.conteudo.conta_pagar_cadastro.codigo_tipo_documento", "Column1.conteudo.conta_pagar_cadastro.data_emissao", "Column1.conteudo.conta_pagar_cadastro.data_entrada", "Column1.conteudo.conta_pagar_cadastro.data_previsao", "Column1.conteudo.conta_pagar_cadastro.data_vencimento", "Column1.conteudo.conta_pagar_cadastro.distribuicao", "Column1.conteudo.conta_pagar_cadastro.id_conta_corrente", "Column1.conteudo.conta_pagar_cadastro.id_origem", "Column1.conteudo.conta_pagar_cadastro.info", "Column1.conteudo.conta_pagar_cadastro.numero_parcela", "Column1.conteudo.conta_pagar_cadastro.retem_cofins", "Column1.conteudo.conta_pagar_cadastro.retem_csll", "Column1.conteudo.conta_pagar_cadastro.retem_inss", "Column1.conteudo.conta_pagar_cadastro.retem_ir", "Column1.conteudo.conta_pagar_cadastro.retem_iss", "Column1.conteudo.conta_pagar_cadastro.retem_pis", "Column1.conteudo.conta_pagar_cadastro.status_titulo", "Column1.conteudo.conta_pagar_cadastro.valor_documento", "Column1.conteudo.conta_pagar_cadastro.numero_documento_fiscal"}),
      #"Column1.conteudo.conta_pagar_cadastro.categorias Expandido" = Table.ExpandListColumn(#"Column1.conteudo.conta_pagar_cadastro Expandido1", "Column1.conteudo.conta_pagar_cadastro.categorias"),
      #"Column1.conteudo.conta_pagar_cadastro.categorias Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_pagar_cadastro.categorias Expandido", "Column1.conteudo.conta_pagar_cadastro.categorias", {"codigo_categoria", "percentual", "valor"}, {"Column1.conteudo.conta_pagar_cadastro.categorias.codigo_categoria", "Column1.conteudo.conta_pagar_cadastro.categorias.percentual", "Column1.conteudo.conta_pagar_cadastro.categorias.valor"}),
      #"Column1.conteudo.conta_pagar_cadastro.distribuicao Expandido" = Table.ExpandListColumn(#"Column1.conteudo.conta_pagar_cadastro.categorias Expandido1", "Column1.conteudo.conta_pagar_cadastro.distribuicao"),
      #"Column1.conteudo.conta_pagar_cadastro.info Expandido" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_pagar_cadastro.distribuicao Expandido", "Column1.conteudo.conta_pagar_cadastro.info", {"cImpAPI", "dAlt", "dInc", "hAlt", "hInc", "uAlt", "uInc"}, {"Column1.conteudo.conta_pagar_cadastro.info.cImpAPI", "Column1.conteudo.conta_pagar_cadastro.info.dAlt", "Column1.conteudo.conta_pagar_cadastro.info.dInc", "Column1.conteudo.conta_pagar_cadastro.info.hAlt", "Column1.conteudo.conta_pagar_cadastro.info.hInc", "Column1.conteudo.conta_pagar_cadastro.info.uAlt", "Column1.conteudo.conta_pagar_cadastro.info.uInc"}),
      #"Column1.conteudo.conta_pagar_cadastro.distribuicao Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.conta_pagar_cadastro.info Expandido", "Column1.conteudo.conta_pagar_cadastro.distribuicao", {"cCodDep", "cDesDep", "nPerDep", "nValDep"}, {"Column1.conteudo.conta_pagar_cadastro.distribuicao.cCodDep", "Column1.conteudo.conta_pagar_cadastro.distribuicao.cDesDep", "Column1.conteudo.conta_pagar_cadastro.distribuicao.nPerDep", "Column1.conteudo.conta_pagar_cadastro.distribuicao.nValDep"}),
      #"Colunas Removidas" = Table.RemoveColumns(#"Column1.conteudo.conta_pagar_cadastro.distribuicao Expandido1",{"Column1.page", "Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros"}),
      #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas",{{"Column1.conteudo.conta_pagar_cadastro.codigo_cliente_fornecedor", "Cod_Cliente"}, {"Column1.conteudo.conta_pagar_cadastro.id_conta_corrente", "Cod_CC"}}),
      #"Tipo Alterado" = Table.TransformColumnTypes(#"Colunas Renomeadas",{{"Column1.conteudo.conta_pagar_cadastro.valor_documento", Currency.Type}})
      in #"Tipo Alterado"

  • ListarClientes

    • body_clientes

      (page as number) =>
      let
      Fonte = Json.FromValue ([
      call = "ListarClientes",
      app_key = app_key,
      app_secret = app_secret,
      param = {
      [
      pagina = page,
      registros_por_pagina = 20,
      apenas_importado_api = "N"
      ]
      }
      ])
      in
      Fonte

    • data_clientes

      (page as number) =>
      let
      Data=Json.Document(Web.Contents(
      "https://app.omie.com.br/api/v1", [
      Headers= get_header(),
      Content= body_clientes(page),
      RelativePath= "/geral/clientes/"
      ]))
      in
      Data

    • request_clientes

      let
      totalPages = data_clientes(1)[total_de_paginas],
      listOfPages = List.Generate(
      () => [ page = 1, conteudo = data_clientes(1)],
      each [page] <= totalPages,
      each [page = [page] +1, conteudo = data_clientes([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", "clientes_cadastro"}, {"Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros", "Column1.conteudo.clientes_cadastro"}),
      #"Column1.conteudo.clientes_cadastro Expandido" = Table.ExpandListColumn(#"Column1.conteudo Expandido", "Column1.conteudo.clientes_cadastro"),
      #"Column1.conteudo.clientes_cadastro Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.clientes_cadastro Expandido", "Column1.conteudo.clientes_cadastro", {"bairro", "bloquear_faturamento", "cep", "cidade", "cidade_ibge", "cnpj_cpf", "codigo_cliente_integracao", "codigo_cliente_omie", "codigo_pais", "complemento", "dadosBancarios", "email", "endereco", "enderecoEntrega", "endereco_numero", "estado", "exterior", "inativo", "info", "inscricao_estadual", "inscricao_municipal", "nome_fantasia", "optante_simples_nacional", "pessoa_fisica", "produtor_rural", "razao_social", "recomendacoes", "tags", "bloquear_exclusao", "telefone1_ddd", "telefone1_numero"}, {"Column1.conteudo.clientes_cadastro.bairro", "Column1.conteudo.clientes_cadastro.bloquear_faturamento", "Column1.conteudo.clientes_cadastro.cep", "Column1.conteudo.clientes_cadastro.cidade", "Column1.conteudo.clientes_cadastro.cidade_ibge", "Column1.conteudo.clientes_cadastro.cnpj_cpf", "Column1.conteudo.clientes_cadastro.codigo_cliente_integracao", "Column1.conteudo.clientes_cadastro.codigo_cliente_omie", "Column1.conteudo.clientes_cadastro.codigo_pais", "Column1.conteudo.clientes_cadastro.complemento", "Column1.conteudo.clientes_cadastro.dadosBancarios", "Column1.conteudo.clientes_cadastro.email", "Column1.conteudo.clientes_cadastro.endereco", "Column1.conteudo.clientes_cadastro.enderecoEntrega", "Column1.conteudo.clientes_cadastro.endereco_numero", "Column1.conteudo.clientes_cadastro.estado", "Column1.conteudo.clientes_cadastro.exterior", "Column1.conteudo.clientes_cadastro.inativo", "Column1.conteudo.clientes_cadastro.info", "Column1.conteudo.clientes_cadastro.inscricao_estadual", "Column1.conteudo.clientes_cadastro.inscricao_municipal", "Column1.conteudo.clientes_cadastro.nome_fantasia", "Column1.conteudo.clientes_cadastro.optante_simples_nacional", "Column1.conteudo.clientes_cadastro.pessoa_fisica", "Column1.conteudo.clientes_cadastro.produtor_rural", "Column1.conteudo.clientes_cadastro.razao_social", "Column1.conteudo.clientes_cadastro.recomendacoes", "Column1.conteudo.clientes_cadastro.tags", "Column1.conteudo.clientes_cadastro.bloquear_exclusao", "Column1.conteudo.clientes_cadastro.telefone1_ddd", "Column1.conteudo.clientes_cadastro.telefone1_numero"}),
      #"Colunas Removidas" = Table.RemoveColumns(#"Column1.conteudo.clientes_cadastro Expandido1",{"Column1.page", "Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros"}),
      #"Column1.conteudo.clientes_cadastro.dadosBancarios Expandido" = Table.ExpandRecordColumn(#"Colunas Removidas", "Column1.conteudo.clientes_cadastro.dadosBancarios", {"agencia", "codigo_banco", "conta_corrente", "doc_titular", "nome_titular", "transf_padrao"}, {"Column1.conteudo.clientes_cadastro.dadosBancarios.agencia", "Column1.conteudo.clientes_cadastro.dadosBancarios.codigo_banco", "Column1.conteudo.clientes_cadastro.dadosBancarios.conta_corrente", "Column1.conteudo.clientes_cadastro.dadosBancarios.doc_titular", "Column1.conteudo.clientes_cadastro.dadosBancarios.nome_titular", "Column1.conteudo.clientes_cadastro.dadosBancarios.transf_padrao"}),
      #"Column1.conteudo.clientes_cadastro.info Expandido" = Table.ExpandRecordColumn(#"Column1.conteudo.clientes_cadastro.dadosBancarios Expandido", "Column1.conteudo.clientes_cadastro.info", {"cImpAPI", "dAlt", "dInc", "hAlt", "hInc", "uAlt", "uInc"}, {"Column1.conteudo.clientes_cadastro.info.cImpAPI", "Column1.conteudo.clientes_cadastro.info.dAlt", "Column1.conteudo.clientes_cadastro.info.dInc", "Column1.conteudo.clientes_cadastro.info.hAlt", "Column1.conteudo.clientes_cadastro.info.hInc", "Column1.conteudo.clientes_cadastro.info.uAlt", "Column1.conteudo.clientes_cadastro.info.uInc"}),
      #"Column1.conteudo.clientes_cadastro.recomendacoes Expandido" = Table.ExpandRecordColumn(#"Column1.conteudo.clientes_cadastro.info Expandido", "Column1.conteudo.clientes_cadastro.recomendacoes", {"codigo_transportadora", "codigo_vendedor", "email_fatura", "gerar_boletos"}, {"Column1.conteudo.clientes_cadastro.recomendacoes.codigo_transportadora", "Column1.conteudo.clientes_cadastro.recomendacoes.codigo_vendedor", "Column1.conteudo.clientes_cadastro.recomendacoes.email_fatura", "Column1.conteudo.clientes_cadastro.recomendacoes.gerar_boletos"}),
      #"Column1.conteudo.clientes_cadastro.tags Expandido" = Table.ExpandListColumn(#"Column1.conteudo.clientes_cadastro.recomendacoes Expandido", "Column1.conteudo.clientes_cadastro.tags"),
      #"Column1.conteudo.clientes_cadastro.tags Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.clientes_cadastro.tags Expandido", "Column1.conteudo.clientes_cadastro.tags", {"tag"}, {"Column1.conteudo.clientes_cadastro.tags.tag"}),
      #"Colunas Renomeadas" = Table.RenameColumns(#"Column1.conteudo.clientes_cadastro.tags Expandido1",{{"Column1.conteudo.clientes_cadastro.codigo_cliente_omie", "Cod_Cliente"}}),
      #"Duplicatas Removidas" = Table.Distinct(#"Colunas Renomeadas", {"Cod_Cliente"})
      in #"Duplicatas Removidas"

  • ListarContasCorrente

    • body_cc

      (page as number) =>
      let
      Fonte = Json.FromValue ([
      call = "ListarContasCorrentes",
      app_key = app_key,
      app_secret = app_secret,
      param = {
      [
      pagina = page,
      registros_por_pagina = 20,
      apenas_importado_api = "N"
      ]
      }
      ])
      in
      Fonte

    • data_cc

      (page as number) =>
      let
      Data=Json.Document(Web.Contents(
      "https://app.omie.com.br/api/v1", [
      Headers= get_header(),
      Content= body_cc(page),
      RelativePath= "/geral/contacorrente/"
      ]))
      in
      Data

    • request_cc

      let
      totalPages = data_cc(1)[total_de_paginas],
      listOfPages = List.Generate(
      () => [ page = 1, conteudo = data_cc(1)],
      each [page] <= totalPages,
      each [page = [page] +1, conteudo = data_cc([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", "ListarContasCorrentes"}, {"Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros", "Column1.conteudo.ListarContasCorrentes"}),
      #"Column1.conteudo.ListarContasCorrentes Expandido" = Table.ExpandListColumn(#"Column1.conteudo Expandido", "Column1.conteudo.ListarContasCorrentes"),
      #"Column1.conteudo.ListarContasCorrentes Expandido1" = Table.ExpandRecordColumn(#"Column1.conteudo.ListarContasCorrentes Expandido", "Column1.conteudo.ListarContasCorrentes", {"bloqueado", "bol_instr1", "bol_sn", "cobr_sn", "codigo_banco", "data_alt", "data_inc", "descricao", "hora_alt", "hora_inc", "importado_api", "inativo", "nCodCC", "nao_fluxo", "nao_resumo", "pdv_categoria", "pdv_enviar", "pdv_sincr_analitica", "pix_sn", "saldo_data", "saldo_inicial", "tipo", "tipo_conta_corrente", "user_alt", "user_inc", "cTipoCartao", "pdv_cod_adm", "pdv_dias_venc", "pdv_limite_pacelas", "pdv_num_parcelas", "pdv_taxa_loja", "pdv_tipo_tef"}, {"Column1.conteudo.ListarContasCorrentes.bloqueado", "Column1.conteudo.ListarContasCorrentes.bol_instr1", "Column1.conteudo.ListarContasCorrentes.bol_sn", "Column1.conteudo.ListarContasCorrentes.cobr_sn", "Column1.conteudo.ListarContasCorrentes.codigo_banco", "Column1.conteudo.ListarContasCorrentes.data_alt", "Column1.conteudo.ListarContasCorrentes.data_inc", "Column1.conteudo.ListarContasCorrentes.descricao", "Column1.conteudo.ListarContasCorrentes.hora_alt", "Column1.conteudo.ListarContasCorrentes.hora_inc", "Column1.conteudo.ListarContasCorrentes.importado_api", "Column1.conteudo.ListarContasCorrentes.inativo", "Column1.conteudo.ListarContasCorrentes.nCodCC", "Column1.conteudo.ListarContasCorrentes.nao_fluxo", "Column1.conteudo.ListarContasCorrentes.nao_resumo", "Column1.conteudo.ListarContasCorrentes.pdv_categoria", "Column1.conteudo.ListarContasCorrentes.pdv_enviar", "Column1.conteudo.ListarContasCorrentes.pdv_sincr_analitica", "Column1.conteudo.ListarContasCorrentes.pix_sn", "Column1.conteudo.ListarContasCorrentes.saldo_data", "Column1.conteudo.ListarContasCorrentes.saldo_inicial", "Column1.conteudo.ListarContasCorrentes.tipo", "Column1.conteudo.ListarContasCorrentes.tipo_conta_corrente", "Column1.conteudo.ListarContasCorrentes.user_alt", "Column1.conteudo.ListarContasCorrentes.user_inc", "Column1.conteudo.ListarContasCorrentes.cTipoCartao", "Column1.conteudo.ListarContasCorrentes.pdv_cod_adm", "Column1.conteudo.ListarContasCorrentes.pdv_dias_venc", "Column1.conteudo.ListarContasCorrentes.pdv_limite_pacelas", "Column1.conteudo.ListarContasCorrentes.pdv_num_parcelas", "Column1.conteudo.ListarContasCorrentes.pdv_taxa_loja", "Column1.conteudo.ListarContasCorrentes.pdv_tipo_tef"}),
      #"Colunas Removidas" = Table.RemoveColumns(#"Column1.conteudo.ListarContasCorrentes Expandido1",{"Column1.page", "Column1.conteudo.pagina", "Column1.conteudo.total_de_paginas", "Column1.conteudo.registros", "Column1.conteudo.total_de_registros"}),
      #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas",{{"Column1.conteudo.ListarContasCorrentes.nCodCC", "Cod_CC"}})
      in
      #"Colunas Renomeadas"


Criando o relacionamento entre as tabelas

Com tudo configurado, chegou a hora de criar o relacionamento entre as tabelas! Para isso, no exemplo da requisição acima já foi feito o tratamento para renomear algumas colunas estratégicas:

  • Column1.conteudo.ListarContasCorrentes.nCodCC == Cod_CC

  • Column1.conteudo.clientes_cadastro.codigo_cliente_omie == Cod_Cliente

  • Column1.conteudo.conta_pagar_cadastro.codigo_cliente_fornecedor == Cod_Cliente

  • Column1.conteudo.conta_pagar_cadastro.id_conta_corrente == Cod_CC

  • Column1.conteudo.conta_receber_cadastro.codigo_cliente_fornecedor == Cod_Cliente

  • Column1.conteudo.conta_receber_cadastro.id_conta_corrente == Cod_CC

Observe que os nomes se repetem quando apresentam a mesma informação. Isso acontece, pois para montar o relacionamento entre as tabelas, é necessário que as colunas apresentem o mesmo nome e tipo de dado

Além disso, as colunas abaixo tiveram o tipo alterado para "Decimal Fixo":

  • Column1.conteudo.conta_pagar_cadastro.valor_documento

  • Column1.conteudo.conta_receber_cadastro.valor_documento

Em alguns casos o PowerBI já realiza o relacionamento de forma automática. Mas caso não tenha aparecido no seu, basta clicar e arrastar as colunas "Cod_Cliente" e "Cod_CC" para o encontro das tabelas "request_conta_receber" e "request_conta_pagar", conforme o exemplo abaixo:

Nosso relacionamento final deverá ficar da seguinte forma:

Prontinho! Agora todas as tabelas estão relacionadas e você pode montar os seus dashboards de forma completa 😉


📌 Confira alguns artigos de integração com o PowerBI :

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