Ir para conteúdo
  • 0

Falha em atualização de fonte de dados


Eduardo_Braga
Ir para solução Solucionado por Alex Pereira ,

Pergunta

  • Alunos

Tenho um relatório que publicado que a fonte de Dados é uma API do sistema de gestão Trafegus. 
Quando faço o relatório no power bi desktopo ele permite atualizar manualmente, mas publicado apresenta a imagem abaixo:
Capturadetela2024-04-30154504.png.e39cb862fb0179a0868ac8b888e3341c.png

Sei que o problema está na elaboração da API, o código que estou utilizando é o seguinte:
 

(optional ultCod as number, optional travelList as list) =>

    let
        ultCode = if ultCod = null
        then 1
        else ultCod,
        
        baseUrl = "https://tjgrm.begcloud.com/ws_rest/public/api/viagem",
        url = baseUrl & "?UltCodigo=" & Text.From(ultCode), 

        headers = [
            #"Content-Type"   = "application/json", 
            #"Authorization"  = "Basic V1NUSjpXUzQ1OFdT", 
            #"X-APP-TRAFEUGS" = "9"], 
        
        response = Json.Document(Web.Contents(url, [Headers = headers]))[viagens],

        lastId = if List.IsEmpty(response)
        then -1
        else List.Last(response)[viagemId],

        travels = if travelList = null
        then response 
        else List.Combine({travelList, response}),

        out = if lastId = -1 
        then Table.FromRecords(travels)
        else @fRecursiveTravels(lastId, travels)
in 
   out

Se alguem puder ajudar eu agradeço demais.

Para facilitar o entendimento deixarei o arquivo de amostra.

 

Trafegus.pbix

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Em 30/04/2024 em 15:52, Eduardo_Braga disse:

Tenho um relatório que publicado que a fonte de Dados é uma API do sistema de gestão Trafegus. 
Quando faço o relatório no power bi desktopo ele permite atualizar manualmente, mas publicado apresenta a imagem abaixo:
Capturadetela2024-04-30154504.png.e39cb862fb0179a0868ac8b888e3341c.png

Sei que o problema está na elaboração da API, o código que estou utilizando é o seguinte:
 

(optional ultCod as number, optional travelList as list) =>

    let
        ultCode = if ultCod = null
        then 1
        else ultCod,
        
        baseUrl = "https://tjgrm.begcloud.com/ws_rest/public/api/viagem",
        url = baseUrl & "?UltCodigo=" & Text.From(ultCode), 

        headers = [
            #"Content-Type"   = "application/json", 
            #"Authorization"  = "Basic V1NUSjpXUzQ1OFdT", 
            #"X-APP-TRAFEUGS" = "9"], 
        
        response = Json.Document(Web.Contents(url, [Headers = headers]))[viagens],

        lastId = if List.IsEmpty(response)
        then -1
        else List.Last(response)[viagemId],

        travels = if travelList = null
        then response 
        else List.Combine({travelList, response}),

        out = if lastId = -1 
        then Table.FromRecords(travels)
        else @fRecursiveTravels(lastId, travels)
in 
   out

Se alguem puder ajudar eu agradeço demais.

Para facilitar o entendimento deixarei o arquivo de amostra.


Acredito que o o problema seja devido se usar uma fonte dinâmica dentro do seu conjunto de dados que no caso seria sua url, se não me engano isso não é permitido no power bi. Tente utilizar parâmetro de Query dentro da API.

 

(optional ultCod as number, optional travelList as list) =>

    let
        ultCode = if ultCod = null
        then 1
        else ultCod,

        baseUrl = "https://tjgrm.begcloud.com/ws_rest/public/api/viagem",

        headers = [
            #"Content-Type" = "application/json",
            #"Authorization" = "Basic V1NUSjpXUzQ1OFdT",
            #"X-APP-TRAFEUGS" = "9"
        ],

        // Correção: Definindo o parâmetro Query diretamente nas opções
        options = [
            Headers = headers,
            Query = [#"UltCodigo" = Text.From(ultCode)]
        ],

        response = Json.Document(Web.Contents(baseUrl, options))[viagens],

        lastId = if List.IsEmpty(response)
        then -1
        else List.Last(response)[viagemId],

        travels = if travelList = null
        then response
        else List.Combine({travelList, response}),

        out = if lastId = -1 
        then Table.FromRecords(travels)
        else @fRecursiveTravels(lastId, travels)
in
   out

 

 

 

Em 30/04/2024 em 15:52, Eduardo_Braga disse:

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Ed Carlo Soares Fereira, tente utilizar RelativePath para montar sua URL que acredito que deve ajustar aí.

No link abaixo tem uma situação parecida com a sua que resolveu após fazer isso:

https://www.google.com/amp/s/www.andersonmachado.eng.br/amp/fonte-de-dados-web-content-com-restfull-api

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Obrigado pela ajuda amigo, mas infelizmente não consegui resolver, acredito que este seja realmente o caminho, mas quando insiro o RelativePath no código ele até lê e cria a função mas quebra quando vou atualizar a tabela.

O código ajustado ficou da seguinte forma:

(optional ultCod as number, optional travelList as list) =>

    let
        ultCode = if ultCod = null
        then 1
        else ultCod,
        
        baseUrl = "https://tjgrm.begcloud.com/ws_rest/public/api/viagem",
        url1 = baseUrl, RelativePath="?UltCodigo=",
        url= url1 & Text.From(ultCode),

        headers = [
            #"Content-Type"   = "application/json", 
            #"Authorization"  = "Basic V1NUSjpXUzQ1OFdT", 
            #"X-APP-TRAFEUGS" = "9"], 
        
        response = Json.Document(Web.Contents(url, [Headers = headers]))[viagens],

        lastId = if List.IsEmpty(response)
        then -1
        else List.Last(response)[viagemId],

        travels = if travelList = null
        then response 
        else List.Combine({travelList, response}),

        out = if lastId = -1 
        then Table.FromRecords(travels)
        else @fRecursiveTravels(lastId, travels)
in 
   out

 

Quando faço isso ela me apresenta o seguinte erro nas tabelas:
image.png.4fd90f4daed02552591864822c2e16ae.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
22 horas atrás, Alex Pereira disse:


Acredito que o o problema seja devido se usar uma fonte dinâmica dentro do seu conjunto de dados que no caso seria sua url, se não me engano isso não é permitido no power bi. Tente utilizar parâmetro de Query dentro da API.

 

(optional ultCod as number, optional travelList as list) =>

    let
        ultCode = if ultCod = null
        then 1
        else ultCod,

        baseUrl = "https://tjgrm.begcloud.com/ws_rest/public/api/viagem",

        headers = [
            #"Content-Type" = "application/json",
            #"Authorization" = "Basic V1NUSjpXUzQ1OFdT",
            #"X-APP-TRAFEUGS" = "9"
        ],

        // Correção: Definindo o parâmetro Query diretamente nas opções
        options = [
            Headers = headers,
            Query = [#"UltCodigo" = Text.From(ultCode)]
        ],

        response = Json.Document(Web.Contents(baseUrl, options))[viagens],

        lastId = if List.IsEmpty(response)
        then -1
        else List.Last(response)[viagemId],

        travels = if travelList = null
        then response
        else List.Combine({travelList, response}),

        out = if lastId = -1 
        then Table.FromRecords(travels)
        else @fRecursiveTravels(lastId, travels)
in
   out

 

 

 

 

Cara, vlw de vdd, deu certo aqui sem problemas, eu fiz alguns testes e está totalmente funcional, atualizando de forma automática, vlw mesmo irmão.

 

  • Like 1
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...