Ir para conteúdo
  • 0

LINGUAGEM M


Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos
Postado

Boa tarde!

Tenho uma tabela onde ambas possuem em comum o fornecedor:

image.png.e12147b907959ba1bd592e9346dacc2b.png

Porém, quando vou trazer as informações do banco para fazer a conciliação, sempre há diferença em relação ao nome e toda vez tenho que ficar substituindo.

O que gostaria, é que toda vez que salvasse meu arquivo na pasta, ele já carregasse com essa correção e trouxesse o nome igualzinho como está no sistema:

image.png.09c4ea216d655bc3ca032ea4ea86d676.png

 

Isso é possível?

 

10 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado

Segue uma sugestão em anexo.

Como os valores estão vindo sem nenhum padrão, adicionei uma tabela "De_Para" que está passando valores personalizados para auxiliar na corrigir os nomes, como por exemplo: "Ind" pode significar "Industrial".Também coloquei o fator de similaridade "Threshold = 0.35", por conta da falta de padronização.

Correspondencia difusa.pbix

  • 1
  • Alunos
Postado

Bom dia Damiana;

Existe a função em M Table.AddFuzzyClusterColumn, ela cria uma coluna com valores representativos utilizando correspondência difusa entre as linhas, então ela meio que ajusta os nomes com base em uma pontuação de similaridade, segue abaixo um exemplo, basta joga-lo em uma consulta nula:

let
    Fonte = Table.FromRows(
        Json.Document(
            Binary.Decompress(
                Binary.FromText(
                    "i45WMg5RcPH0dfULPjzVNVjBJ8TFUcHXVSlWJ1rJxdPdM8TRR8HDNwImhKIYXZFSbCwA", BinaryEncoding.Base64
                ),
                Compression.Deflate
            )
        ),
        let
            _t = ((type nullable text) meta [Serialized.Text = true])
        in
            type table [Fornecedor = _t]
    ),
    #"Tipo Alterado" = Table.TransformColumnTypes(Fonte, {{"Fornecedor", type text}}),
    #"Coluna Ajustada" = Table.AddFuzzyClusterColumn(
        #"Tipo Alterado", "Fornecedor", "Fornecedor Ajustado", [IgnoreCase = true, IgnoreSpace = true, Threshold = 0.6]
    )
in
    #"Coluna Ajustada"

O trecho do código que tem "Threshold = 0.6", você deve colocar um número entre 0 e 1 que especifique a pontuação de similaridade com quais a função irá agrupar os nomes, quanto mais próximo de 1 você colocar, mais semelhantes deverão ser os valores das linhas para que sejam agrupadas.

Vale você testar utilizando essa função, e caso necessário em algumas situações extremas, utilizar o "Substituir Valores" antes de chamar a função para facilitar. 

  • 1
  • Alunos
Postado

Você pode adicionar a função de Substituir Valores no seu código.

 

SubstituirNomeBanco = Table.ReplaceValue(EtapaAnterior,
                    each [FORNECEDOR],
                    each if [FORNECEDOR]="DIGITAL HMX ME" then "DIGITAL HMX"       //Adicione quantos valores desejar substituir
                    else if [FORNECEDOR]="3T DIMENSÕES LTDA ME" then "3T DIMENSÕES
                    else null,
                    Replacer.ReplaceText,
                    {"FORNECEDOR"}
                )

  • 0
  • Alunos
Postado

@Erick Oliveira, coloquei essa função no Bi, porém para aparecer uma lista de meus fornecedores, preciso criar uma tabela com os fornecedores do banco e sistema e depois mesclar somente os fornecedores?

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...