Filtrar el campo de texto para que contenga al menos una palabra clave en una lista

Un usuario Pregunto ✅

scign

Yo tengo:

1. una tabla de compras de productos (np = alrededor de 160.000 registros) con varios campos, incluido un campo de descripción de texto, y

2. una lista separada de palabras clave (nk = alrededor de 90 filas) y palabras clave parciales como «fusionar» y «calibrar» (que cubre «calibrar», «calibrar», «calibrar», etc.). La lista de palabras clave se puede agregar a.

Necesito:

– una tabla de compras donde el campo de descripción contiene al menos una de las palabras clave de la lista.

¿Hay una forma fácil de hacer esto?

Mi pensamiento era hacer lo siguiente:

1. combinación externa completa de las dos tablas para obtener una fila para cada palabra clave para cada compra, de modo que tenga (np * nk) filas,

2. agregue una nueva columna con una búsqueda de texto de la palabra clave en la descripción

3. Filtre donde la búsqueda de texto arroje un verdadero

4. eliminar registros de compra duplicados

Sin embargo, me ha quedado perplejo cómo hacer una combinación externa completa sin una columna coincidente …

De acuerdo, mientras escribía la última línea, se me ocurrió una idea. Estaba atascado en cómo unir las dos tablas sin una columna coincidente, así que simplemente creé una columna en cada tabla con «1» como valor para todas las filas y uní esas columnas. Eso me dio la combinación externa completa y continué desde el n. ° 2 anterior y obtuve mi lista filtrada.

Todavía tengo curiosidad por saber si hay una manera más fácil que esa, ya que parece un enfoque bastante mazo de la nuez que tengo.

¿Pensamientos?

drewlewis15

Este artículo podría ser una solución a su problema:

https: //powerpivotpro.com/2014/01/containsx-finding-if-a-value-in-table-1-has-a-matching-value-in-ta …

Hola @scign,

Puede intentar usar la siguiente fórmula para obtener la tabla coincidente. (Encontré algunas ideas para modificar mi fórmula en el enlace de @ drewlewis15)

Matched Table = CALCULATETABLE(Records,FILTER(ADDCOLUMNS(Records,"Contains",FIRSTNONBLANK(FILTER(VALUES(Keywords[Keyword]),
SEARCH(Keywords[Keyword],[Description],1,0)),[Keyword])),[Contains]<>BLANK()))

Saludos,

Xiaoxin Sheng

Hola @scign,

Puede intentar usar la siguiente fórmula para obtener la tabla coincidente. (Encontré algunas ideas para modificar mi fórmula en el enlace de @ drewlewis15)

Matched Table = CALCULATETABLE(Records,FILTER(ADDCOLUMNS(Records,"Contains",FIRSTNONBLANK(FILTER(VALUES(Keywords[Keyword]),
SEARCH(Keywords[Keyword],[Description],1,0)),[Keyword])),[Contains]<>BLANK()))

Saludos,

Xiaoxin Sheng

Ashish_Mathur

Hola,

Comparta un conjunto de datos y muestre el resultado esperado.

drewlewis15

Este artículo podría ser una solución a su problema:

https: //powerpivotpro.com/2014/01/containsx-finding-if-a-value-in-table-1-has-a-matching-value-in-ta …

MarcelBeug

En respuesta a drewlewis15

Si desea unir 2 tablas por completo sin una columna de clave coincidente, puede agregar una columna personalizada con la otra tabla, como:

= Table.AddColumn(Table1,"Table2", each Table2)

Una solución alternativa para sus requisitos sería dividir sus descripciones en cualquiera de las palabras clave y luego tomar los resultados que tienen varios elementos, como:

= Table.SelectRows(Source, each List.Count(Splitter.SplitTextByAnyDelimiter(Keywords)([Description])) > 1)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *