cancel
Showing results for 
Search instead for 
Did you mean: 
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
June 2022 update 768X460.jpg

Check it out!

Click here to read more about the June 2022 updates!

Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

Power BI Dev Camp Session 23 768x460.jpg

Check it Out!

Mark your calendars and join us on Thursday, June 30 at 11a PDT for a great session with Ted Pattison!

June 20 episode 7 with aka link 768x460.jpg

The Power BI Community Show

Join us on June 20 at 11 am PDT when Kim Manis shares the latest on Azure Synapse analytics, the Microsoft Intelligent Data Platform, and notable Power BI Updates from Microsoft Build 2022.