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
stchln
Resolver I
Resolver I

Contando el número de palabras en una lista que se encuentra en una frase

Hola

Estoy tratando de contar el número de veces que una de las palabras en una lista se encuentra en una frase

Desafortunadamente, el código M que traté de hacer no obtener el resultado correcto

Capture0.PNG

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8jZU0lHKz0tVKCnPB7KKM/JLc1IU0jLzUhSMFDLzFEBS+UVg2VgdoHIjoCJMpYYgpXA1xiA1GUWpqWiqDJRiYwE=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [ID = _t, Words = _t, Phrase = _t]),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Words", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Words"),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID", type text}, {"Words", type text}, {"Phrase", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Words"}, {{"AllData", each _, type table [ID=text, Words=text, Phrase=text]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "WordsList", each [AllData][Words]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "PhraseAsList", each [AllData][Phrase]),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Counting", each fNwordsInPhrase(#"Added Custom1"[PhraseAsList],#"Added Custom1"[WordsList]))
in
    #"Added Custom2"

donde la función fNwordsInPhrase se define como

= (List1 as list, List2 as list) =>
let
    MyPhrase = List1,
    MyWords = List2,
    MyResult = List.Count(List.Difference(MyPhrase, MyWords))
in
    MyResult

Y lo que obtengo es contar siempre es igual a 3

Capture.PNG

No puedo encontrar mi error en la función o en la lista de operaciones antes de llamar a la función para transformar cadenas en dos listas WordsList y PhraseAsList. Además, tal vez hay una manera más simple de obtener el mismo resultado en DAX

¡Gracias por tu ayuda!

2 REPLIES 2
AllisonKennedy
Super User
Super User

@stchln ¿Cuánto volumen de datos tiene? Un problema aquí es con la función List.Difference, que siempre le dará el número de filas en esa primera lista, y otro problema es que no ha convertido la frase en una lista.

Esto funcionará, pero podría no ser el más eficiente:

Dejar
Fuente: Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8jZU0lHKKz0tVKCnPB7KKM/JLc1IU0jLzUhSMFDLzFEBS+UVg2VgdoHJoCJMpYYgpXA1xiA1GUWpqWiqDJRiYwE", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((texto de tipo) meta [Serialized.Text ? true]) en la tabla de tipos [ID á _t, Palabras, _t, Frase , _t]),
"Dividir columna por delimitador" á Table.ExpandListColumn(Table.TransformColumns(Source, ?"Words", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType á (escriba texto que acepta valores NULL) meta [Serialized.Text ? true] en el tipo de tipo "itemType"), "Words"), "Words"), "Words"), "Words"), "Words"), "Words"), "Words"),
"Dividir columna por Delimiter1" ? Table.ExpandListColumn(Table.TransformColumns(?"Split Column by Delimiter", "Phrase", Splitter.SplitTextByDelimiter(" ", QuoteStyle.None), let itemType á (escriba texto que acepta valores NULL) meta [Serialized.Text ? true] en el tipo .itemType, "Phrase"), "Phrase"),
"Tipo cambiado" ? Table.TransformColumnTypes("Dividir columna por Delimiter1", "ID", escriba texto, "Palabras", escriba texto, "Frase", escriba texto, escriba texto, escriba texto, escriba texto, escriba texto),
"Columna condicional añadida" - Tabla.AddColumn("Tipo cambiado", "Contiene", cada uno si [Palabras] á [Frase] entonces 1 más 0),
"Filas agrupadas1" á Table.Group("Columna condicional agregada", "ID", "Recuento", cada Lista.Sum([Contiene]), número de tipo, "AllData", cada _, tabla de tipos [ID-texto, Palabras-texto, Frase-texto]-)
En
"Filas agrupadas1"

¿Este post ha resuelto tu problema? Por favor, márquelo como una solución para que otros puedan encontrarlo rápidamente y para que la comunidad sepa que su problema ha sido resuelto.

Si has encontrado este post útil, por favor, dale a Kudos.

Trabajo como instructor y consultor para Microsoft 365, especializado en Power BI y Power Query.

https://sites.google.com/site/allisonkennedycv


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Muchas gracias Allison, ¡qué velocidad!

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.