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

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

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
PBIApril_Carousel

Power BI Monthly Update - April 2025

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

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

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

Top Kudoed Authors