Página 1 de 1

Filtrar um campo com base em filtro de outro campo

Enviado: 13 Mar 2021 às 18:00
por werlewow
Bom dia,
Estou começando meu aprendizado no Power Bi e estou com dificuldades em um filtro.
Basicamente, tenho uma tabela com pedido (sendo esse o id da tabela), qtd, cliente, data_previsão e data_entrega.
No meu relatório, inseri um filtro de data (tipo slicer) que filtra a data de previsão de entrega do pedido, para que mostre ao usuário um resumo da semana, por exemplo.
Gostaria de inserir um cartão mostrando quantos pedidos foram entregues dentro do período filtrado cuja as datas de previsão não estão dentro do período. Ou seja, mostre os pedidos que ou foram entregues atrasados ou adiantados, pois a data de previsão não está dentro do período e a data de entrega sim. Porém o filtro de data está filtrando a data de previsão de entrega dos pedidos, então minha primeira reação foi remover a interação desse cartão com o período filtrado. Mas assim ele me retorna tudo que foi entregue, pois não consigo filtrar para que a data de entrega esteja dentro do período filtrado no slicer que removi a interação.
Não sei se fui claro, mas acredito que se pudesse atribuir um nome as datas de filtro do slicer, tipo data_1 e data_2, assim poderia criar uma coluna de apoio na tabela pedidos, onde se a data_Entrega estiver entre a data_1 e data_2, retornasse 1 e se estiver fora, 0 , por exemplo. Aí só adiciono o cartão e insiro o filtro como dessa coluna criada = 1.

Muito Obrigado

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 15 Mar 2021 às 21:36
por Vilmar
Pode enviar seu pbix ou uma amostra do seus dados?

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 16 Mar 2021 às 10:27
por werlewow
Bom dia,
Montei um arquivo de exemplo.
Perceba que inseri uma segmentação de dados para funcionar como filtro do relatório, baseado na data de previsão do pedido.
No cartão, quero que conte os pedidos entregues dentro da data filtrada, porém com data de previsão de entrega fora da data.
Exemplo: Se você selecionar as datas 15/03 - 19/03 no slicer de filtro, o cartão deve mostrar o número 2, pois está contando os pedidos 6 e 8, que não estão previstos para entrega nesse período, porém possuem a data de entrega dentro do mesmo.
Deu para entender?

Desde já agradeço a ajuda.

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 16 Mar 2021 às 22:46
por Vilmar
Veja se o anexo ajuda

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 23 Mar 2021 às 16:47
por werlewow
Boa tarde,
Desculpe a demora, mas não seria bem isso.
Deixei outro arquivo em anexo, repare que filtrei no slicer entre as datas 21/03 e 25/03.
O que preciso é o número de pedidos entregues dentro dessa data, porém com suas datas de previsão fora das mesmas.
Ou seja, retornar a contagem = 2, pois deve contar o pedido 6 e 8, desconsiderando o pedido 3, pois o mesmo foi entregue dentro do período filtrado, mas sua data de previsão está fora.

Obrigado

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 23 Mar 2021 às 21:12
por Vilmar
Tente este

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 25 Mar 2021 às 16:16
por werlewow
Na verdade ainda não está 100%.
Perceba que se você filtrar entre o dia 21 e 22 apenas, deveria retornar a contagem de 1 pedido, no caso o pedido 8, pois ele possui data de previsão de entrega fora da data filtrada, porém com data de entrega dentro.
Obrigado por enquanto.

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 25 Mar 2021 às 22:46
por Vilmar
Uma hora dá certo rsrs

Tente:
Código: Selecionar todos
Entregas = 
CALCULATE (
    COUNT ( Planilha1[data_entrega] );
    FILTER (
        ALL ( Planilha1 );
        Planilha1[data_previsão] > MAX ( Planilha1[data_previsão] ) &&
        Planilha1[data_entrega] <= MAX( Planilha1[data_previsão] )
    )
)

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 26 Mar 2021 às 07:29
por werlewow
Bom dia,
Não ainda, anexei o mesmo exemplo com mais alguns pedidos. Perceba que filtrei entre o dia 22 ate 26/03, a contagem deveria ser = 2, contando o pedido 4 e o 17, entende?
Agradeço muito sua ajuda, não faz ideia como esta me agregando. Também estou tentando varias variações das suas sugestões, mas realmente não consegui.

Obrigado novamente.

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 26 Mar 2021 às 12:50
por Vilmar
Acho que vai dar certo agora
Código: Selecionar todos
Entregas = 
CALCULATE (
    COUNT ( Planilha1[data_entrega] );
    FILTER (
        ALL ( Planilha1 );
        Planilha1[data_previsão] >= MAX ( Planilha1[data_previsão] )
            && Planilha1[data_previsão] >= MIN ( Planilha1[data_previsão] )
            && Planilha1[data_entrega] <= MAX ( Planilha1[data_previsão] )
            && Planilha1[data_entrega] >= MIN ( Planilha1[data_previsão] )
    )
)

Re: Filtrar um campo com base em filtro de outro campo

Enviado: 26 Mar 2021 às 15:19
por werlewow
Então, para o exemplo, funcionou perfeitamente.
Para minha base de dados aqui da empresa, não tinha dado certo. Aí utilizei o comando format(data, "dd/mm/yy") em todos os campos, e "quase" consegui. Era para retornar 16 pedidos, mas retornou 14. Acho que consigo me virar agora, mas você poderia me explicar melhor como funciona essa fórmula? Fiquei um tempão analisando e não está fazendo sentido na minha cabeça.
Tipo, nessa parte (&& Planilha1[data_previsão] >= MIN ( Planilha1[data_previsão] ) basicamente você está falando: onde tudo da data de previsão (ignorando o filtro do slicer) seja maior ou igual que a menor data do slicer, isso? Então, duas duvidas:

1) Por que essa parte? Na minha cabeça, faria sentido se fosse >= que a maior data do slicer (apesar de eu ter testado e não deu certo...)
2) O comando ALL ali no começo do filtro, tem a função de remover o filtro do slicer na formula, certo? Mas ele só remove o filtro da primeira parte de cada instrução? Tipo :

&& Planilha1[data_previsão] ( aqui esta pegando todas as data de previsão, sem o filtro) >= MIN ( Planilha1[data_previsão] (e aqui considera o filtro)

Seria essa a ideia?

Agradeço muito sua ajuda!!