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
MSC
Helper III
Helper III

Calcular el total del subconjunto en función de la segmentación de datos

¡Hola a todos!

Estoy trabajando en un panel de análisis de clientes y tengo algunos problemas para crear una tabla de referencia. Aunque he trabajado con PBI desde hace algún tiempo, soy nuevo en las funciones de DAX. He tratado de encontrar una solución (o al menos un enfoque para mi problema) en las diversas preguntas sobre subtotales, etc., pero como no pude encontrar algo útil, me gustaría darle una visión general de lo que me gustaría hacer.

Cualquier sugerencia o sugerencia será extremadamente útil para mí.

Problema en la mano:

Me gustaría crear una tabla de referencia para los últimos dos años (por ejemplo, 2019 y 2018) en la que puedo comparar a un cliente con el grupo de clientes al que pertenece. Esta comparación debe realizarse en dos dimensiones (por ejemplo, edad y salario).

Sin embargo, dado que el panel se utiliza principalmente para analizar un cliente específico a la vez, hay una segmentación de clientes en la parte superior de mi página de informe y la tabla de referencia debe basarse en esta segmentación desplegable.

Así, por ejemplo, cuando selecciono el cliente B con la segmentación, la tabla de referencia "sabe" que B pertenece al grupo de clientes "Profesionales" calculando la edad media y el salario de este grupo.

Por favor, hágamelo saber, si necesita más información.

Gracias de antemano!

19 REPLIES 19
MSC
Helper III
Helper III

@AllisonKennedy @AlB

Gracias tanto por sus respuestas y las funciones sugeridas! Es muy agradable ver que hay otros usuarios dispuestos a apoyar cuando uno necesita ayuda!

AlB
Super User
Super User

@MSC

Su explicación es bastante confusa. No veo ningún 25% o cualquier columna "Porcentaje". Además, la medida [PercentageTotalGroup] ya parece producir el resultado que está buscando, por lo que no entiendo su solicitud para usarla en el código que proporcioné anteriormente. La siguiente es una alternativa para calcular ese porcentaje utilizando el patrón que sugerí en el código anterior. Tenga en cuenta que utiliza solo una columna de la tabla en la suma (Total de compras/cliente). No creo que la columna "Total de compras/grupo de clientes" sea necesaria

Percentage of purchases in group =
VARcustGrpp_ = DISTINCT ( 'DataTable'[Customer Group] )
VARpurchasesCurrentCustomerr_ = SUM ( 'DataTable'[Total purchases/customer] )
VARpurchasesInGroupp_ =
    CALCULATE (
        SUM ( 'DataTable'[Total purchases/customer] ),
        'DataTable'[Customer Group] INcustGrpp_,
        ALL ( 'DataTable'[Customer] )
    )
RETURN
    DIVIDE (purchasesCurrentCustomerr_,purchasesInGroupp_ )

Tendría que ver el código para otra de esas medidas para tratar de dar más sentido a este

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

AlB
Super User
Super User

@MSC

No entiendo lo que buscas. Lo mejor sería proporcionar un ejemplo con el resultado esperado basado en los datos del pbix que ha compartido

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Ok, acabo de añadir dos archivos nuevos.

Quiero comparar la parte individual del gasto con la parte media del gasto del grupo de clientes. Es decir, en el panel se puede ver que las compras del cliente B representaron el 3% de las ventas totales del grupo de clientes. Sin embargo, en 2018, el gasto promedio del cliente en el grupo B fue mucho mayor, es decir, 25%. Ahora, quiero que su función DAX devuelva este 25% (en caso de que seleccione B).

Mientras tanto, como puede ver, he descubierto que puedo crear una nueva columna ("Porcentaje") en mi tabla de datos subyacente e insertar esta columna en la función. Esto funciona.

Pero, ¿cómo puedo usar la medida "PercentageTotalGroup" que creé en lugar de "Porcentaje" para devolver el 25%?

El problema es que un colega mío ya ha creado muchas medidas que me gustaría utilizar en combinación con su función.

@AlB El archivo de Excel "cálculo" es sólo para fines ilustrativos y para mostrar lo que quiero decir con "gasto promedio".

AlB
Super User
Super User

@MSC

Average age in group = 
VAR custGrp_ =
    DISTINCT('DataTable'[Customer Group])
RETURN
    CALCULATE(AVERAGE('DataTable'[Age]), 'DataTable'[Customer Group] IN custGrp_, ALL( 'DataTable'[Customer]) )
Average salary in group = 
VAR custGrp_ =
    DISTINCT('DataTable'[Customer Group])
RETURN
    CALCULATE(AVERAGE('DataTable'[Salary]), 'DataTable'[Customer Group] IN custGrp_, ALL( 'DataTable'[Customer]) )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

@AlB Genial, gracias!!!

¿Existe la posibilidad de hacer exactamente lo mismo pero con una medida, es decir, la devolución del promedio de una medida?

He ampliado los datos en github ( https://github.com/MSC791/PBI-Test.git ) y he cargado una versión v2 para resaltar de lo que estoy hablando.

Imagine que sabe cuánto gasta un cliente en comparación con todos los clientes del mismo grupo en un año determinado. Para evaluar este número, le gustaría compararlo con el gasto promedio de clientes en este grupo.

No entiendo cómo puedo integrar la medida en la función DAX que proporcionó anteriormente.

MSC
Helper III
Helper III

@AlB @Ashish_Mathur @AllisonKennedy

He creado un repositorio github donde puede encontrar un ejemplo ilustrativo del panel y el archivo de Excel subyacente.

https://github.com/MSC791/PBI-Test.git

@AlB Lo siento mucho, pero como verá en el panel, su función devuelve el valor del cliente que he seleccionado y no el promedio del grupo del cusomter seleccionado.

AlB
Super User
Super User

@MSC

por lo que la solución que proporcioné anteriormente hace exactamente eso:

AvgAge =
VAR custGrp_ =
    DISTINCT ( Table1[CustomerGroup] )
RETURN
    CALCULATE ( AVERAGE ( Table1[Age] ), Table1[CustomerGroup] = custGrp_ )

con Table1[Customer] como segmentación. y lo mismo para el salario

AvgAge =
VAR custGrp_ =
    DISTINCT ( Table1[CustomerGroup] )
RETURN
    CALCULATE ( AVERAGE ( Table1[Salary] ), Table1[CustomerGroup] = custGrp_ )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

AlB
Super User
Super User

@MSC

Sí. Es vago. Necesitaría mostrar una muestra de las tablas relevantes para obtener una respuesta más precisa.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

@AlB Para que sea muy simple, sólo tiene que imaginar algo como esto:

PBI example.png

Por supuesto, mi tabla de datos real es mucho más compleja, pero la estructura subyacente es la misma. Todos los datos están en una tabla.

Hola

¿Qué resultado exacto espera en este pequeño conjunto de datos de ejemplo.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

@Ashish_Mathur ¡Hola! Esto es sólo para fines ilustrativos. Mi principal preocupación es cómo calcular los promedios de un grupo de clientes en función de un filtro que selecciona solo un cliente.

Y como he dicho anteriormente, el objetivo de la tabla de referencia que me gustaría crear es devolver los promedios de edad y salario para todos los clientes que pertenecen al mismo grupo de clientes que B.

AlB
Super User
Super User

Hola @MSC

Puede crear dos medidas. Uno para la edad:

AvgAge =
VAR custGrp_ =
    DISTINCT ( Table1[Group] )
RETURN
    CALCULATE ( AVERAGE ( Table1[Age] ), Table1[Group] = custGrp_ )

y de manera similar, para los ingresos:

AvgIncome =
VAR custGrp_ =
    DISTINCT ( Table1[Group] )
RETURN
    CALCULATE ( AVERAGE ( Table1[Income] ), Table1[Group] = custGrp_ )

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

@AlB Gracias por su respuesta y su solución propuesta. Creo que me he perdido destacar el punto más importante para mí... ¿Cómo calculo el promedio de todos los clientes que pertenecen al mismo grupo que el cliente seleccionado?

Su solución funciona perfectamente bien, pero sólo devuelve el valor de la empresa seleccionada.

AllisonKennedy
Super User
Super User

¿Cómo se configura el modelo de datos? ¿La edad y el salario están en la misma tabla o tienen una tabla Dimension diferente para cada una? Hay muchas maneras de resolver este problema, aquí hay una solución (sustituir la educación por la edad en su ejemplo):

Subtotal de beneficio medio ( Average Profit Subtotal)
VAR _education - SELECTEDVALUE(DimCustomer[Educación])
WHERE _salary - SELECTEDVALUE(DimCustomer[YearlyIncome])
devolución
IF(HASONEVALUE(DimCustomer[CustomerKey]),
CALCULATE(AVERAGE(FactInternetSales[Profit]), DimCustomer[YearlyIncome]-_salary, DimCustomer[Education]-_education),
"Seleccione un cliente")

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

@AllisonKennedy ¡Muchas gracias por su solución!

Todos mis datos provienen de una tabla muy grande.

Como ya he respondido antes, podría haber sido un poco vago con respecto a mi principal problema, es decir, cómo calcular el promedio de los clientes de referencia. ¡Lo siento por eso!
Imagine que selecciona el cliente B y los elementos visuales del panel muestran que tiene 35 años y gana 65.000 dólares al año.
El objetivo de la tabla de referencia que me gustaría crear es devolver los promedios de edad y salario para todos los clientes que pertenecen al mismo grupo de clientes que B.
Por ejemplo, el cliente seleccionado B pertenece al grupo de clientes "Profesionales" y la tabla devuelve 42 (años) y 60.000 (salario) como promedios para este grupo.

Por lo tanto, creo que ambas variables deben ser numéricas (es decir, la educación no funcionará aquí). Con respecto a la solución que propuso, no entiendo la parte con AVERAGE(FactInternetSales[Profit]) pero creo que esto es el resultado de mi vaga descripción del problema.

@MSC

Todavía no he tenido tiempo de mirar tu enlace, pero parece que solo estás comparando en 1 dimensión, y queriendo encontrar el promedio de los otros, así que necesitarás dos medidas:

Edad Media (Average Age)
VAR _CustomerGroup- SELECTEDVALUE(Tabla[Grupo de clientes])
devolución
IF(HASONEVALUE(Table[Customer]),
CALCULATE(AVERAGE(Table[Age]), Table[Customer Group]-_CustomerGroup),
"Seleccione un cliente")
Salario Promedio
VAR _CustomerGroup- SELECTEDVALUE(Tabla[Grupo de clientes])
devolución
IF(HASONEVALUE(Table[Customer]),
CALCULATE(AVERAGE(Table[Salary]), Table[Customer Group]-_CustomerGroup),
"Seleccione un cliente")

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

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.