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

List.Seleccione con List.Average ¿qué estoy haciendo mal?

Tengo una mesa en PQ como esta,

peterhui50_0-1642210013927.png

Luego lo agrupé usando Agrupar por y Todas las filas.

peterhui50_1-1642210043378.png

Luego solo quiero ejecutar List.Select para seleccionar todos los elementos de la lista en la columna [Ventas] que son mayores que el promedio de ventas en ese grupo.

así que hice una nueva columna con -

peterhui50_2-1642210113227.png

Recibí un error

peterhui50_3-1642210150210.png

El mensaje de error es

peterhui50_4-1642210167972.png

No puedo entender por qué recibiría este error. Cualquier ayuda es apreciada.

Sé que hay varias maneras de evitar esto, pero realmente quiero aprender a usar más List.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@peterhui50 ,

En el cuadro de diálogo Columna personalizada, cambie el código a

let avg = List.Average([Data][Sales]) in List.Select([Data][Sales], each _ > avg )

La explicación aproximada es que, dentro de List.Select, una referencia de campo como [Data] se interpreta como _[Data], que es el campo [Data] de un elemento particular de la lista proporcionada como el primer argumento de List.Select, en lugar del campo de datos de la fila original.

Más precisamente, el 3er argumento de Table.AddColumn (que se crea dentro del cuadro de diálogo) es una función que toma un solo argumento, siendo la fila iterada actualmente de la tabla. Dentro de List.Select, el 2º argumento es una función que toma un solo argumento, que es el elemento iterado actualmente en la lista. La "función interna" proporcionada a List.Select no puede referirse directamente al argumento de la "función externa", a menos que la asignemos a una variable que pueda pasarse a la "función interna".

Mi código anterior conserva el promedio asignándolo a avg, y luego puede ser referenciado por la "función interna".

Saludos

Owen

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

@peterhui50 ,

En el cuadro de diálogo Columna personalizada, cambie el código a

let avg = List.Average([Data][Sales]) in List.Select([Data][Sales], each _ > avg )

La explicación aproximada es que, dentro de List.Select, una referencia de campo como [Data] se interpreta como _[Data], que es el campo [Data] de un elemento particular de la lista proporcionada como el primer argumento de List.Select, en lugar del campo de datos de la fila original.

Más precisamente, el 3er argumento de Table.AddColumn (que se crea dentro del cuadro de diálogo) es una función que toma un solo argumento, siendo la fila iterada actualmente de la tabla. Dentro de List.Select, el 2º argumento es una función que toma un solo argumento, que es el elemento iterado actualmente en la lista. La "función interna" proporcionada a List.Select no puede referirse directamente al argumento de la "función externa", a menos que la asignemos a una variable que pueda pasarse a la "función interna".

Mi código anterior conserva el promedio asignándolo a avg, y luego puede ser referenciado por la "función interna".

Saludos

Owen

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.