Alunos Flávio Pinheiro Postado Maio 6, 2022 Alunos Compartilhar Postado Maio 6, 2022 Boa tarde amigos. Tenho o seguinte problema e recorro á quem possa me ajudar. Seguinte: Minha pretensão é exibir um gráfico de colunas com com 4 datas no eixo x, porem essas datas devem ser dinâmicas com base na data que será filtrada. Conforme print após selecionar o dia 03/03/2022 devo ter 4 colunas com as respectivas datas: 03/03/2022, 23/02/2022, 14/02/2022 e 08/02/2022. A regra para esse comportamento é: retornar as 4 ultimas datas anteriores a data atual selecionada inclusive a própria data. (vide print). Obs.: consegui gerar uma tabela via dax com o resultado esperado, porem não consegui plota-las no grafico. Desde de já agradeço por qualquer ajuda. PAINEL RH_EXEMPLO_ENVIO.pbix Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Solução Flávio Pinheiro Postado Junho 6, 2022 Autor Alunos Solução Compartilhar Postado Junho 6, 2022 Em 30/05/2022 em 14:34, Rodrigo R1 disse: Boa tarde, @Flávio Pinheiro, tudo bem amigo? Quanto tempo? Achei que já tivesse solucionado...rsrsrsrsrs Fico feliz que a minha indicação da Live tenha te ajudado a compreender o seu problema. Vamos lá....no caso da diferença de granularidade entre o seu caso e o da Live não tem problema algum. Basta somente ajustar à sua necessidade. O Leo usa a Dateinsperiod para o mês e você irá usar para o dia - colocando no último argumento da medida que você deseja o período em dias - day. Para tanto, no seu modelo será preciso criar uma dcalendário auxiliar. Pode ser criada em Dax mesmo - sem problemas - como o Leo faz na Live. Aí vc irá criar um relacionamento inativo entre essa dcalendário auxiliar e sua tabela fato de onde vem os valores da medida. No eixo do visual você irá colocar a coluna de dias da sua tabela calendário auxiliar. Feito isso, você irá criar a medida abaixo e depois coloca-la no seu visual: Medida R1 = VAR vDataFiltrada = MAX(dCalendario[Data]) VAR vPeriodo = DATESINPERIOD( 'Auxdcalendario'[Data], vDataFiltrada, -4, DAY) VAR vResultado = CALCULATE( [SUA MEDIDA], ALL(dCalendario), KEEPFILTERS(vPeriodo), USERELATIONSHIP('Auxdcalendario'[Data], suatabelaFato[Data]) ) RETURN vResultado Na segmentação de dados você continuará usando normalmente a coluna de data da sua dcalendário original, ok? - IMPORTANTE ISSO!!! Bom....acredito que seguindo os passos acima você irá conseguir. Caso ainda não consiga, favor anexar seu PBIX atualizado com suas tentativas, dcalendário auxiliar e medidas criadas, pra ficar mais fácil identificar os erros. Sucesso aí, amigo. Show de bola. Consegui reproduzir conforme sua orientçaao. Muito obrigado por sua disposição e ajuda. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Nelson Maroni Postado Maio 6, 2022 Alunos Compartilhar Postado Maio 6, 2022 Boa tarde, @Flávio Pinheiro, precisa criar uma dCalendario e com ela vai conseguir fazer o filtro dinâmico, abri o seu PBI, porém o arquivo não me deixa fazer alterações, caso não consiga solucionar, providencia uma base teste. Caso alguma resposta tenha ajudado, você pode marcá-la como Solução e votar positivamente a resposta. Com isso o tópico será fechado, obrigado! Atenciosamente, Nelson Maroni Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Rodrigo R1 Postado Maio 7, 2022 Alunos Compartilhar Postado Maio 7, 2022 Boa noite, @Flávio Pinheiro. Tudo bem, amigo? A solução para a sua dúvida está na Live 72: [Live #72 Mestre Power BI] Tornando os Eixos Dinâmicos em visuais com DAX Avançado - Lives sobre Linguagem DAX - Pilar 4 (powerbiexperience.com) Espero que tenha ajudado e se for a melhor resposta, gentileza marcá-la para fechar o tópico. Sucesso, amigo. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Nelson Maroni Postado Maio 7, 2022 Alunos Compartilhar Postado Maio 7, 2022 (editado) Prezado @Flávio Pinheiro, segue abaixo o PBI com as medidas desenvolvidas, faltou deixar o eixo X dinâmico, entretanto as medidas para trazer os valores retroativos conforme solicitou estão prontas, também criei a tabela Calendário através do DAX. Abaixo da imagem seguem as medidas criadas. ATIVOS + FERIAS EF 1 = SUM(Z_PAINEL_HC[EFETIVO_ATIVO]) ATIVOS + FERIAS EF 1 (DATA) = MAX(Z_PAINEL_HC[DATA]) EFETIVO -1M (1) = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) VAR vATIVOS_MAIS_FERIAS = CALCULATE( [ATIVOS + FERIAS EF 1]; FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] = vMAX_DATA_ANTERIOR ) ) RETURN vATIVOS_MAIS_FERIAS EFETIVO -1M (1) DATA = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) RETURN vMAX_DATA_ANTERIOR EFETIVO -2M (1) = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR_1 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) VAR vMAX_DATA_ANTERIOR_2 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_1 ) ) VAR vATIVOS_MAIS_FERIAS = CALCULATE( [ATIVOS + FERIAS EF 1]; FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] = vMAX_DATA_ANTERIOR_2 ) ) RETURN vATIVOS_MAIS_FERIAS EFETIVO -2M (1) (DATA) = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR_1 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) VAR vMAX_DATA_ANTERIOR_2 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_1 ) ) RETURN vMAX_DATA_ANTERIOR_2 EFETIVO -3M (1) = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR_1 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) VAR vMAX_DATA_ANTERIOR_2 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_1 ) ) VAR vMAX_DATA_ANTERIOR_3 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_2 ) ) VAR vATIVOS_MAIS_FERIAS = CALCULATE( [ATIVOS + FERIAS EF 1]; FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] = vMAX_DATA_ANTERIOR_3 ) ) RETURN vATIVOS_MAIS_FERIAS EFETIVO -3M (1) (DATA) = VAR vMAX_DATA = MAX(Z_PAINEL_HC[DATA]) VAR vMAX_DATA_ANTERIOR_1 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA ) ) VAR vMAX_DATA_ANTERIOR_2 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_1 ) ) VAR vMAX_DATA_ANTERIOR_3 = CALCULATE( MAX(Z_PAINEL_HC[DATA]); FILTER( ALL( Z_PAINEL_HC); Z_PAINEL_HC[DATA] < vMAX_DATA_ANTERIOR_2 ) ) RETURN vMAX_DATA_ANTERIOR_3 dCalendario = ADDCOLUMNS( CALENDARAUTO(); "Ano"; FORMAT([Date]; "yyyy"); "Mês"; FORMAT([Date]; "mm"); "Nome Mês"; FORMAT([Date]; "mmm"); "Dia"; FORMAT([Date]; "dd") ) Caso alguma resposta tenha ajudado, você pode marcá-la como Solução e votar positivamente a resposta. Com isso o tópico será fechado, obrigado! Atenciosamente, Nelson Maroni 1425308057_PAINELRH_Solução Parcial.pbix Editado Maio 7, 2022 por Nelson Maroni esqueci de incluir o arquivo do pbi solução parcial Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Bruno Abdalla de Souza Postado Maio 7, 2022 Alunos Compartilhar Postado Maio 7, 2022 @Flávio Pinheiro Criei uma dCalendario, mas sem realizar o relacionamento. Depois fiz a seguinte medida: Efetivos afastado teste = VAR vData = MAX(Z_PAINEL_HC[DATA]) VAR v4Datas = TOPN( 4, FILTER( ALL(Z_PAINEL_HC[DATA]), Z_PAINEL_HC[DATA] <= vData ), [DATA] ) VAR vDataContexto = MAX(dCalendario[Date]) RETURN CALCULATE( [AFASTADO EF], FILTER( v4Datas, [DATA] = vDataContexto ) ) PAINELRH_EXEMPLO_ENVIO.pbix Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Flávio Pinheiro Postado Maio 9, 2022 Autor Alunos Compartilhar Postado Maio 9, 2022 Bom dia Srs., Quero agradecer a todos vocês pelo tempo que empreenderam em me ajudar, e também pela rapidez de resposta. Todas as soluções contribuíram com meu aprendizado, e estou avaliando todas as soluções independente de qual vou utilizar. Estou assistindo a aula citada pelo amigo @Rodrigo R1 que apresenta realmente necessidade. Todos vocês estão de parabéns! Que Deus vos abençoem. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Flávio Pinheiro Postado Maio 30, 2022 Autor Alunos Compartilhar Postado Maio 30, 2022 Em 06/05/2022 em 21:12, Rodrigo R1 disse: Boa noite, @Flávio Pinheiro. Tudo bem, amigo? A solução para a sua dúvida está na Live 72: [Live #72 Mestre Power BI] Tornando os Eixos Dinâmicos em visuais com DAX Avançado - Lives sobre Linguagem DAX - Pilar 4 (powerbiexperience.com) Espero que tenha ajudado e se for a melhor resposta, gentileza marcá-la para fechar o tópico. Sucesso, amigo. Bom dia Rodrigo, Seguinte amigo, dei uma olhada na aula live 72 e realmente é o que preciso, porem não consegui evoluir pois minha granularidade é diferente. O Leo faz um Datesinperiod no mes e no meu caso preciso que retorne o range de datas que contem dias intercalados como expliquei no exemplo. Consegue me ajudar? Segue anexa base que uso, o pbix está na postagem original Z_PAINEL_HC.xlsx Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Rodrigo R1 Postado Maio 30, 2022 Alunos Compartilhar Postado Maio 30, 2022 Boa tarde, @Flávio Pinheiro, tudo bem amigo? Quanto tempo? Achei que já tivesse solucionado...rsrsrsrsrs Fico feliz que a minha indicação da Live tenha te ajudado a compreender o seu problema. Vamos lá....no caso da diferença de granularidade entre o seu caso e o da Live não tem problema algum. Basta somente ajustar à sua necessidade. O Leo usa a Dateinsperiod para o mês e você irá usar para o dia - colocando no último argumento da medida que você deseja o período em dias - day. Para tanto, no seu modelo será preciso criar uma dcalendário auxiliar. Pode ser criada em Dax mesmo - sem problemas - como o Leo faz na Live. Aí vc irá criar um relacionamento inativo entre essa dcalendário auxiliar e sua tabela fato de onde vem os valores da medida. No eixo do visual você irá colocar a coluna de dias da sua tabela calendário auxiliar. Feito isso, você irá criar a medida abaixo e depois coloca-la no seu visual: Medida R1 = VAR vDataFiltrada = MAX(dCalendario[Data]) VAR vPeriodo = DATESINPERIOD( 'Auxdcalendario'[Data], vDataFiltrada, -4, DAY) VAR vResultado = CALCULATE( [SUA MEDIDA], ALL(dCalendario), KEEPFILTERS(vPeriodo), USERELATIONSHIP('Auxdcalendario'[Data], suatabelaFato[Data]) ) RETURN vResultado Na segmentação de dados você continuará usando normalmente a coluna de data da sua dcalendário original, ok? - IMPORTANTE ISSO!!! Bom....acredito que seguindo os passos acima você irá conseguir. Caso ainda não consiga, favor anexar seu PBIX atualizado com suas tentativas, dcalendário auxiliar e medidas criadas, pra ficar mais fácil identificar os erros. Sucesso aí, amigo. Link para o comentário Compartilhar em outros sites More sharing options...
0 Alunos Rodrigo R1 Postado Junho 6, 2022 Alunos Compartilhar Postado Junho 6, 2022 3 horas atrás, Flávio Pinheiro disse: Show de bola. Consegui reproduzir conforme sua orientçaao. Muito obrigado por sua disposição e ajuda. Boa noite, @Flávio Pinheiro, tudo bem amigo? Que bom que com minha orientação conseguimos encontrar a solução mais indicada para o seu case. Poderia marcar a minha resposta como melhor solução, por gentileza? Isso contribui para que os demais usuários da comunidade encontrem a melhor solução, caso tenham passado pelo mesmo problema, além de ser uma premissa do fórum. Obrigado, amigo. Sucesso aí. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Flávio Pinheiro
Boa tarde amigos.
Tenho o seguinte problema e recorro á quem possa me ajudar.
Seguinte:
Minha pretensão é exibir um gráfico de colunas com com 4 datas no eixo x, porem essas datas devem ser dinâmicas com base na data que será filtrada.
Conforme print após selecionar o dia 03/03/2022 devo ter 4 colunas com as respectivas datas: 03/03/2022, 23/02/2022, 14/02/2022 e 08/02/2022.
A regra para esse comportamento é: retornar as 4 ultimas datas anteriores a data atual selecionada inclusive a própria data. (vide print).
Obs.: consegui gerar uma tabela via dax com o resultado esperado, porem não consegui plota-las no grafico.
Desde de já agradeço por qualquer ajuda.
PAINEL RH_EXEMPLO_ENVIO.pbix
Link para o comentário
Compartilhar em outros sites
9 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