La solicitud

De Brian Foster, Comprador de Iluminación
Tu objetivo
La matriz tiene products[subcategory] en las filas y una segmentación products[category] en Lighting. Crea una medida llamada Share of Category: Sales de la subcategoría dividido entre Sales de toda su categoría. Quita todos los filtros de producto salvo el de categoría, con ALLEXCEPT(products, products[category]) o REMOVEFILTERS(products[subcategory]).
- Llena
[Share of Category]en cada fila del visualpendiente - También la fila Total correctapendiente
Tu medida
- Visual
- A matrix: rows = products[subcategory]; values = [Sales], [Share of Category]
- Segmentaciones
- products[category] = Lighting
- Medidas del informe
Sales = CALCULATE(SUM(order_items[line_total]), orders[status] = "completed")
Panel de datos: tablas y columnas
- order_items order_item_id, order_id, product_id, quantity, unit_price, discount_pct, line_total
- orders order_id, customer_id, order_date, status, channel, shipping_fee, coupon_code
- products product_id, name, category, subcategory, unit_price, unit_cost, launched_on, is_active
- customers customer_id, first_name, last_name, email, city, state, signup_date, segment, referral_source
- returns return_id, order_item_id, returned_on, reason, refund_amount
- Date Date, Year, Quarter, Month Number, Month, Year Month, Year Quarter, Day, Weekday Number, Weekday
Cargando el editor…
Solución de referencia
| subcategory | Sales | Share of Category |
|---|---|---|
| Floor Lamps | $93,964 | |
| Pendants | $392,054 | |
| Sconces | $312,965 | |
| Table Lamps | $202,861 | |
| Total | $1,001,844 |
Mote revisa tu resultado
Presiona Comprobar. Mote completa tu respuesta y la compara con lo que necesita el informe.
Lo que recibe Brian, y por qué
La lección
El último nivel dividía entre toda la tienda. Brian necesita un denominador más estrecho: la categoría padre de cada subcategoría. Eso significa quitar algunos filtros de producto y conservar otros.
En qué estás trabajando
Esta página ejecuta un motor DAX de práctica creado para este sitio. Evalúa tu medida para cada
fila de subcategoría, con la segmentación de Lighting aplicada, y comprueba cada celda. En Power
BI Desktop: Home → New measure, escribe la fórmula, configura Measure tools → Format →
Percentage y añade una segmentación con products[category].
Tres formas de quitar filtros
| Modificador | Quita | Conserva |
|---|---|---|
ALL(products) |
todos los filtros sobre products |
nada sobre products |
ALLEXCEPT(products, products[category]) |
todos los filtros sobre products |
el filtro de categoría |
REMOVEFILTERS(products[subcategory]) |
el filtro de subcategoría | todo lo demás |
REMOVEFILTERS hace exactamente lo que hace ALL dentro de CALCULATE; el nombre más nuevo dice
para qué sirve. ALL también puede devolver una tabla con cada valor (COUNTROWS(ALL(products))),
cosa que REMOVEFILTERS no puede.
La medida
Share of Category =
DIVIDE(
[Sales],
CALCULATE([Sales], ALLEXCEPT(products, products[category]))
)
Para la fila Pendants el contexto de filtro de la celda es: category = Lighting (segmentación), subcategory = Pendants (fila). ALLEXCEPT quita el filtro de subcategoría y conserva el de categoría, así que el denominador son todas las ventas de Lighting, unos $1.0 millones. Pendants vendió unos $392,000, así que la cuota es 39.1 %. Las cuatro filas de Lighting suman 100 %.
El mismo resultado escrito al revés:
Share of Category =
DIVIDE([Sales], CALCULATE([Sales], REMOVEFILTERS(products[subcategory])))
¿Cuál elegir? ALLEXCEPT dice «conserva solo esto», lo que sigue siendo correcto si alguien añade
después el nombre del producto a la matriz. REMOVEFILTERS dice «quita solo esto», lo que mantiene
un filtro sobre, digamos, products[is_active] que un filtro de página podría fijar. Elige según
lo que el ticket diga que debe sobrevivir.
Qué pasa con ALL(products)
ALL borra también la segmentación, así que el denominador pasa a ser todas las ventas de la tienda (unos $5.9 millones) y Pendants muestra 6.7 %. Los números parecen plausibles, por eso este error sobrevive en informes publicados. Comprueba siempre que las cuotas sumen 100 % donde deben.
Errores comunes
- ALL(products[category]). Quita el único filtro que querías conservar y deja el filtro de subcategoría, así que todas las filas muestran 100 %.
- Varias categorías en la segmentación. ALLEXCEPT conserva la segmentación tal como está, así que con Lighting y Outdoor marcadas el denominador es ambas categorías juntas. Una matriz con la categoría como fila exterior lo arregla: cada fila tiene entonces una categoría.
¡Linterna encendida!
Practicaste: allexceptremovefilterspercent of parentcalculatedivide
- Resuelto
- Sin pistas
- Al primer intento
