Ir para conteúdo
  • 0

Criar uma coluna calculada com uma correspondência parcial.


Jorge
Ir para solução Solucionado por Jorge ,

Pergunta

  • Alunos

Boa tarde, pessoal!

 

Tenho a seguinte situação, será que alguém conseguiria me dar uma força.

 

Tenho duas tabelas:

D_CLIENTES = tabela com o cadastro dos clientes.

F_LIGAÇÔES = tabela que registra as ligações telefônicas efetuadas.

 

Na tabela D_CLIENTES, existem clientes que possuem um telefone cadastrado, outros dois, até três telefones, todos dentro da mesma coluna e os números são concatenados. Existem também clientes que não possuem nenhum telefone cadastrado, o que não é um problema.

Preciso fazer uma estatística dos clientes que recebem ligações e preciso montar gráficos de quantidades de ligações por cliente.Para isso pensei em criar uma coluna calculada que informe o cliente daquela ligação.

 

Criei uma função em DAX que retira toda a pontuação, símbolos e espaços que possuem tanto no número do cliente quanto no número discado.

 

image.png.624d920871945be971bc098aad67318f.png

 

Agora precisaria montar uma fórmula DAX que encontrasse o número discado dentro da string que é o campo de número de telefone do cliente e me retornasse o nome do cliente para popular a tabela.

 

Por exemplo:

Número discado:333

Telefone do Cliente Fulano:  123/ 234 /333

Como o 333 está dentro do  123/ 234 /333 então ele vai retornar o nome "Fulano" para popular a coluna calculada.

 

Um exemplo dos dados é esse:

 

image.png.f60d33ee60a235dabe9203462292aa83.png

image.png.fa7f8e93faede5e46add4960ed93222c.png

 

 

Desde já agradeço muito.

 

 

 

EXEMPLO_TELEFONE.pbix

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Boa tarde, Michele! tudo bem?

 

Consegui dar um jeito agora, a estrutura é aquela que mostrei, criei a coluna com essa consulta, fiz teste por amostragem e ficou ok.

 

 

CLIENTE = MAXX(
    FILTER(
        D_CLIENTES,
        FIND('LIGAÇÕES'[NUMERO],SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(D_CLIENTES[TELEFONE],"-",""),"/","")," ",""),,0)
        )
        ,D_CLIENTES[NOME])

 

Coloquei esses vários substitutes para tirar todos as pontuações dos números e criar uma string sequencial de números para poder comparar os valores com o find.

 

Agradeço muito pela sua ajuda e disposição.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá Jorge,

Fiz alguns testes aqui tentando usar CONTAINSSTRING, porém não funciona porque o segundo argumento precisa ser o texto a ser comparado, e pela tua necessidade teria que passar a coluna, o que traria uma lista de valores e isso daria erro ao usar a fórmula.

Só consegui chegar no que tu quer usando LOOKUPVALUE, porém para isso precisará criar uma coluna de telefone para cada telefone do cadastro, e não deixar tudo junto. No meu teste (arquivo anexo) criei apenas duas colunas para o telefone e apenas para testar se funcionaria mesmo, porém não sei como fazer isso de forma "automática", considerando que a pessoa pode ter N telefones e ao pedir para separar a coluna por "/" no M (Power Query) vai criar uma coluna para cada telefone.

Estou te enviando caso ajude a ter alguma ideia a partir disso, fora essas duas funções que citei não sei como seria possível chegar nessa sua necessidade.

Talvez haja uma forma de tratar isso pelo M(Power Query) também, outra opção seria uma medida que trouxesse o valor de cada telefone separadamente, mas não sei se tem como fazer isso.

Teste Nome Cliente Ligação - LOOKUPVALUE.pbix

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...