Passar para o conteúdo principal
Todas as coleçõesAPIs e WebhooksConfigurando Integrações
Realizando mais de uma requisição no Power BI
Realizando mais de uma requisição no Power BI

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

Kessy Silva avatar
Escrito por Kessy Silva
Atualizado há mais de 3 semanas

O Power BI é uma ferramenta colaborativa para desenvolvimento, envio e documentação de APIs. Ele permite enviar requisições, analisar respostas, automatizar testes e criar ambientes para simular diferentes cenários.

Descubra como utilizar o Power BI para enviar mais de uma requisições para o Omie!

Tópicos do Artigo:


Informações importantes

  • Antes de iniciar seus testes com a nossa API, é fundamental conhecer alguns processos básicos:

    • Acessando a documentação: Consulte nossa documentação oficial para entender os endpoints disponíveis e seus respectivos parâmetros.

    • ⚙️ Características e Recomendações: Fique por dentro das melhores práticas para otimizar sua experiência com a API da Omie.

    • 🔐 Login no Portal: Para testar suas requisições no Portal do Desenvolvedor é necessário fazer login na plataforma com o mesmo e-mail e senha que você já usa no ERP. Fácil, né? 😉

    • 🧪 Aplicativo Teste: Aprenda a criar um Aplicativo Teste gratuito e descubra, na prática, como utilizar nossas APIs e aproveitar ao máximo os nossos recursos.

  • Particularidades para Power BI:

    • Os dados de configuração e códigos passados por aqui são exemplos, pois não prestamos suporte às funcionalidades do Power BI. O tratamento dos dados obtidos deve ser feito pelo desenvolvedor responsável pela integração.


Configurando os parâmetros gerais

1) Após a instalação e configuração inicial do Power BI, abra o aplicativo e crie um relatório em branco:

2) Clique sobre a opção "Transformar dados", disponível no cabeçalho:

3) No Editor do Power Query, crie grupo específico para guardar as credenciais do seu aplicativo Omie. Para isso, clique com o botão direito no menu esquerdo de Consultas (1) e selecione a opção "Novo Grupo" (2):

4) Defina um nome de sua preferência para o novo grupo (1). E, por fim, clique em "OK" (2) para criar a pasta:


5) Com a pasta criada, clique com o botão direito em cima dela (1) e depois em "Novo Parâmetro" (2):

6) Crie dois parâmetros, sendo eles "app_key" e "app_secret", conforme as imagens abaixo:

  • (1) Nome: Defina o nome do parâmetro.

  • (2) Tipo: Defina como "texto".

  • (3) Valor Atual: Preencha o valor indicando o dado da sua credencial do App Omie, conforme o nome do parâmetro.

  • (4) OK: Após o preenchimento, confirme a inclusão do novo parâmetro.Devemos criar dois parâmetros: "app_key" e "app_secret" conforme as imagens abaixo:

7) Clique com o botão direito em cima da pasta criada (1), e vá em "Nova Consulta" (2) para selecionar a opção "Consulta Nula" (3):

8) Clique novamente com o botão direito em cima da nova consulta criada (1) e realize dois procedimentos, sendo o primeiro dele renomear a consulta (2) e acessar o Editor Avançado (3):

  • (2) Renomear: Renomeie a consulta para: get_header.

  • (3) Editor Avançado: Ao clicar em "Editor Avançado", será necessário colar o código.

9) No Editor Avançado, cole o trecho de código abaixo. Com tudo certo, clique em "Concluído":

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


Configurando as requisições

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

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

3) Todas as pastas e consultas nulas deverão ser criadas conforme o exemplo abaixo:

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

Para expandir a informação, basta clicar na seta em cima da descrição do campo de interesse.

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"

ListarContasCorrentes

  • 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

1) 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


2) 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

3) Em alguns casos o Power BI 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:

4) Nosso relacionamento final deverá ficar da seguinte forma:


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


📚 Artigos Relacionados

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