Promedio basado en valores distintos en otra columna

Un usuario Pregunto ✅

bullius

Hola,

Tengo datos que se parecen a esto:

Empleado Empleo Envejecer
1 a 35
1 B 35
2 a 40
3 a 35
4 a 51
4 B 51

Quiero calcular la edad promedio de los empleados individuales. Todo lo que sé hacer es promediar la columna de edad, pero obviamente cuenta las edades del Empleado 1 y 4 dos veces, lo que me da una edad promedio de 41,2.

Necesito una medida que cuente valores distintos en la columna de empleados y luego promedie sus edades. Esto debería darme una edad promedio de 40,3.

¿Alguna idea de una fórmula que pueda hacer esto?

¡Gracias!

jahida

Esto debería funcionar (probado localmente):

Medida = AVERAGEX (SUMMARIZE (Table1, Table1[Employee], Tabla 1[Age]), Tabla 1[Age])

Hola @bullius,

También puede crear la medida utilizando la fórmula.

Measure  = AVERAGEX(VALUES(Table[Employee]), CALCULATE(AVERAGE(Table[Age])))

Gracias,
Lydia Zhang

Hola @bullius,

También puede crear la medida utilizando la fórmula.

Measure  = AVERAGEX(VALUES(Table[Employee]), CALCULATE(AVERAGE(Table[Age])))

Gracias,
Lydia Zhang

bullius

En respuesta a v-yuezhe-msft

¡Gracias por las soluciones!

jahida

Esto debería funcionar (probado localmente):

Medida = AVERAGEX (SUMMARIZE (Table1, Table1[Employee], Tabla 1[Age]), Tabla 1[Age])

huesped

En respuesta a jahida

Hola, hilo anterior, pero me arriesgo aquí … Tengo un escenario muy similar, excepto que necesito incluir un parámetro adicional a la ecuación. Para continuar con el ejemplo del OP, también tendría otra columna para el género del empleado y necesitaría una fórmula que calcule la edad promedio de los empleados masculinos. ¿Cómo se puede hacer esto?

Gracias.

bullius

En respuesta a huesped

Intente agregar una cláusula FILTER, p. Ej.

AVERAGEX (
    SUMMARIZE (
        FILTER (
            Table1,
            Table1[Gender] = "Male"
        ),
        Table1[Employee], 
        Table1[Age]
    ), 
    Table1[Age]
)

Nabo

En respuesta a jahida

Oye Jahida,

Esto parece que puede resolver un problema que estoy experimentando.
Sin embargo, ¿cómo podría funcionar si la columna «Empleado» está en otra tabla?
¿Y sería diferente si no fuera necesariamente un número, sino un texto?

jahida

En respuesta a Nabo

No estoy muy seguro de a qué te refieres … la pregunta original quería un promedio, ¿cuál es el promedio de valores de texto? Además, si las columnas están en tablas diferentes, ¿cómo se asocian?

Nabo

En respuesta a jahida

Bien … es un poco más complicado de lo que pensaba 🙂

Digamos que tengo 3 mesas.
Tabla 1 – ID de transacción – me da la información sobre la transacción. Fecha, hora, etc. La identificación siempre es única. Detalles no incluidos en el ejemplo: solo ID

ID de transacción

1
2
3
4
5

Tabla 2 – Transacción – Detalles de que elementos la transacción incluida, siempre haciendo referencia al ID, pero extendiéndose sobre varias filas, dependiendo del tamaño de la transacción.

Artículo de ID de transacción

1 Plátano
1 Nabo
1 Silla
1 Plátano
1 Plátano
1 manzana
2 Nabo
2 Repollo
2 manzana
3 Plátano
3 Pepino
3 Nabo
4 Plátano
5 Silla

Tabla 3 – Identificación del artículo – Información ampliada sobre los elementos que los resume en categorías.

ID de artículo Categoría de artículo

11 Plátano Fruta
12 Nabo Vegetal
13 Silla Muebles
14 manzana Fruta
15 Repollo Vegetal
dieciséis Pepino Vegetal

De la siguiente captura de pantalla, lo que me importa es el recuento distintivo para el Categorías de artículos, lo que significa que no necesito saber cuántos de ellos hay en total, pero cuántas Transacciones incluyen cuál de las Categorías (por lo tanto, DistinctCount, usando Measure = DISTINCTCOUNT)

image.png

Lo que estoy buscando es el promedio de cada categoría por transacción. Quiero poder rastrear las categorías con el mayor promedio por transacción (así como la que tiene el menor, y ver tendencias, etc.)

Entonces, si estoy en lo cierto, eso significaría que el promedio para muebles debería ser 0.4 (2/5), verduras sería 0.6 (3/5) y frutas sería 0.8 (4/5).
Tengo la sensación de que esto es muy simple y es un poco lo que me falta, pero simplemente no puedo conseguir las fórmulas correctas que funcionen para esto.

El archivo simulado .pbix se puede encontrar aquí, si es necesario.

¡Cualquier ayuda / consejo será apreciado!

¡Gracias!

jahida

En respuesta a Nabo

En primer lugar, fue una muy buena publicación de aclaración, gracias por facilitar la comprensión de su situación.

Creo que la medida que tenías (DISTINCTCOUNT) estaba cerca, lo que querías era solo una forma de dividir por el total de transacciones. Probablemente haya algunas formas de hacer esto, estoy un poco oxidado, así que la primera que me vino a la mente fue usar CALCULATE. Aquí está la medida que usé:

Medida 2 = DISTINCTCOUNT (‘Transacción'[Transaction ID]) / CALCULATE (DISTINCTCOUNT (‘Transacción'[Transaction ID]), TODOS (‘ItemID'[Category]))

Tenga en cuenta que el primer bit es el mismo que su medida y luego lo divide por el recuento de transacciones en todas las categorías. Proporciona los resultados que dijo que eran los esperados (es posible que deba eliminar y rehacer su medida para que se vuelva a formatear). ¡Espero que eso ayude!

Nabo

En respuesta a jahida

¡Increíble! ¡Esto es exactamente lo que estaba buscando!
Gracias por su ayuda, especialmente considerando que este ya es un tema resuelto y no obtendrá el crédito. 😉

¡Que tengas un hermoso fin de semana y vacaciones si estás celebrando!

jahida

En respuesta a Nabo

Jaja no hay problema, encantado de ayudar. Como dije, lo hiciste fácil. ¡Felices fiestas para ti también!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *