Forum Discussion
Filas List.Average y Select
Hola @ampvnk
Debe asignar la columna ROLE externa a una variable como se muestra a continuación:
let
role = [ROLES]
in List.Average(Table.SelectRows(#"Changed Type",each [ROLES] = role)[WAGE])
En mi tabla original tengo roles nombrados como "soporte de TI", "Gerente de xxx", "Supervisor"... ¿Cómo debo escribirlo, por favor?
- Syndicate_Admin1 year ago
Administrator
let role = [ROLES] in List.Average(Table.SelectRows(#"Changed Type",each [ROLES] = role)[WAGE])Simplemente actualicé esta parte de su fórmula con la sintaxis correcta:
cada [roles] = _[roles]
[ROLES] es una columna asignada a la variable de rol. Esto debe hacerse siempre que intente acceder a una columna fuera del ámbito actual, que en este caso es #"Tipo cambiado". Cualquiera que sea el valor de ROLES, se asignará a esta variable y se utilizará para filtrar el paso anterior, cuyo resultado se transfiere en el paso actual. Al no hacer esto, simplemente le está diciendo a Power Query que devuelva true para todas las filas.
- Syndicate_Admin1 year ago
Administrator
Funciona. Muchas gracias. @amitchandak gracias también por su esfuerzo.
- Syndicate_Admin1 year ago
Administrator
¡Hola de nuevo! 🙂
Así que la solución está funcionando, pero después de que coloqué esa fórmula, el Power Bi comenzó a ser lento, tardó mucho en hacer alguna acción. Es rápido cuando abro los pasos anteriores. ¿Hay alguna posibilidad de solucionarlo o me veo obligado a pensar en una fórmula / método diferente?
- Syndicate_Admin1 year ago
Administrator
Hola @ampvnk
Gracias por la respuesta de amitchandak y danextian .
En la actualidad, la fórmula que se utiliza tiene que consultar toda la tabla para cada fila, es decir, hay que consultar toda la tabla tantas veces como filas haya. Esta puede ser la razón del bajo rendimiento. Utilicé Group By para probarlo para su referencia. El uso de Agrupar por puede reducir el número de filas consultadas cada vez para el cálculo y mejorar el rendimiento, pero el número de filas de resultados obtenidas será definitivamente menor que el de la tabla original (cada rol solo obtendrá una fila de resultados)
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKsrPSTVU0lEyNFCK1UHiGsK5RqiyIK4pnGeMwbNQio0FAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ROLES = _t, WAGE = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"ROLES", type text}, {"WAGE", Int64.Type}}), #"Grouped Rows" = Table.Group(#"Changed Type", {"ROLES"}, {{"Average", each List.Average([WAGE]), type nullable number}}) in #"Grouped Rows"Salida:
Saludos
Yulia XuSi esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.