-
Total de itens
573 -
Registro em
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Desafios
Calendário
Downloads
Galeria
Posts postados por Alex Pereira
-
-
14 minutos atrás, Edson Igari disse:
Sem wi-fi só se vc comprar um multiplicador de telas. Ai vc abre quatro navegadores e joga um em cada tela.
@Edson Igarisó não sei se o multiplicador de telas resolveria o problema dela que parece que o multiplicador de tela ele duplica a tela, ai teria ver se é possivel o multiplicador tela consegue colocar uma tela para cada tv. Eu sugeri o usb porque parece que nele você consegue fazer essa configuração!
-
neste video parece ter como fazer isso com adpatador usb para hdmi que talvez possa resolver seu problema@ -
Existem conversores que você consegue pegar um hdmi e duplicar a tela para várias tv's, agora não sei se você consegue dentro esse conversos definir qual tv vai ter tal dashboard!
-
Cleiton, nesse caso, você precisará combinar a coluna "cidade" com a coluna "data" para identificar se houve feriado específico na cidade da unidade de produção. Você pode criar ou utilizar uma tabela que contenha os feriados municipais de cada cidade. Assim, ao verificar a data de produção e a cidade, se ambas coincidirem com um feriado na tabela, você poderá marcar esse dia como feriado para a unidade localizada naquela cidade. Isso garante que cada unidade considere apenas os feriados que afetam sua própria produção.
obs.: Os dados em ambas tabelas tem que ser iguais!
Exemplo:
-
Da uma olhade nesse talvez te atenda melhor:
- 1
-
Veja esse video!
- 1
-
15 horas atrás, Lucas Denker disse:
Pior que essa foi uma das minhas tentativas mas por algum motivo ele não altera o gráfico da maneira que eu gostaria
Teria como disponabilizar um exemplo!
-
37 minutos atrás, Lucas Denker disse:
Boa tarde pessoal! Todos bem?
Venho com uma dúvida técnica sobre visualização de dados. Irei lhe passar o contexto do que tenho.
Contexto.:
Em meu relatório possuo uma página principal que contém filtros de ano, cliente e estado.
Ao clicar em um cliente abre a possibilidade de ir a uma página que faz o drill-trought dos dados. Nesta página possuo um gráfico mensal da quantidade de compras feita pelo cliente filtrado.
Problema.:
Meu problema é eu gostaria que em apenas nesse gráfico que tenho o filtro de ano e somente este filtro da página principal não afete este gráfico em específico.
Como faço para retirar especificamente deste gráfico o filtro do ano da página principal?
Pesquisei diversas alternativas e nenhuma funcionou.
Se alguem tiver passado por algo parecido ou sabe como resolver esta situação me ajude por favor!
Abraços e obrigado pela atenção.Você pode resolver isso diretamente nas suas medidas utilizando a função
ALL
ouREMOVEFILTERS
no DAX para ignorar o filtro de ano apenas para aquele visual específico. Assim, o filtro de ano não será aplicado ao gráfico.
EX:
Medida Sem Filtro de Ano = CALCULATE( [Sua Medida Original], ALL(Tabela[ColunaAno]) )
Dessa forma, o filtro de ano que vem da página principal não afetará o gráfico onde essa medida for utilizada, mas continuará funcionando normalmente para os outros visuais da página.
-
17 horas atrás, Henrique Marsal disse:
Peguei a aula e tentei adaptar o script que faz a atualização incremental dos dados no mysyql na API Movidesk no tipo oData. mas o script não lida com a alternativa de inserir novas colunas . eu preciso dar um drop no banco e reinserir os dados outra vez. Preciso de algum help para me ajudar o script a lidar com a opção de ao inserir novas colunas ele fazer att full da coluna nova e depois incremental normal.
Já tentei umas 200x com GPT mas na hora de rodar o script ele travava.
import requestsimport pandas as pdfrom dotenv import load_dotenvimport osimport timefrom sqlalchemy import (create_engine,MetaData,Table,Column,Integer,String,DECIMAL,DATETIME,inspect,text,)from sqlalchemy.exc import IntegrityErrorfrom datetime import datetime, timedelta# Carrega as variáveis de ambiente do arquivo .envload_dotenv()# Define a URL base da API Movidesk# Pega o token do arquivo .envtoken = os.getenv("API_TOKEN")# Função para chamar a API Movidesk e obter os dados paginadosdef chamar_api_movidesk(token, params=None😞lista_dados_todas_paginas = []skip = 0 # Controle de paginação, começa com 0top = 1000 # Número máximo de resultados por página# Configura parâmetros fixosif params is None:params = {}# Inclui o token e a paginação nos parâmetrosparams.update({"token": token, "$top": top, "$skip": skip})while True:response = requests.get(base_url, params=params)response_ajustado_json = response.json()# Verifica se a resposta contém dadosif isinstance(response_ajustado_json, list) and response_ajustado_json:lista_dados_todas_paginas.extend(response_ajustado_json)else:# Se a resposta for uma lista vazia, significa que não há mais páginasbreak# Atualiza o valor de skip para pegar a próxima páginaskip += topparams["$skip"] = skiptime.sleep(1) # Respeita o limite de requisições da APIreturn lista_dados_todas_paginas# Função para obter todos os tickets sem filtrodef chamar_api_inicial_completa():# Definindo campos de interesseparams = {"$select": "id,createdDate,lastUpdate,type,category,urgency,status,ownerTeam,serviceFull,resolvedIn,slaSolutionDate,slaRealResponseDate,slaResponseDate"}lista_dados_todas_paginas = chamar_api_movidesk(token, params)df = pd.DataFrame(lista_dados_todas_paginas)return df# Função para filtrar tickets criados nos últimos dois diasdef atualizar_dados_ultimos_dois_dias():dois_dias_atras = (datetime.now() - timedelta(days=2)).strftime("%Y-%m-%dT%H:%M:%SZ")# Definindo parâmetros com filtro de dataparams = {"$select": "id,createdDate,lastUpdate","$filter": f"createdDate ge {dois_dias_atras}",}lista_dados_todas_paginas = chamar_api_movidesk(token, params)df = pd.DataFrame(lista_dados_todas_paginas)return df# Converta as colunas de data para o formato aceito pelo MySQLdata_columns = ["createdDate", "lastUpdate"]# Conexão com o banco de dados MySQL - PUXANDO OS DADOS DO ARQUIVO .envdb_user = os.getenv("DB_USER") # Nome do usuário no MySQLdb_password = os.getenv("DB_PASSWORD") # Senha do MySQLdb_host = os.getenv("DB_HOST") # Host do banco de dadosdb_name = os.getenv("DB_NAME") # Nome do banco de dados# String de conexão com o banco de dados, passando as variáveis do .envengine = create_engine(f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}")# Instanciando o objeto MetaData para criar a tabela no banco de dadosmetadata = MetaData()# Crie a tabela com todas as colunas necessárias e defina a chave primáriatickets_table = Table("tickets",metadata,Column("id", String(255), primary_key=True),Column("createdDate", DATETIME),Column("lastUpdate", DATETIME),)# Verifica se a tabela já existe no banco de dadosinspector = inspect(engine)if "tickets" in inspector.get_table_names():with engine.connect() as connection:result = connection.execute(text("SELECT COUNT(*) FROM tickets"))count = result.fetchone()[0]if count > 0:# Se a tabela tiver dados, atualiza os últimos dois diasdf_incremental = atualizar_dados_ultimos_dois_dias()if df_incremental.empty:print("Não há dados para atualizar.")else:# Converte as colunas de data para o formato corretofor col in data_columns:if col in df_incremental.columns:df_incremental[col] = pd.to_datetime(df_incremental[col]).dt.strftime("%Y-%m-%d %H:%M:%S")inseridos_com_sucesso = 0for index, row in df_incremental.iterrows():try:row.to_frame().T.to_sql("tickets", con=engine, if_exists="append", index=False)inseridos_com_sucesso += 1except IntegrityError:continue # Ignora duplicaçõesprint(f"Total de registros inseridos com sucesso: {inseridos_com_sucesso}")else:print("Tabela existente mas sem dados, realizando carga inicial completa.")df_inicial = chamar_api_inicial_completa()else:print("Tabela não existe, criando tabela e realizando carga inicial completa.")metadata.create_all(engine) # Cria a tabeladf_inicial = chamar_api_inicial_completa()# Verifica se df_inicial foi criado e insere dados no bancoif "df_inicial" in locals():for col in data_columns:if col in df_inicial.columns:df_inicial[col] = pd.to_datetime(df_inicial[col]).dt.strftime("%Y-%m-%d %H:%M:%S")inseridos_com_sucesso = 0for index, row in df_inicial.iterrows():try:row.to_frame().T.to_sql("tickets", con=engine, if_exists="append", index=False)inseridos_com_sucesso += 1except IntegrityError:continue # Ignora duplicaçõesprint(f"Total de registros inseridos com sucesso: {inseridos_com_sucesso}")Para resolver o problema de lidar com a inserção de novas colunas sem precisar fazer um drop na tabela, você pode seguir uma abordagem onde o script verifica quais colunas existem no banco de dados e compara com as colunas da API. Se houver novas colunas, ele faz uma atualização full para essas colunas e continua com o processo incremental. Além disso, caso alguma coluna não venha mais da API, o script emite um alerta.
Exemplo sugirido pelo nosso amigo GPT:
import requests import pandas as pd from dotenv import load_dotenv import os import time from sqlalchemy import create_engine, inspect, text from sqlalchemy.exc import IntegrityError from datetime import datetime, timedelta # Carrega as variáveis de ambiente do arquivo .env load_dotenv() # Define a URL base da API Movidesk base_url = "https://api.movidesk.com/public/v1/tickets/past" token = os.getenv("API_TOKEN") # Função para chamar a API Movidesk e obter os dados paginados def chamar_api_movidesk(token, params=None): lista_dados_todas_paginas = [] skip = 0 top = 1000 if params is None: params = {} params.update({"token": token, "$top": top, "$skip": skip}) while True: response = requests.get(base_url, params=params) response_ajustado_json = response.json() if isinstance(response_ajustado_json, list) and response_ajustado_json: lista_dados_todas_paginas.extend(response_ajustado_json) else: break skip += top params["$skip"] = skip time.sleep(1) return lista_dados_todas_paginas # Função para comparar colunas entre o banco de dados e a API def verificar_novas_colunas(api_columns, db_columns): novas_colunas = [col for col in api_columns if col not in db_columns] colunas_faltantes = [col for col in db_columns if col not in api_columns] return novas_colunas, colunas_faltantes # Função para obter as colunas atuais da tabela do banco def get_db_columns(engine, tabela): inspector = inspect(engine) return [col["name"] for col in inspector.get_columns(tabela)] # Função para atualizar os últimos dois dias def atualizar_dados_ultimos_dois_dias(): dois_dias_atras = (datetime.now() - timedelta(days=2)).strftime("%Y-%m-%dT%H:%M:%SZ") params = {"$select": "id,createdDate,lastUpdate", "$filter": f"createdDate ge {dois_dias_atras}"} lista_dados_todas_paginas = chamar_api_movidesk(token, params) return pd.DataFrame(lista_dados_todas_paginas) # Conexão com o banco de dados MySQL db_user = os.getenv("DB_USER") db_password = os.getenv("DB_PASSWORD") db_host = os.getenv("DB_HOST") db_name = os.getenv("DB_NAME") engine = create_engine(f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}") # Pega os dados da API df_api = chamar_api_movidesk(token) api_columns = df_api.columns.tolist() # Verifica se a tabela já existe no banco if "tickets" in inspect(engine).get_table_names(): db_columns = get_db_columns(engine, "tickets") novas_colunas, colunas_faltantes = verificar_novas_colunas(api_columns, db_columns) if novas_colunas: print(f"Novas colunas detectadas: {novas_colunas}. Realizando atualização completa.") # Código para lidar com a inserção completa dessas colunas df_api[novas_colunas].to_sql('tickets', con=engine, if_exists='replace', index=False) else: print("Nenhuma nova coluna detectada, realizando atualização incremental.") df_incremental = atualizar_dados_ultimos_dois_dias() df_incremental.to_sql('tickets', con=engine, if_exists='append', index=False) if colunas_faltantes: print(f"Alerta: As seguintes colunas estão ausentes da API: {colunas_faltantes}") else: print("Tabela 'tickets' não existe, criando e realizando carga completa.") df_api.to_sql('tickets', con=engine, if_exists='replace', index=False)
Espero ter ajudado!
-
1 hora atrás, Alex Pereira disse:
Bom dia!
O problema que você está enfrentando é que algumas operações realizadas no Power Query podem fazer com que a opção de native query (consulta nativa) não esteja disponível. Para evitar esse problema, recomendo que você faça o máximo possível do trabalho diretamente em SQL antes de importar os dados para o Power Query.
Eu costumo criar a consulta SQL com todos os parâmetros e ajustes necessários desde o início. Isso facilita a chamada e evita problemas com a opção de native query.
Segue exemplo:
let strRangeStart = DateTime.ToText(RangeStart,[Format="yyyy-MM-dd HH:mm:ss", Culture="en-US"]), strRangeEnd = DateTime.ToText(RangeEnd,[Format="yyyy-MM-dd HH:mm:ss", Culture="en-US"]), Query = " SELECT sub.sk_ctrc AS sk_ctrc, sub.dia_inclusao_ocor, sub.usuario_ocor, sub.unid_ocor, sub.cod_ocor FROM dw.fato_ocorrencias sub WHERE sub.emissao_ctrc >= '" & strRangeStart & "' AND sub.emissao_ctrc < '" & strRangeEnd & "') ", Fonte = MySQL.Database("SEU IP", "DATABASE", [ReturnSingleDatabase=true, Query=Query]) in Fonte
Como já estou montando as consultas antecipadamente, isso garante que, ao puxar os dados do banco, o processamento será otimizado ao máximo, mesmo que o Direct Query esteja desativado. Enfim, está foi a solução que encontreii!
-
8 horas atrás, Henrik Oliveira Paes disse:
Olá pessoal!
Estou com problemas ao tentar fazer a atualização incremental em um banco de dados MySQL conectado via ODBC x64 MySQL 8.3 Unicode.
Acontece que, ao definir o RangeStart e RangeEnd, quando vou aplicar a atualização incremental no Front-end do BI, ele me apresenta a seguinte mensagem: Unable to M query can be folded. incremental refresh can't be suggested for non-foldable queries.
Até encontrei um vídeo no YouTube watch?v=QEFze-LdLqo onde é falado que dependendo das etapas aplicadas no Power Query, pode-se perder a instancia de "View Native Query". O que poderia explicar essa mensagem acima. Mas praticamente qualquer etapa, seja de mudar tipo de dados, fazer split de coluna ou só duplicar uma coluna já faz sumir essa "View Native Query".
Segue abaixo o print de uma das tabelas que tenho no Power Query com alguns tratamentos, onde já se "perdeu" essa possibilidade de incrementar dados:
Alguém já passou por isso? Porque eu acredito que é quase inviável fazer todas as transformações de dados no Banco SQL antes de trazer os dados para o Power BI.
Será que não tem uma outra opção de ativar essa atualização incremental e manter as etapas de transformação aplicadas?
No meu caso, o que acontece: O Power BI apresenta aquela mensagem em amarelo, e quando estou no Power BI Serviço ele simplesmente atualiza o banco todo como se não existisse os parâmetros de RangeStart e RangeEnd.
Bom dia!
O problema que você está enfrentando é que algumas operações realizadas no Power Query podem fazer com que a opção de native query (consulta nativa) não esteja disponível. Para evitar esse problema, recomendo que você faça o máximo possível do trabalho diretamente em SQL antes de importar os dados para o Power Query.
Eu costumo criar a consulta SQL com todos os parâmetros e ajustes necessários desde o início. Isso facilita a chamada e evita problemas com a opção de native query.
Segue exemplo:
let strRangeStart = DateTime.ToText(RangeStart,[Format="yyyy-MM-dd HH:mm:ss", Culture="en-US"]), strRangeEnd = DateTime.ToText(RangeEnd,[Format="yyyy-MM-dd HH:mm:ss", Culture="en-US"]), Query = " SELECT sub.sk_ctrc AS sk_ctrc, sub.dia_inclusao_ocor, sub.usuario_ocor, sub.unid_ocor, sub.cod_ocor FROM dw.fato_ocorrencias sub WHERE sub.emissao_ctrc >= '" & strRangeStart & "' AND sub.emissao_ctrc < '" & strRangeEnd & "') ", Fonte = MySQL.Database("SEU IP", "DATABASE", [ReturnSingleDatabase=true, Query=Query]) in Fonte
-
1 hora atrás, Maite Aronchi Cruz disse:
Olá pessoal,
Quero criar um fluxo no Power automate, para emitir um alerta quando uma coluna de uma planilha de excel, localizada em uma pasta do Sharepoint, é alterada.
Porém, não encontrei nenhum gatilho específico para que apenas quando a coluna for alterada ele dispare, somente se o arquivo for modificado. Para mim não importa se tiver outras modificações na planilha, somente nesta coluna.
Alguém poderia me ajudar?
Obrigada!
Veja esse video:
- 1
-
Booom diaaa verifique se você tem esse instalador no ambiente onde seu gateway está instalado!
Aqui documentação explica como instalar:
https://learn.microsoft.com/pt-br/power-bi/consumer/mobile/mobile-windows-10-phone-app-webview2-installation
Aqui está uma resalta!
-
Em 07/09/2024 em 18:14, brunobda disse:
Era isso, gente! Gratidão!
Favor marcar a resposta que mais te ajudou ! 😄
-
7 horas atrás, Caio Veiga disse:
pessoal,boa noite.To tentando rodar esse codigo pra criar uma coluna que tenha 4 valores possiveis:"Trimestre Atual","Trimestre passado","Mesmo Trimestre no ano passado" e "Outros"
o codigo:if [Ano] = List.Max(dCalendario[Ano]) and [Trimestre] = List.Max(dCalendario[Trimestre]) then "Trimestre Atual" else if [Ano] = List.Max(dCalendario[Ano]) and [Trimestre] = List.Max(dCalendario[Trimestre])-1 then "Trimestre Anterior" else if [Ano] = List.Max(dCalendario[Ano])-1 and [Trimestre] = List.Max(dCalendario[Trimestre]) then "T. Ano Passado" else "Outros" O que eu to fazendo de errado pra dar o seguinte erro:Expression.Error: Uma referência cíclica foi encontrada durante a avaliaçãoEsse erro de referência cíclica acontece porque você está tentando calcular o valor máximo de
dCalendario[Ano]
edCalendario[Trimestre]
dentro de uma fórmula que está, ao mesmo tempo, sendo aplicada à própria tabeladCalendario. Você pode tentar colocando em uma variável separada:
let AnoMax = List.Max(dCalendario[Ano]), TrimestreMax = List.Max(dCalendario[Trimestre]), AdicionarColuna = Table.AddColumn(dCalendario, "Período", each if [Ano] = AnoMax and [Trimestre] = TrimestreMax then "Trimestre Atual" else if [Ano] = AnoMax and [Trimestre] = TrimestreMax - 1 then "Trimestre Anterior" else if [Ano] = AnoMax - 1 and [Trimestre] = TrimestreMax then "T. Ano Passado" else "Outros" ) in AdicionarColuna
Obs.: A ooutra solução que dei é mais recomendada! -
Experimente fazer dessa forma comparando com a data de hoje.
let DataAtual = DateTime.LocalNow(), AnoAtual = Date.Year(DataAtual), MesAtual = Date.Month(DataAtual), TrimestreAtual = Number.RoundUp(MesAtual / 3), AdicionarColuna = Table.AddColumn(dCalendario, "Período", each if [Ano] = AnoAtual and [Trimestre] = TrimestreAtual then "Trimestre Atual" else if [Ano] = AnoAtual and [Trimestre] = TrimestreAtual - 1 then "Trimestre Anterior" else if [Ano] = AnoAtual - 1 and [Trimestre] = TrimestreAtual then "T. Ano Passado" else "Outros" ) in AdicionarColuna
-
Em 05/09/2024 em 09:14, Edson Igari disse:
Minha conta é PRO Alex, mas testei também com uma conta free e funcionou do mesmo jeito. O modelo de dados dele tem 537 linhas em uma fato e 47 linhas na outra. Você acha que um modelo desse tamanho geraria tal problema???
As configurações da máquina utilizada também podem influenciar, como memória RAM, processador, tudo isso influencia, pois do contrário, você poderia instalar o power bi numa máquina com windows home e rodar.Com a quantidade real de dados, a medida pode não funcionar tão bem, mas como o exemplo fornecido é apenas uma amostra, o volume de dados é significativamente menor, o que permite que a medida funcione no nosso ambiente. Nesse caso, há vários procedimentos que ele pode seguir para otimizar o desempenho. O ideal seria revisar a lógica da medida DAX e buscar formas de minimizar os cálculos, a fim de reduzir o tempo de processamento.
-
-
13 horas atrás, Henrik Oliveira Paes disse:
Boa tarde pessoal!
@Rafael Pereira O fornecedor do sistema havia pedido 700 reais mensais para "liberar a API" e enviar o manual. Então como ficaria inviável, optei por eu mesmo investigar a URL e conectar na API. Respondendo sua pergunta, não tenho manual.
@Henrique Merola Faria Infelizmente nesse formato não deu certo também, ele apresenta erro no campo de consulta mesmo.
@Alex Pereira Até consegui fazer funcionar utilizando essa função Uri.EscapeDataString, porém fica muito ruim de colocar depois um RangeStart e RangeEnd ai dentro, pelo menos eu não imaginei uma forma de fazer isso.
Galera agradeço pelo apoio, mas hoje pela manhã consegui resolver depois de muita insistência com o ChatGPT. Vou colocar a solução abaixo.
Você faz uma concatenação só que no caso deve transformar a data primeiro nesse formato xx/xx/xxxx como fiz exemplo te mostrei. Veja exemplo abaixo:
let DataInicio = DateTime.ToText(RangeStart, "dd/MM/yyyy"), DataFim = DateTime.ToText(RangeEnd, "dd/MM/yyyy"), Body = Json.FromValue( [ page = pageNumber, limit = 25, filter = "[ { ""property"":""AnoMes"", ""operator"":""greaterOrEqual"", ""value"":""" & DataInicio & """, ""and"":true }, { ""property"":""AnoMes"", ""operator"":""lessOrEqual"", ""value"":""" & DataFim & """, ""and"":true } ]" ] ) in Body
- 1
-
Para criar um bookmark que afete apenas dois visuais que estão no mesmo lugar no Power BI, o processo pode ser feito agrupando os dois visuais. Selecione os dois gráficos que deseja controlar e, no painel de seleção, agrupe-os. Em seguida, oculte esse grupo para controlar sua visibilidade diretamente pelo bookmark.
-
Bom diaaa! Como o Rafael mencionou, o erro está relacionado à ausência de um gateway instalado. Nesse caso, será necessário instalar o gateway no servidor onde os dados estão hospedados, ou em um ambiente que tenha acesso de rede ao servidor, como na AWS, por exemplo. É possível configurar o acesso à rede através de IPs específicos, restringindo o acesso conforme necessário. Portanto, o gateway não precisa estar no mesmo local que o servidor, mas sim em um ambiente que possua conectividade com ele.
Após obter esse acesso, será necessário configurar o seu gateway de dados, inserindo as conexões necessárias para que ele funcione corretamente. No seu caso específico, você precisará configurar as credenciais de acesso ao servidor. É importante lembrar: utilize o Gateway Enterprise para garantir um desempenho ideal.
Nesta aula, o mestre ensina como fazer essa configuração: https://app.xperiun.com/aula/1704330688818x596973771367997700?v=1704838860504x652294912539400400
- 2
-
13 horas atrás, Edson Igari disse:
@Lucas Denker, não sei se está certo, mas aqui carregou normal. Sua máquina é boa???
@Edson Igari, esse erro geralmente ocorre devido ao consumo de memória do Power BI. Pode ser que a conta que você está utilizando tenha uma configuração ou quantidade de recursos diferente da dele, o que faz com que funcione corretamente no seu ambiente, mas não no dele. Por exemplo, ele pode estar utilizando uma conta Pro, enquanto a sua é PPU (Premium Per User), que tem limites de memória mais altos.
-
Boooom diaaa
Geralmente, as APIs possuem um parâmetro no corpo da requisição chamado query ou algo semelhante, que permite passar filtros como os de datas. Abaixo segue um exemplo de como esse filtro pode ser aplicado no body da requisição POST no Power Query utilizando atualização incremental.
let ObterToken = () => let urlToken = "https://autenticador.secullum.com.br/Token", grantType = grant_type_secullum, username = username_secullum, password = password_secullum, clientId = client_id_secullum, body = "grant_type=" & Uri.EscapeDataString(grantType) & "&username=" & Uri.EscapeDataString(username) & "&password=" & Uri.EscapeDataString(password) & "&client_id=" & Uri.EscapeDataString(clientId), headers = [#"Content-Type" = "application/x-www-form-urlencoded"], options = [ Headers = headers, Content = Text.ToBinary(body) ], response = Json.Document(Web.Contents(urlToken, options)), accessToken = response[access_token] in accessToken, accessToken = ObterToken(), urlGet = "https://pontowebintegracaoexterna.secullum.com.br/IntegracaoExterna/Batidas", 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 body2 = "DataInicio=" & Uri.EscapeDataString(DataInicio) & "&DataFim=" & Uri.EscapeDataString(DataFim), // Corrigido: removido espaço em branco headersGet = [#"Authorization" = "Bearer " & accessToken], optionsGet = [ Headers = headersGet, Query = [ DataInicio = DataInicio, DataFim = DataFim ] ], responseGet = Json.Document(Web.Contents(urlGet, optionsGet)) in responseGet
É importante ressaltar que a forma como as datas precisam ser passadas pode variar dependendo da API. Isso significa que você deve adaptar o formato da data dos parâmetros de atualização incremental para atender às exigências específicas da API que está utilizando. -
Esse erro ocorre porque a medida DAX no Power BI está consumindo muitos recursos e excede os limites de capacidade do serviço. Para resolver o problema, você pode começar revisando a lógica da sua medida para garantir que não está realizando cálculos desnecessários ou repetitivos. Utilizar variáveis pode ajudar a melhorar o desempenho ao evitar cálculos repetidos. Além disso, verifique se você está aplicando filtros e agregações apropriados para reduzir o volume de dados processados.
Também é importante considerar a simplificação do modelo de dados, reduzindo a complexidade das tabelas e dos relacionamentos. O particionamento de tabelas grandes ou o uso de filtros pode ajudar a reduzir a quantidade de dados processados de uma só vez. Se você estiver usando Power BI Premium, ajustar a configuração de recursos pode ser útil. Além disso, utilizar tabelas de agregação pode pré-calcular dados e melhorar o desempenho dessa consulta.
Projeção de Dashboard em TVs
em Power BI online (serviço)
Postado
@Keila Sanara Souza Lopesé importante você dar uma pesquisa antes de comprar qualquer dispositivo, que talvez não solucione sua necessidade!