Ir para conteúdo
  • 0

Relatório não atualizando (chamada via API)


Thiago Lima

Pergunta

  • Alunos

Olá!

Pessoal fiz toda a configuração da chamada via api no meu bi com atualização incremental, porém quando publico aparece o seguinte erro da imagem abaixo. Alguém consegue me ajudar por favor.
Deixo em anexo o arquivo .pbix

image.png.9f648379f573a6bc1ea8d7d1f2b3b74e.png

Já me baseei nesse video do Leo https://www.youtube.com/watch?v=2JzCPr5sUNE , porém o exemplo de API que ele usa é diferente.

 

power20bi20api (1).pbix

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Boa tarde,

Thiago, o que está faltando é você configurar o nível de privacidade no Power BI serviço. 

No inicio o nível de privacidade do Power BI era feito apenas no Power BI desktop, porém agora é necessário fazer a configuração no Power BI serviço também.

Siga o passo a passo abaixo:
Acesse app.powerbi.com e selecione seu espaço de trabalho.

Selecione Conjuntos de dados + fluxos de dados.

Selecione Configurações no conjunto de dados.

Selecione Credenciais da fonte de dados.

Selecione Editar credenciais, defina o nível de privacidade para a as fontes de dados e selecione Entrar para cada fonte de dados.

Se esta resposta de ajudou não esqueça de marcar como concluída.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Suave @Thiago Lima?

Se os níveis de privacidade estão corretamente configurados, então o problema certamente está na construção da tua função funcPedidos.

Recomendo dar uma olhada no site abaixo para entender o que está causando isso, e especialmente nos comentários mais recentes que falam exatamente do teu tipo de caso (i.e.: atualização de uma fonte Web):

https://excelguru.ca/power-query-errors-please-rebuild-this-data-combination/

Abs!

Link para o comentário
Compartilhar em outros sites

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

Você chegou a fazer o teste da chamada da api no online sem atualização incremental talvez ela possa estar dando problema.


Dê uma olhada neste vídeo


 

Boa tarde Alex, tudo bem?

Já fiz esse teste, só atualiza sem ser no online.


Esse vídeo é o que eu cito, já assiste porém ele utiliza um modelo de exemplo  diferente.


 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Experimente usar esse codigo:

 

let
    DataInicio = DateTime.Date(RangeStart), // Corrigido: use aspas duplas para definir o valor da data
    DataFim = DateTime.Date(RangeEnd), // Corrigido: use aspas duplas para definir o valor da data
    QtdDias = Duration.Days(Duration.From(DataFim - DataInicio)) + 1, 
    ListaDatas = List.Dates(DataInicio, (QtdDias), #duration(1, 0, 0, 0)), 
    TransformarTabela = Table.TransformColumnTypes(
        Table.FromList(ListaDatas, Splitter.SplitByNothing(), {"Data"}, null, ExtraValues.Error), 
    {{"Data", type datetime}}
    ),
    AtualizacaoIncremental = Table.SelectRows(TransformarTabela, each [Data] >= RangeStart and [Data] < RangeEnd),
    #"Função Personalizada Invocada" = Table.AddColumn(AtualizacaoIncremental, "funcPedidos", each funcPedidos([Data])),
    #"funcPedidos Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada", "funcPedidos", {"obj"}, {"funcPedidos.obj"}),
    #"funcPedidos.obj Expandido" = Table.ExpandListColumn(#"funcPedidos Expandido", "funcPedidos.obj"),
    #"funcPedidos.obj Expandido1" = Table.ExpandRecordColumn(#"funcPedidos.obj Expandido", "funcPedidos.obj", {"id"}, {"funcPedidos.obj.id"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"funcPedidos.obj Expandido1",{{"funcPedidos.obj.id", type text}}),
    #"Função Personalizada Invocada1" = Table.AddColumn(#"Tipo Alterado", "funcPedidosID", each funcPedidosID([funcPedidos.obj.id])),
    #"funcPedidosID Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada1", "funcPedidosID", {"httpStatusCode", "msg", "obj"}, {"funcPedidosID.httpStatusCode", "funcPedidosID.msg", "funcPedidosID.obj"}),
    #"funcPedidosID.obj Expandido" = Table.ExpandRecordColumn(#"funcPedidosID Expandido", "funcPedidosID.obj", {"approved", "items"}, {"funcPedidosID.obj.approved", "funcPedidosID.obj.items"}),
    #"funcPedidosID.obj.items Expandido" = Table.ExpandListColumn(#"funcPedidosID.obj Expandido", "funcPedidosID.obj.items"),
    #"funcPedidosID.obj.items Expandido1" = Table.ExpandRecordColumn(#"funcPedidosID.obj.items Expandido", "funcPedidosID.obj.items", {"title", "sku", "totalPrice"}, {"funcPedidosID.obj.items.title", "funcPedidosID.obj.items.sku", "funcPedidosID.obj.items.totalPrice"}),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"funcPedidosID.obj.items Expandido1",{{"funcPedidosID.obj.approved", type datetime}}),
    #"Colunas Removidas1" = Table.RemoveColumns(#"Tipo Alterado1",{"funcPedidosID.obj.items.totalPrice", "funcPedidosID.httpStatusCode", "funcPedidosID.msg"}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas1",{{"funcPedidosID.obj.approved", "data"}})
in
    #"Colunas Renomeadas"

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
17 minutos atrás, Alex Pereira disse:

Experimente usar esse codigo:

 

let
    DataInicio = DateTime.Date(RangeStart), // Corrigido: use aspas duplas para definir o valor da data
    DataFim = DateTime.Date(RangeEnd), // Corrigido: use aspas duplas para definir o valor da data
    QtdDias = Duration.Days(Duration.From(DataFim - DataInicio)) + 1, 
    ListaDatas = List.Dates(DataInicio, (QtdDias), #duration(1, 0, 0, 0)), 
    TransformarTabela = Table.TransformColumnTypes(
        Table.FromList(ListaDatas, Splitter.SplitByNothing(), {"Data"}, null, ExtraValues.Error), 
    {{"Data", type datetime}}
    ),
    AtualizacaoIncremental = Table.SelectRows(TransformarTabela, each [Data] >= RangeStart and [Data] < RangeEnd),
    #"Função Personalizada Invocada" = Table.AddColumn(AtualizacaoIncremental, "funcPedidos", each funcPedidos([Data])),
    #"funcPedidos Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada", "funcPedidos", {"obj"}, {"funcPedidos.obj"}),
    #"funcPedidos.obj Expandido" = Table.ExpandListColumn(#"funcPedidos Expandido", "funcPedidos.obj"),
    #"funcPedidos.obj Expandido1" = Table.ExpandRecordColumn(#"funcPedidos.obj Expandido", "funcPedidos.obj", {"id"}, {"funcPedidos.obj.id"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"funcPedidos.obj Expandido1",{{"funcPedidos.obj.id", type text}}),
    #"Função Personalizada Invocada1" = Table.AddColumn(#"Tipo Alterado", "funcPedidosID", each funcPedidosID([funcPedidos.obj.id])),
    #"funcPedidosID Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada1", "funcPedidosID", {"httpStatusCode", "msg", "obj"}, {"funcPedidosID.httpStatusCode", "funcPedidosID.msg", "funcPedidosID.obj"}),
    #"funcPedidosID.obj Expandido" = Table.ExpandRecordColumn(#"funcPedidosID Expandido", "funcPedidosID.obj", {"approved", "items"}, {"funcPedidosID.obj.approved", "funcPedidosID.obj.items"}),
    #"funcPedidosID.obj.items Expandido" = Table.ExpandListColumn(#"funcPedidosID.obj Expandido", "funcPedidosID.obj.items"),
    #"funcPedidosID.obj.items Expandido1" = Table.ExpandRecordColumn(#"funcPedidosID.obj.items Expandido", "funcPedidosID.obj.items", {"title", "sku", "totalPrice"}, {"funcPedidosID.obj.items.title", "funcPedidosID.obj.items.sku", "funcPedidosID.obj.items.totalPrice"}),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"funcPedidosID.obj.items Expandido1",{{"funcPedidosID.obj.approved", type datetime}}),
    #"Colunas Removidas1" = Table.RemoveColumns(#"Tipo Alterado1",{"funcPedidosID.obj.items.totalPrice", "funcPedidosID.httpStatusCode", "funcPedidosID.msg"}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas1",{{"funcPedidosID.obj.approved", "data"}})
in
    #"Colunas Renomeadas"

 


Testei esse codigo e continua nesse erro OLE DB ou do ODBC.


 

 

image.png.ac9db9e787cf86783acc9103ddbd469f.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
19 minutos atrás, Alex Pereira disse:

Experimente usar esse codigo:

 

let
    DataInicio = DateTime.Date(RangeStart), // Corrigido: use aspas duplas para definir o valor da data
    DataFim = DateTime.Date(RangeEnd), // Corrigido: use aspas duplas para definir o valor da data
    QtdDias = Duration.Days(Duration.From(DataFim - DataInicio)) + 1, 
    ListaDatas = List.Dates(DataInicio, (QtdDias), #duration(1, 0, 0, 0)), 
    TransformarTabela = Table.TransformColumnTypes(
        Table.FromList(ListaDatas, Splitter.SplitByNothing(), {"Data"}, null, ExtraValues.Error), 
    {{"Data", type datetime}}
    ),
    AtualizacaoIncremental = Table.SelectRows(TransformarTabela, each [Data] >= RangeStart and [Data] < RangeEnd),
    #"Função Personalizada Invocada" = Table.AddColumn(AtualizacaoIncremental, "funcPedidos", each funcPedidos([Data])),
    #"funcPedidos Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada", "funcPedidos", {"obj"}, {"funcPedidos.obj"}),
    #"funcPedidos.obj Expandido" = Table.ExpandListColumn(#"funcPedidos Expandido", "funcPedidos.obj"),
    #"funcPedidos.obj Expandido1" = Table.ExpandRecordColumn(#"funcPedidos.obj Expandido", "funcPedidos.obj", {"id"}, {"funcPedidos.obj.id"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"funcPedidos.obj Expandido1",{{"funcPedidos.obj.id", type text}}),
    #"Função Personalizada Invocada1" = Table.AddColumn(#"Tipo Alterado", "funcPedidosID", each funcPedidosID([funcPedidos.obj.id])),
    #"funcPedidosID Expandido" = Table.ExpandRecordColumn(#"Função Personalizada Invocada1", "funcPedidosID", {"httpStatusCode", "msg", "obj"}, {"funcPedidosID.httpStatusCode", "funcPedidosID.msg", "funcPedidosID.obj"}),
    #"funcPedidosID.obj Expandido" = Table.ExpandRecordColumn(#"funcPedidosID Expandido", "funcPedidosID.obj", {"approved", "items"}, {"funcPedidosID.obj.approved", "funcPedidosID.obj.items"}),
    #"funcPedidosID.obj.items Expandido" = Table.ExpandListColumn(#"funcPedidosID.obj Expandido", "funcPedidosID.obj.items"),
    #"funcPedidosID.obj.items Expandido1" = Table.ExpandRecordColumn(#"funcPedidosID.obj.items Expandido", "funcPedidosID.obj.items", {"title", "sku", "totalPrice"}, {"funcPedidosID.obj.items.title", "funcPedidosID.obj.items.sku", "funcPedidosID.obj.items.totalPrice"}),
    #"Tipo Alterado1" = Table.TransformColumnTypes(#"funcPedidosID.obj.items Expandido1",{{"funcPedidosID.obj.approved", type datetime}}),
    #"Colunas Removidas1" = Table.RemoveColumns(#"Tipo Alterado1",{"funcPedidosID.obj.items.totalPrice", "funcPedidosID.httpStatusCode", "funcPedidosID.msg"}),
    #"Colunas Renomeadas" = Table.RenameColumns(#"Colunas Removidas1",{{"funcPedidosID.obj.approved", "data"}})
in
    #"Colunas Renomeadas"

 

Eu fiz um segundo codigo aqui funcionou, até no service rodou, porém não consigo encaixar a atualização incremental.

Da uma olhada nele, deixei no anexo @Alex Pereira

BI MODELO 2 API.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, Alex Pereira disse:

Você tem que colocar aqui no get dos pedidos tbm:

Transformar seu RangeStart nesse tipo de data e seu RangeEnd nesse formato de data.



image.png.6c5a98cefb9d6e4e6510a8c20abf7f13.png

image.png

A api não aceita data e hora como no rangestart e rangeend, somente data mesmo, se não daria pra colocar conforme vc explicou

Link para o comentário
Compartilhar em outros sites

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

Converte então

 DataInicio = DateTime.ToText(RangeStart, "yyyy-MM-dd"), // Corrigido: use aspas duplas para definir o valor da data
 DataFim = DateTime.ToText(RangeEnd, "yyyy-MM-dd"), // Corrigido: use aspas duplas para definir o valor da data

 

Fiz isso, mas caio no mesmo gargalo inicial de nao entrar a atualização incremental.

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...