Power Query – Extrair palavra a partir de campos com textos.

Hoje abordarei como realizar uma consulta no Power Query para validar se em um campo “célula” tem palavras específicas de acordo com a necessidade do modelo de dados.

O script deste artigo é resultado de uma dúvida do fórum do mestre Karpinski, no qual o aluno precisava identificar os clientes.

Na tabela abaixo, utilizei as palavras “2022”, “LEVE” e “ANO” nesta sequência para analisar se algumas delas estavam nas frases.

Ao incluir a coluna, ele respeitou a ordem das palavras e o retorno sempre será da última palavra encontrada.

Na dúvida do fórum, a princípio não precisará cuidar com a sequência porque para cada campo terá somente um cliente.

Segue script que utilizei para estruturar esta consulta:

let
  Fonte = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "dVK7btwwEPyVjWvlEFyQFOkM2OliIE0aw8UetbqjIZIKH0Kgvzm4MFK4CvIF/LHMUnc5BHAaiVzu7szOzv391dciFMiHORD7QCY4MUJJfI/ATnx9DozjFCLdSEkk9B0VPqQUEk3cfkK9GJvqb0mofGRH+2JRpS9TDFn2Vi/a43aUDX2W0S50Dbg74L65euhWHtt3221rQKPMsmnxb+KI6wu9//hBWXKigD65eNtzL+lSjJexLGCgUEPY49sjGrMd6ouxOprP1hftRznyIpF20Y6HAJY7GWXhxjAHbaDVlrXZRRsdPAlZb43l16e4gy5MM7iRr0+BXMEJmpIGI+MCTsVpu44cqya9OIBpYkTWEKLjhjSzxmc7gycGzUIOu/EZdJ1y8/mk0LVjf6hPVH+iforWCZDQaDywpu4iexNOuKOdYzurnFM97q3ntKHbZKLM/DZACHeRNPyd7jw7Y50/LBi2LRXXJMusTtHfxEBWveCD4A8hdRRFt1afmzkAPIAmRim2pS9rSVgNhTBsd1ZW3bBy+SLn3hr7BPBIg+b8s/0ojNAZikfDMC8khwtVPd3gak6eBFPjonIidRohpiZ2pzGjrs5AQKvVuj7HFtZIxYjSRKcp1l8QohljXcONgMGkHTvykNr6lHVJNJQ9Lx39x5Xsi4edXINefdYMB871CBhJ2pLOb7OoYQdrQlkVybEe0ytmfPgD", 
          BinaryEncoding.Base64
        ), 
        Compression.Deflate
      )
    ), 
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [Frases = _t]
  ), 
  #"Tipo Alterado" = Table.TransformColumnTypes(Fonte, {{"Frases", type text}}), 
  #"Personalização Adicionada1" = Table.AddColumn(
    #"Tipo Alterado", 
    "Palavras Procuradas", 
    each List.Accumulate(
      {"2022", "LEVE", "ANO"}, 
      "NÃO ENCONTRADO", 
      (state, current) =>
        if Text.Contains(
            [Frases], 
            current, 
            Comparer.OrdinalIgnoreCase) then current else state
    ), 
    type text
  )
in
  #"Personalização Adicionada1"

Você precisa criar uma consulta nula no Power Query, clicar no editor avançado e substituir por este script.

rafalemospentaho   rafalemospbi  #choraAPI #powerquery #powerbi #Mlanguage