cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Frequent Visitor

M Query : compruebe si el valor de texto existe en la lista de palabras clave y, a continuación, devuelva la palabra clave (sin distinción entre mayúsculas y minúsculas)

Hola a todos,

He utilizado con éxito @ImkeF muchos ejemplos, pero me he atascado en la parte que no distingue mayúsculas de minúsculas.

#"Part 1 - AllCustomerWords" = Table.AddColumn(#"Renamed Columns", "AllCustomerWords", each Text.Split([Customer Text], " ")),

#"Part 2 - KeywordFound_eComm" = Table.AddColumn(#"Add Banner WholeWord Part 2", "KeywordFound_eComm", each List.First( List.Intersect( { [AllCustomerWords], #"Tbl_eComm"[Keyword] } ) )),

#"Part 3 - ContainsKeywordeComm" = Table.AddColumn(#"Part 2 - KeywordFound_eComm", "ContainsKeywordeComm", each [KeywordFound_eComm] <> null),

Tengo una tabla grande con una lista de clientes y quiero identificar si existen clientes en la tabla en una lista separada de clientes distintos. Quiero lograr esto en la consulta de energía.

El cheque debe coincidir con toda la palabra. Por ejemplo, si un valor de texto es "Driveway Limited", debe haber una palabra correspondiente en mi lista de palabras clave con "Driveway". "Dr." o "Drive" o "way" no deben devolver una coincidencia.

La comprobación no debe distinguir entre mayúsculas y minúsculas. Por ejemplo, en mi lista de clientes tengo "driveway limited", pero en mi lista de palabras clave tengo Driveway Limited. Todavía se debe encontrar una coincidencia independientemente del caso de texto en cualquiera de las listas.

Cualquier ayuda sería apreciada.

Saludos

AmiKhan

Ref:

https://community.powerbi.com/t5/Power-Query/If-text-contains-value-from-list-then-return-that-value...

1 ACCEPTED SOLUTION
Super User III
Super User III

Hola @amikhan12345

Si la lista de palabras que está buscando está en una lista llamada WordList y la columna que está buscando se llama TextCol, esto hará lo que está pidiendo.

Puede cargar la lista de palabras de otra columna si lo desea, es un cambio menor en el código siguiente.

La búsqueda no distingue mayúsculas de minúsculas y busca coincidencias de palabras enteras.

Este es un ejemplo de PBIX con el código y el ejemplo que se muestran a continuación

    #"Added Custom" = Table.AddColumn(Source, "Matches", 
    
        each List.Accumulate
            (
                WordList,

                "",

                (state, current) => 
                
                    if List.Contains(Text.Split([TextCol], " "), current, Comparer.OrdinalIgnoreCase) 
                    
                    then state & " " & current 
                    
                    else state
                
            )

Para ilustrar, WordList "Apple", "Msft", "Drive" y los resultados son

word-matches.png

porque MSFT Corporation y Apple Seed producen una coincidencia, Driveway Limited no.

saludos

Phil


Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


View solution in original post

4 REPLIES 4
Super User III
Super User III

Hola @amikhan12345

Sí, sólo tiene que cambiar esta línea para incluir y el estado "" como se muestra aquí

if List.Contains(Text.Split([TextCol], " "), current, Comparer.OrdinalIgnoreCase) and state = ""

saludos

Phil


Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


Frequent Visitor

Muchas gracias por la rápida respuesta @PhilipTreacy

Esto funciona perfectamente en el ejemplo, pero cuando se aplica a mis datos, recibo una notificación de error de " no podemos convertir el valor de la tabla de tipo a la lista de tipos".

Al igual que el archivo de ejemplo, mi lista de Palabras es una sola columna de texto en una tabla y la columna que estoy buscando es una columna Texto en otra tabla.

Error Message.PNG

List.Accumulate
            (
                Tbl_eComm,

                "",

                (state, current) => 
                
                    if List.Contains(Text.Split([Customer Text], " "), current, Comparer.OrdinalIgnoreCase) 
                    
                    then state & " " & current 
                    
                    else state
                
            )

Super User III
Super User III

Hola @amikhan12345

Si la lista de palabras que está buscando está en una lista llamada WordList y la columna que está buscando se llama TextCol, esto hará lo que está pidiendo.

Puede cargar la lista de palabras de otra columna si lo desea, es un cambio menor en el código siguiente.

La búsqueda no distingue mayúsculas de minúsculas y busca coincidencias de palabras enteras.

Este es un ejemplo de PBIX con el código y el ejemplo que se muestran a continuación

    #"Added Custom" = Table.AddColumn(Source, "Matches", 
    
        each List.Accumulate
            (
                WordList,

                "",

                (state, current) => 
                
                    if List.Contains(Text.Split([TextCol], " "), current, Comparer.OrdinalIgnoreCase) 
                    
                    then state & " " & current 
                    
                    else state
                
            )

Para ilustrar, WordList "Apple", "Msft", "Drive" y los resultados son

word-matches.png

porque MSFT Corporation y Apple Seed producen una coincidencia, Driveway Limited no.

saludos

Phil


Si respondí a su pregunta por favor marque mi post como la solución.
Si mi respuesta ayudó a resolver su problema, déle un kudos haciendo clic en Thumbs Up.



Did I answer your question? Then please mark my post as the solution.
If I helped you, click on the Thumbs Up to give Kudos.


Blog :: YouTube Channel :: Connect on Linkedin


Proud to be a Super User!


View solution in original post

Gracias por la respuesta rápida @PhilipTreacy esto es perfecto.

¿Hay alguna manera de modificar esto para devolver la primera coincidencia? Observo en algunas ocasiones que el texto de un cliente puede contener más de una palabra clave.

Por ejemplo, la lista de palabras clave tiene "Health-Trade" y "E-COM" y hay un texto del cliente llamado "Health-Trade Wholesaler E-COM". Las columnas personalizadas devuelven "E-COM Health-Trade"

Helpful resources

Announcements
secondImage

Congratulations!

We are excited to announce the Power BI Super Users!

Wave Release 2

Check out the updates in Power BI.

Overview of Power BI 2020 release wave 2!

Microsoft Ignite

Microsoft Ignite

Join digitally, March 2–4, 2021 to explore new tech that's ready to implement. Experience the keynote in mixed reality through AltspaceVR!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.