Ir para conteúdo
  • 0

LINGUAGEM M


Damiana
Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos

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?

 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

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

Link para o comentário
Compartilhar em outros sites

  • 1
  • Alunos

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. 

Link para o comentário
Compartilhar em outros sites

  • 1
  • Alunos

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"}
                )

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