CALCULAR con un nivel de detalle diferente en una matriz que la que se muestra

Un usuario Pregunto ✅

paulevans85

Oigan todos,

He estado trabajando en este problema durante demasiado tiempo y tal vez lo estoy pensando demasiado, pero no puedo hacer que este cálculo funcione como creo que debería. Tengo datos como se muestra a continuación. Para resumir los puntos importantes para este cálculo, las tablas son:
Dim_Model: por SKU con Categoría, Grupo, Fabricante
Dim_Calendar: por fecha con SeasonYear
Dim_Geography: por estado
Fact_Inventory: por SKU, Fecha, Estado con Ventas

paulevans85_1-1611123977195.png

El visual resultante que estoy tratando de lograr es una Matriz con varias medidas (no es importante para esta pregunta) y un porcentaje del cálculo del tipo total (el quid de esta pregunta) que se agrega a un nivel que no se muestra en el visual. Para complicar aún más las cosas, por supuesto, hay segmentaciones en el informe a considerar. Cualquier ayuda es muy apreciada ya que estoy seguro de que esto es algo simple que estoy pasando por alto.

Filtros: Dim_Model.Fabricante = «A»
Segmentaciones: Dim_Model.Category, Dim_Calendar.SeasonYear y Dim_Geography.State

Medida deseada: Porcentaje de ventas para ese SKU/Categoría (cualquiera que sea el nivel de exploración en el que lo tenga el usuario) Grupo vs las ventas totales de ese Grupo para todos los fabricantes
Consideraciones: todos los fabricantes usarán los mismos nombres de grupo para fines de datos de la industria, pero ninguno usa la misma categoría ni la misma nomenclatura de SKU, los usuarios quieren una matriz para poder desglosar hacia abajo/arriba entre categoría y SKU, pero solo usando los botones superiores, no los expansores de árbol. /contratistas, me doy cuenta de que esta medida duplica algunos datos en el aspecto visual, pero es lo suficientemente útil como para que esté bien hasta que podamos obtener comparaciones más granulares de categorías y SKU

Datos de ejemplo: aquí está claro que Group es Outdoor, Indoor y Multi, aunque suponga que realmente no se puede inferir por el nombre de Categoría, debe usar el campo Group

Categoría Ventas Ventas grupales Ventas grupales
de Industria
% de
Industria
Exterior – Grande $ 152,254 $ 228,038 $ 272,341 83,7%
Exterior – Pequeño $ 75,784 $ 228,038 $ 272,341 83,7%
Interior – Grande $ 12,347 $ 24,887 $ 786,574 3,2%
Interior – Medio $ 9,087 $ 24,887 $ 786,574 3,2%
Interior – Pequeño $ 3,453 $ 24,887 $ 786,574 3,2%
Múltiples – Pequeño $ 111,980 $ 1.112.320 $ 3.547.908 31,4%
Multi-X Pequeño $ 1,000,340 $ 1.112.320 $ 3.547.908 31,4%

disculpas por los números más a la derecha rotos, me sigue diciendo HTML no válido cuando alineo a la derecha aunque solo estoy usando los botones incorporados

paulevans85

En respuesta a pablodbrown

¡Hola @PaulDBrown! Gracias de nuevo por esto. Trabajé en algunas iteraciones de lo que sugirió y todavía me dio solo los números de los elementos visibles.

¡Buuuuuut, pude resolverlo! 🙌 A través de esta medida bastante poco elegante, obtuve los números exactos que necesito en cualquier nivel de jerarquía visible

Ventas en el grupo =
VAR grp = VALOR SELECCIONADO (Dim_Model[Group])

REGRESO
CALCULAR(
SI(
ESBLANCO(grp)
, SUMA(Fact_Inventory[Sales])
, CALCULAR(
SUMA(Fact_Inventory[Sales])
, Dim_Modelo[Group] = grupo
)
)
, TODO(Dim_Model[SKU])
, TODO(Dim_Model[Category])
)
El condicional ISBLANK (grp) es para situaciones en las que se «selecciona» más de 1 grupo, lo que solo ocurre (en mi informe) para los totales generales y, por lo tanto, debe ser solo todas las ventas (dependiendo de otras segmentaciones en la página)

pablodbrown

@paulevans85

Esto debería funcionar:

Ventas todos los fabricantes y grupo de categoría = CALCULAR ([Sum of Sales], TODOS(Dim_Modelo.Fabricante), TODOS(Dim_Modelo.Grupo de categorías))

% sobre todos los fabricantes = DIVIDE([Sum of Sales], [Sales all manufacturers & Category Group])

paulevans85

En respuesta a pablodbrown

¡Hola @PaulDBrown! Muchas gracias por la respuesta. Categoría y Grupo son dos campos separados; Categoría siendo uno de los dos posiblemente visibles (SKU el otro) en las Filas de la Matriz y Grupo siendo el campo no visible al que necesito agregar. Probé el TODOS (Dim_Model.Fabricante) y agregó el segundo ALL() así:

  1. como lo has escrito, no funciona porque son campos separados
  2. solo Categoría: brinda las ventas totales de la industria ($1,365,245 de la tabla anterior) para todos los Grupos para cada fila (actualmente se muestra en el nivel de jerarquía de Categoría) y ahora muestra registros para otras Categorías que no forman parte del Fabricante «A» con espacios en blanco para otras medidas y el mismo total para esta medida
    1. Para deshacerme de las filas adicionales, creé una medida Sales_All = CALCULATE(SUM(Fact_Inventory.Sales), ALL(Dim_Model.Manufacturer)) y filtrado a «no está en blanco» en el objeto visual. Esto lo devolvió a la matriz como se describió anteriormente con un diferente [Sales all manufacturers & Category Group] para cada uno, pero agregando a ese nivel de categoría. El total general en la parte inferior es el total general correcto, pero los subtotales individuales no suman ese total general porque las otras ventas (no el fabricante «A») no están visibles
  3. solo grupo: no agrega filas adicionales y muestra el total general correcto, pero muestra subtotales individuales por categoría en lugar de subtotales por grupo
    1. Se agregó el [Sales_All] filtre nuevamente para probar y cambió solo el total general y lo convierte en la suma de los subtotales mostrados
  4. Categoría y Grupo – igual que 2 y 2.1 arriba

pablodbrown

En respuesta a paulevans85

@paulevans85

Bien, para lograr lo que necesita, dado que Categoría y Grupo son campos separados, puede:

1) agregue ambos campos a la imagen y use la medida

2) cree un nuevo campo (columna calculada) en la tabla dim para categoría – grupo. A continuación, puede utilizar este campo en la medida en lugar de la expresión ALL(Dim_Model.Group). Es decir. Use ALL(Dim_Model. Category – Group)) y cámbiele el nombre en el visual.
¿tener sentido?

paulevans85

En respuesta a pablodbrown

¡Hola @PaulDBrown! Gracias de nuevo por esto. Trabajé en algunas iteraciones de lo que sugirió y todavía me dio solo los números de los elementos visibles.

¡Buuuuuut, pude resolverlo! 🙌 A través de esta medida bastante poco elegante, obtuve los números exactos que necesito en cualquier nivel de jerarquía visible

Ventas en el grupo =
VAR grp = VALOR SELECCIONADO (Dim_Model[Group])

REGRESO
CALCULAR(
SI(
ESBLANCO(grp)
, SUMA(Fact_Inventory[Sales])
, CALCULAR(
SUMA(Fact_Inventory[Sales])
, Dim_Modelo[Group] = grupo
)
)
, TODO(Dim_Model[SKU])
, TODO(Dim_Model[Category])
)
El condicional ISBLANK (grp) es para situaciones en las que se «selecciona» más de 1 grupo, lo que solo ocurre (en mi informe) para los totales generales y, por lo tanto, debe ser solo todas las ventas (dependiendo de otras segmentaciones en la página)

Deja un comentario

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