Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Estimados, buenos días.
Primero que todo, agradecer por su continua ayuda.
Necesito hacer un Marketshare de varias compañías y también de varios otros segmentadores.
Tengo una tabla histórica con el dato de la fecha-monto-empresa esas serían las 3 principales columnas.
Y el marketshare se calcula como la suma del monto de los ultimos 12 meses.
Entonces el monto total de 1 empresa de diciembre-2021 es la suma de enero2021-diciembre2021.
El marketshare es el % de participación del mercado de cada empresa, que entonces el (monto de cada empresa)/(monto total)
Y por ultimo el ranking en el que se ubica según % del Marketshare.
Hoy he logrado obtener el monto acumulado de los 12 meses moviles con la formula:
Solved! Go to Solution.
De acuerdo con su nueva muestra, aquí está mi solución.
1.Cree una nueva tabla, no haga una relación entre las dos tablas.
Date = VALUES('Test'[PERIODO])
2.Crear tres medidas.
Total =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Month],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
- 12,
MONTH
),
ALLEXCEPT ( Test, Test[GRUPO MARCA] )
),
BLANK ()
)
Marketshare (%) Test =
VAR _SUM =
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Date],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Date]
),
- 12,
MONTH
),
ALL ( Test )
)
VAR _D =
DIVIDE ( [Total], _SUM )
RETURN
_D
Ranking =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
RANKX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
CALCULATE ( [Marketshare (%) Test] ),
,
DESC,
DENSE
),
BLANK ()
)
Obtenga el resultado correcto.
Adjunto mi muestra como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda, por favor considereAceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
¡Gracias por esperar pacientemente! Modifico la fórmula así:
Total =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Month],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
- 12,
MONTH
),
ALLEXCEPT ( Test, Test[GRUPO MARCA], Test[Market] )
),
BLANK ()
)
Marketshare (%) Test =
VAR _SUM =
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Date],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Date]
),
- 12,
MONTH
),
ALLEXCEPT ( Test, 'Test'[Market] )
)
VAR _D =
DIVIDE ( [Total], _SUM )
RETURN
_D
Ranking =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
RANKX (
FILTER (
ALLEXCEPT ( 'Test', 'Test'[Market] ),
'Test'[PERIODO] = MAX ( 'Date'[PERIODO] )
),
CALCULATE ( [Marketshare (%) Test] ),
,
DESC,
DENSE
),
BLANK ()
)
Obtenga el resultado correcto.
Adjunto mi muestra como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda, por favor considereAceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Su solución es correcta, pero tengo una pregunta,
¿por qué hay espacios en blanco en algunos meses? :
La otra pregunta, la cuota de mercado (%) es correcta, pero el Ranking no:
El 1º es correcto, el 2º no:
Hola @MauricioSD ,
De acuerdo con su descripción, aquí está mi solución.
Cree una columna calculada.
Total =
IF (
DATEDIFF (
MINX ( ALL ( 'Marketshare' ), 'Marketshare'[Date] ),
'Marketshare'[Date],
MONTH
) >= 11,
CALCULATE (
SUM ( Marketshare[CIF Total] ),
DATESINPERIOD ( 'Marketshare'[Date], 'Marketshare'[Date], - 12, MONTH ),
ALLEXCEPT ( 'Marketshare', 'Marketshare'[Company] )
),
BLANK ()
)
Crea dos medidas.
MarketShare (%) =
VAR _SUM =
CALCULATE (
SUM ( Marketshare[CIF Total] ),
DATESINPERIOD ( 'Marketshare'[Date], MAX ( 'Marketshare'[Date] ), - 12, MONTH ),
ALL ( Marketshare )
)
VAR _D =
DIVIDE ( MAX ( 'Marketshare'[Total] ), _SUM )
RETURN
_D
Ranking =
IF (
DATEDIFF (
MINX ( ALL ( 'Marketshare' ), 'Marketshare'[Date] ),
MAX ( 'Marketshare'[Date] ),
MONTH
) >= 11,
RANKX (
FILTER (
ALL ( 'Marketshare' ),
'Marketshare'[Date] = MAX ( 'Marketshare'[Date] )
),
CALCULATE ( SUM ( 'Marketshare'[Total] ) ),
,
DESC,
DENSE
),
BLANK ()
)
Obtén el resultado.
Adjunto mi muestra como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda, por favor considereAceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Lo intento con su solución, pero la columna calculada "Total", no funciona
la solución correcta debe ser:
Pero el poder de BI con su solución es:
Adjunto 2 archivos, el excel y el pbix con base de datos completa.
Además, podemos filtrar por columna "mercado".
Es porque en su muestra original, solo hay un valor en la misma fecha y la misma compañía, pero en la nueva muestra, hay muchas filas, se suman en el visual, luego debe dividirse por el número de filas.
Total =
IF (
DATEDIFF ( MINX ( ALL ( Test ), Test[Month] ), Test[Month], MONTH ) >= 11,
CALCULATE (
SUM ( Test[CIF Total] )
/ COUNTROWS (
FILTER (
ALL ( 'Test' ),
'Test'[GRUPO MARCA] = MAX ( 'Test'[GRUPO MARCA] )
&& 'Test'[Month] = MAX ( 'Test'[Month] )
)
),
DATESINPERIOD ( Test[Month], Test[Month], - 12, MONTH ),
ALLEXCEPT ( Test, Test[GRUPO MARCA] )
),
BLANK ()
)
Obtenga el resultado correcto.
Adjunto mi muestra como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda, por favor considereAceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Gracias por su ayuda, el "total" es correcto, pero ¿por qué hay muchos espacios en blanco? Si es la suma de los últimos 12 meses
Además, la cuota de mercado (%) funciona correctamente, pero el rango no:
¡Gracias!
De acuerdo con su nueva muestra, aquí está mi solución.
1.Cree una nueva tabla, no haga una relación entre las dos tablas.
Date = VALUES('Test'[PERIODO])
2.Crear tres medidas.
Total =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Month],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
- 12,
MONTH
),
ALLEXCEPT ( Test, Test[GRUPO MARCA] )
),
BLANK ()
)
Marketshare (%) Test =
VAR _SUM =
CALCULATE (
SUM ( Test[CIF Total] ),
DATESINPERIOD (
Test[Date],
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Date]
),
- 12,
MONTH
),
ALL ( Test )
)
VAR _D =
DIVIDE ( [Total], _SUM )
RETURN
_D
Ranking =
IF (
DATEDIFF (
MINX ( ALL ( Test ), Test[Month] ),
MAXX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
Test[Month]
),
MONTH
) >= 11,
RANKX (
FILTER ( ALL ( 'Test' ), 'Test'[PERIODO] = MAX ( 'Date'[PERIODO] ) ),
CALCULATE ( [Marketshare (%) Test] ),
,
DESC,
DENSE
),
BLANK ()
)
Obtenga el resultado correcto.
Adjunto mi muestra como referencia.
Saludos
Equipo de apoyo a la comunidad _ kalyj
Si esta publicación ayuda, por favor considereAceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Lo intento pero la columna calculada "total" no funciona correctamente.
Por ejemplo, sor la Compañía 1, la suma de los últimos 12 meses shpuld ser: 5,240,455,327 y el "Total" muestra: 2,704,074,948,897 es un error.
Correcto:
Incorrecto en PowerBI:
¡Adjunta el excel y el power bi para tu ayuda!
Además, podemos filtrar por columna "mercado", está en el pbix attach.
Muchas gracias