Ir para conteúdo

Janio Rolim

Alunos
  • Total de itens

    9
  • Registro em

  • Última visita

Perfil

Informações adicionais

  • Sexo
    ♂ Masculino
  • Mora em
    SP
  • Nasceu dia
    04-04-2001

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Janio Rolim's Achievements

Profissional

Profissional (3/6)

1

Reputação

  1. 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! 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. VersãoFinal.pbix
  2. Entendo! A situação está complicada porque o responsável pelo TI, que é o único na função, está receoso de que eu possa substituí-lo. Por isso, ele tem dificultado qualquer ação minha, inclusive não me permite ver o contrato. Como os donos da empresa não têm muito conhecimento técnico, ele acaba enrolando-os. Vou tentar obter o contrato para verificar as cláusulas. Obrigado pela sugestão!
  3. Olá, galera! Espero que todos estejam bem. Estou prestes a iniciar um projeto de BI na empresa onde trabalho, e lá utilizamos o Protheus da TOTVS. Já tenho o apoio da diretoria, e todos estão animados com o projeto. No entanto, o pessoal de TI está colocando barreiras quanto à conexão do BI com o banco de dados. Eles argumentam que, como nosso banco fica na Tcloud, não temos como fazer esse acesso externo, e que a única solução seria via API da TOTVS, que é muito cara, etc. Como eu não conheço muito bem como funciona a estrutura da Tcloud, gostaria de saber se alguém aqui já trabalhou com projetos onde o banco de dados ficava na Tcloud da TOTVS. Qual foi o passo a passo para a conexão? Houve custos adicionais? Agradeço desde já pela ajuda!
  4. Fala galeraaa! Tudo bem? Estou enfrentando um dilema que está me deixando de cabelo em pé hahaha... Criei um dashboard meio na base da gambiarra, sem entender muito sobre modelagem de dados no formato dimensional e seus relacionamentos. Funcionou, mas agora que estou me aprofundando no assunto, decidi refazer tudo e fazer os ajustes necessários. No entanto, estou com uma dúvida que está me deixando encucado. No meu modelo, tenho as tabelas calendário, máquinas, ordens de produção, apontamentos de produção e apontamentos de paradas, organizadas assim: Dimensões: Calendário, Máquinas Fatos: Apontamentos de Produção, Apontamentos de Paradas O problema está na tabela de Ordens de Produção. Não consigo decidir se ela é um fato ou uma dimensão por estes motivos: É uma tabela que contém informações das ordens de produção complementares aos apontamentos de produção e paradas. Está diretamente relacionada às tabelas de Produção e Paradas, o que implicaria em um relacionamento fato-fato se classificada como fato. Relaciona-se com a dimensão calendário, o que sugeriria um relacionamento dimensão-dimensão. Tentei corrigir isso criando uma tabela factless, mas a modelagem não pareceu correta. Utilizo os dados das ordens de produção para diversos cálculos. O problema se agrava quando tento adicionar uma tabela de metas trimestrais. Nesse caso, minhas metas seriam por máquina e por ano/trimestre, o que torna o relacionamento inviável e ineficaz. Você tem alguma ideia de como classificar a tabela de ordens de produção? Como executar os relacionamentos? Ou até mesmo como reestruturar os dados nas tabelas para se adequar ao modelo? Agradeço muito qualquer ajuda ou orientação que puder oferecer! Seguem anexos: Anexos- Imagem de como está meu relacionamento atual, estrutura das tabelas e esboço do dashboard.
×
×
  • Criar Novo...