Ir para conteúdo
  • 0

Filtragem e Relacionamento


Henrique Marsal
Ir para solução Solucionado por Edson Igari ,

Pergunta

  • Alunos

Tenho as seguintes tabelas . Quero filtrar o 

Total de Linhas da tabela dClientes fazendo um filtro pelo status da fPagamentos.

Mas o filtro só funciona se tiver no contexto em matriz por exemplo. Na medida ou filtro não funciona. Acontece que nem todos os id do cliente tá no f pagamentos. Quando eu conto ele mostra o valor total da dCLientes e ignora o filtr oda fpagamentos.
image.png.5b90e4801c6ad838e64aefd781145ab9.png

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
52 minutos atrás, Henrique Marsal disse:
Clientes Não Pagam =
CALCULATE(DISTINCTCOUNT(dClientes[ClienteId]),
    CROSSFILTER(dClientes[ClienteId], fPagamentos[ClienteId], Both),
    fPagamentos[Status Pagamento] = "Não Pago"
)


Com o filtro ele funciona. Mas se remover o filtro ele pega o total de linhas da tabela dCliente ignorando os id que não possui na tabela de fpagamentos.

Deveria funcionar. Tenta o seguinte:

QtdClientePagamento = 

VAR vClientesFato = VALUES(fPagamentos[ClienteId])
VAR vClientesDimensao = VALUES(dCliente[ClienteId])
VAR vIntersecao = INTERSECT(vClientesFato,vClientesDimensao)
RETURN
COUNTROWS(vIntersecao)

Link para o comentário
Compartilhar em outros sites

  • 1
  • Alunos

@Henrique Marsal, tudo bem? Se você quer filtrar a fPagamentos e contar na dCliente, precisava fazer isso via medida utilizando CROSSFILTER com both, que ativará o relacionamento para ambas as direções.

Exemplo:

QtdClientePagamento = 
CALCULATE(
        DISTINCTCOUNT(dCliente[ClienteId]),
        CROSSFILTER(dCliente[ClienteId],fPagamentos[ClienteId],both)
)

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Tentei, mas não funciona também. Não sei a raíz da causa problema. A relação está correta. O ùnco detalhe é que a Clientes tem mais id do que na fpagamentos. N a matriz o filtro funciona. Mas já nas medidas não. 
 

Clientes Não Pagam =
CALCULATE(DISTINCTCOUNT(dClientes[ClienteId]),
    CROSSFILTER(dClientes[ClienteId], fPagamentos[ClienteId], Both)
)
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 minuto atrás, Henrique Marsal disse:

Tentei, mas não funciona também. Não sei a raíz da causa problema. A relação está correta. O ùnco detalhe é que a Clientes tem mais id do que na fpagamentos. N a matriz o filtro funciona. Mas já nas medidas não. 
 

Clientes Não Pagam =
CALCULATE(DISTINCTCOUNT(dClientes[ClienteId]),
    CROSSFILTER(dClientes[ClienteId], fPagamentos[ClienteId], Both)
)

Deveria funcionar. Tenta o seguinte:

QtdClientePagamento = 

VAR vClientesFato = VALUES(fPagamentos[ClienteId])
VAR vClientesDimensao = VALUES(dCliente[ClienteId])
VAR vIntersecao = INTERSECT(vClientesFato,vClientesDimensao)
RETURN
COUNTROWS(vIntersecao)

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
6 minutos atrás, Henrique Marsal disse:

na verdade quando eu faço o Filtro ele funciona agora. Mas como eu posso calcular apenas a quantidade de Id que contenha ta tabela de fpagamentos? sem filtro de status aplicado

Com essa segunda medida que te mandei tem que funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Clientes Não Pagam =
CALCULATE(DISTINCTCOUNT(dClientes[ClienteId]),
    CROSSFILTER(dClientes[ClienteId], fPagamentos[ClienteId], Both),
    fPagamentos[Status Pagamento] = "Não Pago"
)


Com o filtro ele funciona. Mas se remover o filtro ele pega o total de linhas da tabela dCliente ignorando os id que não possui na tabela de fpagamentos.
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...