ABR002
Encontré algunas publicaciones sobre un tema similar, pero no puedo encontrar algo para mi problema exacto. Tengo un tablero donde necesito mostrar las 5 cuentas principales, con 5 tablas que muestran un desglose de esas cuentas, 1 para cada cuenta. Hacer topN es fácil, pero 2nd-5th no tanto. Encontré algunas cosas que me mostrarán el segundo número más alto, junto con el nombre de la cuenta sin desglose, pero no se puede usar para filtrar la tabla. Ya he creado una segunda tabla con las cantidades agrupadas por sus nombres de cuenta y una tabla de clasificación asociada. Aquí hay un ejemplo, digamos que un lugar de comida rápida quiere saber sus principales categorías, tiene estos datos:
Tabla maestra
Categoría | subcatálogo | Ventas |
Emparedado | Hamburguesa | 100 |
Emparedado | Hamburguesa con queso | 150 |
Emparedado | Pollo | 200 |
papas fritas | Pequeña | 50 |
papas fritas | Medio | 100 |
papas fritas | Grande | 75 |
soda | Coca | 25 |
soda | Coca-Cola Light | 25 |
soda | Duende | 45 |
soda | naranja | 30 |
Desierto | Helado | 100 |
Desierto | Galleta | 30 |
Desierto | Duende | 45 |
Luego creamos una segunda tabla con solo las categorías y los totales, agrupados en el editor de consultas y una columna de clasificación asociada, y creamos la relación con la tabla maestra a través de la columna Categoría:
Tabla de clasificación
Categoría | Ventas | Rango |
Emparedado | 450 | 1 |
papas fritas | 225 | 2 |
soda | 125 | 4 |
Desierto | 175 | 3 |
Necesito crear una tabla con un desglose del n. ° 2, tenga en cuenta que las papas fritas pueden no ser siempre el n. ° 2, por lo que necesito que refleje eso, lo que significa que no puedo filtrar por «papas fritas», también necesito que reconozca las selecciones de las segmentaciones de la página, por lo que tampoco puedo filtrar por el n.° 2 en la columna de rango, ya que cuando se seleccionan factores como la región, el rango n.° 2 en la tabla actual podría desaparecer y no habría un n.° 2 para filtrado por. El resultado final sería:
#2 Categoría
Categoría | subcatálogo | Ventas |
papas fritas | Pequeña | 50 |
papas fritas | Medio | 100 |
papas fritas | Grande | 75 |
Total | 225 |
Esencialmente, una tabla que me da el segundo número más alto en la tabla de clasificación. Gracias por cualquier ayuda, puedo aclarar más si es necesario.
Ashish_Mathur
Hola,
Vea si mi solución en este archivo PBI ayuda. Debería poder filtrar la columna Rango 1 en el panel de filtro.
Ashish_Mathur
Hola,
Vea si mi solución en este archivo PBI ayuda. Debería poder filtrar la columna Rango 1 en el panel de filtro.
daxer-todopoderoso
Aquí estás:
Responde totalmente a cualquier corte… pero hay una advertencia. Si el código clasifica 2 categorías de la misma manera, obtendrá un error en las imágenes, ya que algunas medidas querrán devolver una tabla en lugar de un escalar. Por lo tanto, ahora depende de usted asegurarse de que la medida de clasificación siempre devuelve diferentes rangos para diferentes categorías en todas las circunstancias. Piénselo bien, ya que rebanar y cortar en cubitos puede hacer que 2 categorías arrojen la misma cantidad total de ventas.
El modelo es muy simple:
DEFINE
// The base measure
MEASURE Measures_[Total Sales] = SUM( Sales[Sales] )
// The category rank.
// For this to return a rank
// Category must be in scope.
MEASURE Measures_[Category Rank] =
IF( ISINSCOPE( Sales[Category] ),
RANKX(
ALLSELECTED( Sales[Category] ),
[Total Sales],,DESC,Dense
)
)
// This one returns the Category
// that's been ranked #1 in the
// current context.
MEASURE Measures_[Rank #1 Category] =
CALCULATETABLE(
FILTER(
DISTINCT( Sales[Category] ),
[Category Rank] = 1
),
ALLSELECTED( Sales )
)
// This one is used in the table that
// displays the details of the #1 category.
// You just have to use it to filter rows
// in the table where this measure = 1.
// Of course, you do it in the Filter Pane
// of the visual/table.
MEASURE Measures_[Rank #1 Category Selector] =
INT( SELECTEDVALUE( Sales[Category] ) = [Rank #1 Category] )
// This one returns the Category
// that's been ranked #2 in the
// current context.
MEASURE Measures_[Rank #2 Category] =
CALCULATETABLE(
FILTER(
DISTINCT( Sales[Category] ),
[Category Rank] = 2
),
ALLSELECTED( Sales )
)
// This one is used in the table that
// displays the details of the #2 category.
// You just have to use it to filter rows
// in the table where this measure = 1.
// Of course, you do it in the Filter Pane
// of the visual/table.
MEASURE Measures_[Rank #2 Category Selector] =
INT( SELECTEDVALUE( Sales[Category] ) = [Rank #2 Category] )
Enlace al archivo
daxer-todopoderoso
No creo que esto sea tan difícil, pero tienes que decirme cómo vas a manejar los lazos. Si 2 categorías reciben el mismo rango debido a las mismas cantidades… ¿cómo vas a resolver esto?
ABR002
En respuesta a daxer-todopoderoso
En realidad, estamos hablando de montos específicos (hasta centavos) de cientos de millones de dólares, por lo que los lazos no deberían ser un problema, pero realmente no había pensado en eso. Supongo que si hubiera, digamos un empate para 3, me gustaría volver a subir uno (no estoy seguro de cuál) de alguna manera a 4, no estoy seguro de si ese es el mejor enfoque.