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

View solution in original post

Helpful resources

Announcements
Power BI December 2021 Update_carousel 768x460.jpg

Check it Out!

Click here to read more about the December 2021 Updates!

User Group Leader Meeting January 768x460.png

Calling all User Group Leaders!

Don't miss the User Group Leader meetings on January, 24th & 25th, 2022.

Jan 2022 Dev Camp 768x460 copy.png

Power BI Dev Camp- January 27th, 2022

Mark your calendars and join us for our next Power BI Dev Camp!

Top Kudoed Authors