Forum Discussion
Suma de TOPN
Hola, chicos
He visto este video de youtube en un tiempo y me pregunté si sería posible tener tanto la información de "Otros" como el TOPN que se está filtrando. Por ejemplo, en la imagen adjunta a continuación muestro lo que pretendo calcular, pero aún no pude encontrar una manera de calcularlo, así que aquí estoy. 🙂
Las medidas son las siguientes
En primer lugar, se crea un parámetro:
TopN = GENERATESERIES ( 1, 20, 1 )
A continuación, se creó el nombre Otros y se agregó a la tabla original:
Product Names = UNION ( ALLNOBLANKROW ( 'Product'[Product Name] ), { "Others" } )
Posteriormente, se crea una medida de fila visible para mostrar solo aquellas líneas que son más pequeñas o iguales al valor en el parámetro creado anteriormente (esto se establece en el panel Filtro de la tabla):
Visible Row =
VAR Ranking = [Ranking]
VAR TopNValue = [TopN Value]
VAR Result =
IF ( NOT ISBLANK ( Ranking ),
( Ranking <= TopNValue ) - ( Ranking = TopNValue + 1 ))
RETURN Result
El último paso fue crear la medida que calcula el total para "Otros":
Sales Amt =
VAR SalesOfAll =
CALCULATE ( [Sales Amount],
REMOVEFILTERS ( 'Product Names' ))
RETURN IF ( NOT ISINSCOPE ( 'Product Names'[Product Name] ),
-- Calculation for a group of products
SalesOfAll,
-- Calculation for one product name
VAR ProductsToRank = [TopN Value]
VAR SalesOfCurrentProduct = [Sales Amount]
VAR IsOtherSelected =
SELECTEDVALUE ( 'Product Names'[Product Name] ) = "Others"
RETURN
IF (
NOT IsOtherSelected,
-- Calculation for a regular product
SalesOfCurrentProduct,
-- Calculation for Others
VAR VisibleProducts =
CALCULATETABLE (
VALUES ( 'Product' ),
ALLSELECTED ( 'Product Names'[Product Name] )
)
VAR ProductsWithSales =
ADDCOLUMNS (
VisibleProducts,
"@SalesAmount", [Sales Amount]
)
VAR SalesOfTopProducts =
SUMX (
TOPN (
ProductsToRank,
ProductsWithSales,
[@SalesAmount]
),
[@SalesAmount]
)
VAR SalesOthers =
SalesOfAll - SalesOfTopProducts
RETURN
SalesOthers))
Ahora pregunto: ¿alguien sabe cómo calcular el TOPN filtrado para mostrarlo junto con los Otros en la misma tabla?
¡Gracias de antemano!
5 Replies
- Syndicate_Admin
Administrator
Para su requerimiento, me gustaría sugerirle que cree una variable con función de resumen para resumir registros de tabla con categorías y cálculos.
Luego, simplemente puede usar la función iteradora (por ejemplo, sumx, averagex) y las condiciones de filtro para aplicar el segundo efecto agregado y de filtro en él.
Enlaces de referencia:
Medir totales, la última palabra - Microsoft Power BI Community
Saludos
Xiaoxin Sheng
- Syndicate_Admin
Administrator
Gracias por tu apoyo, amigo 🤝
- Syndicate_Admin
Administrator
@pedrohp503 aquí hay un enlace para descargar el archivo con la solución:
C0120: filtre los 3 productos principales con una fila para otros mediante DAX en Power BI.pbix
Tomé el archivo de su artículo y agregué la lógica para mostrar también el TopN filtrado.- Syndicate_Admin
Administrator
Esto es exactamente lo que estaba buscando, amigo. Muchas gracias por la solución que proporcionaste
- Syndicate_Admin
Administrator
@pedrohp503 bienvenida 🙂