Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Usar comodín para extraer palabras

Hola a todos

Tengo una columna con palabras no estructuradas. Necesito extraer las palabras.

AA

AA

AAgotozoo

AA

. AA

AA

AA$$

AA

Zoneedto goAA

AA

$$AA

AA

Traté de agregar una columna de condición, pero solo extrajo ciertas palabras pero no la lista completa. ¿Alguien sabe cómo usar comodines para extraer el texto?

joeywong_0-1670166791693.png

¡Gracias!

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@joeywong,

¿Es una lista de cadenas de texto? ¿O un patrón comodín muy específico?

Hi Hnguy71,

Enumera una cadena de texto.

La naturaleza impredecible es un patrón. Puede estar delante o detrás en diferentes momentos. Las palabras pueden unir algunas veces. A continuación se presentan algunas de las muestras.

joeywong_0-1670170300162.png

¡Gracias!

@joeywong ,


Para lograr esto, primero necesitará una lista de palabras clave para proporcionar como esta:

hnguy71_0-1670173922730.png

Y luego cree una columna personalizada para verificar si la subcadena coincide con alguna de la lista.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WciwoyElVitUBsgICfFzBLBUkQRBLwdQUzDE1VUCTSc8vya/KzwcL6CEMALMUVFTAHKB8XmpqSkl+er4CVEksAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Words Pattern" = _t]),
    
    // Retrieve list of text strings
    ListPatterns = List.Buffer(KeywordList),
    
    // Find pattern, return first found string, ignoring case-sensitivity.
    ReturnFoundString = Table.AddColumn(Source, "Extract Words", each 
    List.First(
        List.Transform( 
            ListPatterns , (n) => if Text.Contains([Words Pattern], n, Comparer.OrdinalIgnoreCase) then n else null
        )
    )
    ,
    type text)
in
    ReturnFoundString

Producto previsto:

hnguy71_1-1670174086949.png

He incluido un pbix de muestra como referencia.

Hi hnguy71,

Muchas gracias por su aportación.

Soy bastante nuevo en M-code. Cuando intenté aplicar el código al caso real, hubo un error de expresión.

Importo el archivo de Excel en el escritorio de Power Bi sin poner el código.... "let_t=((type nullable text) meta [seralized. Text=true) en la tabla de tipos....." ¿Puedes obtener más información sobre este código? ¡Gracias!

joeywong_2-1670671964413.png



@joeywong ,

La fuente se originó cuando hace clic en "Ingresar datos". Se genera un documento json y luego se convierte en una tabla para ETL adicional. Como ya tienes tu propia "fuente", puedes omitirla o sustituirla por la tuya.

Idealmente, debería comenzar en el paso ListPatterns y todo el camino hacia abajo.

Si tiene más problemas, copie y pegue su consulta aquí y puedo ayudarlo a modificarla para que la copie y pegue de nuevo.

@hnguy71 ,

Muchas gracias por su amable gesto.

Intenté ingresar el código M sugerido pero encontré los siguientes errores:

joeywong_0-1672216185672.png

A continuación se muestra el código M que utilicé:

dejar
Source = Excel.Workbook(Web.Contents("https://smrtcorp-my.sharepoint.com/Documents/Desktop/Dylan%20Files/LBS%20settlement%20(working%20fil..."), null, true),
Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
#"Tipo cambiado" = Table.TransformColumnTypes(Table1_Table,{{"Patrón de palabras", escriba text}}),
ListPatterns = List.Buffer(KeywordList),
Busque el patrón, devuelva la primera cadena encontrada, ignorando la distinción entre mayúsculas y minúsculas.
ReturnFoundString = Table.AddColumn(Origen, "Extraer palabras", cada uno
List.First(
List.Transform(
ListPatterns , (n) => if Text.Contains([Words Pattern], n, Comparer.OrdinalIgnoreCase) then n else null
)
)
,
escribir texto),
Busque el patrón, devuelva la primera cadena encontrada, ignorando la distinción entre mayúsculas y minúsculas.
Table1_Table1 = ReturnFoundString{[Item="Table1",Kind="Table"]}[Extraer palabras]
en
Table1_Table1

Una vez más, muchas gracias por su ayuda y realmente lo aprecio.

HI @joeywong ,

El error que indica es que no hay una columna llamada "Patrones de palabras" que está intentando modificar o referenciar. He cambiado a la columna "Comentarios" y esto debería funcionar para su escenario:

let

Source = Excel.Workbook(Web.Contents("https://smrtcorp-my.sharepoint.com/Documents/Desktop/Dylan%20Files/LBS%20settlement%20(working%20files)/Joyce%20share%20file/Words%20Patterns.xlsx"), null, true),
Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
ListPatterns = List.Buffer(KeywordList),

// Find pattern, return first found string, ignoring case-sensitivity.
ReturnFoundString = Table.AddColumn(Table1_Table, "Extract Words", each
List.First(
    List.Transform(
        ListPatterns , (n) => if Text.Contains([Remarks], n, Comparer.OrdinalIgnoreCase) then n else null
        )
    ), type text
)

in ReturnFoundString

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.