Há dois dias atrás postei sobre isso aqui e não obtive ajuda para resolver este problema. Isso está me atrasando muito, então estou postando de novo com mais detalhes e com o arquivo pbix para facilitar qualquer ajuda.
Eu estou ficando com o prazo curto para terminar esse projeto, então agradeço de coração qualquer dica ou ajuda para resolver isso.
Estou enfrentando um problema com a integração da API da Meta para obter dados de uma conta de anúncios do Facebook. A configuração inicial da API está correta, e consigo retornar os dados sem problemas no ambiente de desenvolvimento. Criei o código de consulta no editor avançado do Power Query e, ao confirmar a edição, tudo parece funcionar perfeitamente.
No entanto, o problema ocorre quando tento atualizar os dados ou fechar e aplicar as alterações no Power Query. Nessas situações, recebo um erro diezendo que a "Column1" não foi encontrada ou a tabela retorna vazia.
Ou seja, na primeira execução do código ele funciona, mas depois para de funcionar. Não é nem um problema com a API e nem com o token, pois, jogando a url no navegador ela esta funcionando perfeitamente.
É importante ressaltar que o erro não tem a ver com a expansão das colunas, pois mesmo quando removo esta etapa o erro persiste.
Estou há dias tentando resolver esse problema, mas já esgotei minhas ideias sobre o que pode estar causando essa interferência. Alguém já passou por isso ou tem alguma dica sobre o que pode estar acontecendo?
Segue meu código, e as imagens do problema.
Imagem 1 - Dados recebidos logo após colar o código e clicar em confirmar no editor avançado;
Imagem 2 - O que acontece quando eu clico em atualizar visualização;
Imagem 3 - O que acontece quando eu clico em fechar e aplicar.
Anexo - Arquivo pbix do projeto
Agradeço desde já pela ajuda!
let
// URL base e parâmetros
baseUrl = "https://graph.facebook.com/v20.0/act_695487245543343/insights",
// Define a URL base da API do Facebook para obter dados de insights de anúncios.
queryParams = "?time_increment=1&time_range=%7B%27since%27%3A%272023-01-01%27%2C%27until%27%3A%272024-12-31%27%7D&level=ad&fields=account_id%2Ccampaign_id%2Cadset_id%2Cad_id%2Cdate_start%2Cdate_stop%2Cobjective%2Creach%2Cclicks%2Cimpressions%2Cspend%2Cactions",
// Define os parâmetros de consulta para a API, incluindo o intervalo de datas, nível de detalhe (anúncio) e os campos que serão retornados.
accessToken = "&access_token=EAAFNazyPYNoBOxZASFgrRpAULVZC5rpnYZARhvnFkR7Kx3ZCwRNb5uTevhw9BoZCulLfZBpgHfD9XVziZBQNDDfiI69netZC0KIFRWVNJPohhkZBa6vwfSbUaH3HuzmWIU1EyXu1EInz6Ubn2gWjZCB7zsQe9gpw9PSJKI9ZA6metZBajO1cZB3uZC0QqTY8sTZCmQ2ZBZCBaxOqMjmSBpRPLq0haIgZDZD",
// Especifica o token de acesso necessário para autenticação na API.
initialUrl = baseUrl & queryParams & accessToken,
// Combina a URL base, os parâmetros de consulta e o token de acesso para formar a URL completa da solicitação.
// Função para obter dados de uma URL
GetData = (url as text) as table =>
let
// Tenta obter o conteúdo da URL
jsonResponse = try Json.Document(Web.Contents(url, [Timeout=#duration(0,0,10,0)])) otherwise null,
// Tenta fazer uma solicitação HTTP para a URL e decodifica a resposta JSON. Define um tempo limite de 10 segundos. Em caso de erro, retorna null.
data = if jsonResponse <> null and Record.HasFields(jsonResponse, "data") then jsonResponse[data] else {},
// Verifica se a resposta contém o campo "data" e extrai os dados se presente. Caso contrário, retorna uma lista vazia.
nextPage = if jsonResponse <> null and Record.HasFields(jsonResponse, "paging") and Record.HasFields(jsonResponse[paging], "next") then jsonResponse[paging][next] else null,
// Verifica se a resposta contém uma indicação de próxima página de dados. Se sim, obtém a URL da próxima página.
dataTable = if List.NonNullCount(data) > 0 then
Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
else
#table({}, {}),
// Converte os dados em uma tabela, desde que existam dados não nulos. Caso contrário, cria uma tabela vazia.
result = try dataTable otherwise #table({}, {}),
// Tenta retornar a tabela de dados; em caso de erro, retorna uma tabela vazia.
nextData = if nextPage <> null then @GetData(nextPage) else #table({}, {}),
// Se houver uma URL para a próxima página, chama recursivamente a função GetData para obter os dados adicionais; caso contrário, retorna uma tabela vazia.
combined = Table.Combine({result, nextData})
in
combined,
// Combina os resultados da página atual com os da próxima página, se houver.
// Chamada inicial para obter dados
result = GetData(initialUrl),
// Chama a função GetData para obter os dados a partir da URL inicial.
// Expansão da coluna com verificação de erro
#"Column1 Expandido" = try Table.ExpandRecordColumn(result, "Column1", {"account_id", "campaign_id", "adset_id", "ad_id", "date_start", "date_stop", "objective", "reach", "clicks", "impressions", "spend", "actions"}, {"Column1.account_id", "Column1.campaign_id", "Column1.adset_id", "Column1.ad_id", "Column1.date_start", "Column1.date_stop", "Column1.objective", "Column1.reach", "Column1.clicks", "Column1.impressions", "Column1.spend", "Column1.actions"}) otherwise result,
// Expande as colunas de um registro aninhado, especificando as colunas que devem ser extraídas. Se ocorrer um erro, retorna a tabela original.
// Diagnóstico para garantir que os dados são exibidos corretamente
Output = try #"Column1 Expandido" otherwise #table({}, {})
// Tenta retornar a tabela expandida; se ocorrer um erro, retorna uma tabela vazia.
in
Output
// Retorna a tabela final de resultados.
Pergunta
Janio Rolim
Boa tarde, pessoal!
Há dois dias atrás postei sobre isso aqui e não obtive ajuda para resolver este problema. Isso está me atrasando muito, então estou postando de novo com mais detalhes e com o arquivo pbix para facilitar qualquer ajuda.
Eu estou ficando com o prazo curto para terminar esse projeto, então agradeço de coração qualquer dica ou ajuda para resolver isso.
Estou enfrentando um problema com a integração da API da Meta para obter dados de uma conta de anúncios do Facebook. A configuração inicial da API está correta, e consigo retornar os dados sem problemas no ambiente de desenvolvimento. Criei o código de consulta no editor avançado do Power Query e, ao confirmar a edição, tudo parece funcionar perfeitamente.
No entanto, o problema ocorre quando tento atualizar os dados ou fechar e aplicar as alterações no Power Query. Nessas situações, recebo um erro diezendo que a "Column1" não foi encontrada ou a tabela retorna vazia.
Ou seja, na primeira execução do código ele funciona, mas depois para de funcionar. Não é nem um problema com a API e nem com o token, pois, jogando a url no navegador ela esta funcionando perfeitamente.
É importante ressaltar que o erro não tem a ver com a expansão das colunas, pois mesmo quando removo esta etapa o erro persiste.
Estou há dias tentando resolver esse problema, mas já esgotei minhas ideias sobre o que pode estar causando essa interferência. Alguém já passou por isso ou tem alguma dica sobre o que pode estar acontecendo?
Segue meu código, e as imagens do problema.
Imagem 1 - Dados recebidos logo após colar o código e clicar em confirmar no editor avançado;
Imagem 2 - O que acontece quando eu clico em atualizar visualização;
Imagem 3 - O que acontece quando eu clico em fechar e aplicar.
Anexo - Arquivo pbix do projeto
Agradeço desde já pela ajuda!
VersãoFinal.pbix
Editado por Janio Rolim
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Faça login para comentar
Você vai ser capaz de deixar um comentário após fazer o login
Entrar Agora