Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Problemas de rendimiento de agrupación de deciles dinámicos

Hola

Estoy trabajando en un informe sobre la rentabilidad, y una de las solicitudes fue separar las partidas en grupos de deciles (es decir, separar en 10 grupos relativamente iguales con estadísticas sobre cada grupo). Para toda la población esto es relativamente simple usando una columna calculada con RANKX(). Sin embargo, también quieren poder filtrar datos (como seleccionar una sola región) y tener la agrupación de deciles solo para esos datos filtrados. Desafortunadamente, el número de filtros que potencialmente podrían aplicarse es significativo, por lo que estoy tratando de encontrar una manera de crear una agrupación dinámica de deciles.

Basándome en otras publicaciones, tengo entendido que binning y RANKX() no funcionarán, ya que solo calculan en la actualización de datos. Pude usar una medida con una tabla de "Deciles" desconectada para lograr el resultado; sin embargo, tiene un rendimiento extremadamente pobre en imágenes. Hasta aproximadamente 10K filas funciona (aunque puede tomar 40 segundos), pero al probar con filas de 100K + nunca he conseguido que finalice.

Para diagnosticar, solo he estado tratando de contar el número de filas en cada decil.

Mi conjunto de datos de ejemplo es solo una gran lista de números del 0 al 10.000 con incrementos de 0,1 (0,0, 0,1, 0,2, ... , 9999,98, 9999,99) utilizando la siguiente consulta M, que crea la tabla "Dataset" con una sola columna "Valores"

dejar
Source = List.Generate(() = > 0, cada _ <10000, cada _ + 0.1),
#"Convertido a tabla" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Columnas renombradas" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Values"}})
en
#"Columnas renombradas"

Luego estoy creando una tabla de Deciles que es solo números 1-10, incremento de 1 (1, 2, ... , 9, 10). A continuación, cree una medida en la tabla Deciles para contar el número de filas en cada decil. Cabe destacar que en realidad estoy invirtiendo el orden para que el decil 1 = 10º decil y el decil 10 = 1º decil (según lo solicitado por la empresa).

Tamaño del decil =
VAR UpperBound = PERCENTIL. INC('Dataset'[Valores],1.1 - MIN(Deciles[Decil])/10)
VAR LowerBound = PERCENTIL. INC('Dataset'[Valores],1 - MIN(Deciles[Decil])/10)

Devolución
CALCULAR(
COUNTROWS('Conjunto de datos')
,'Dataset'[Values] <= UpperBound && 'Dataset'[Values] > LowerBound

)

Finalmente, estoy tratando de mostrar los campos Decil y Tamaño de decil (ambos de la tabla Deciles) en un visual de tabla, sin resumen en el campo Decil. Si limito los datos a 10K filas, funcionará; sin embargo, cuando expando a 100K, el visual no termina de actualizarse. Esto presenta un problema porque mis datos verdaderos tienen sustancialmente más datos (filas de 280K con potencial para aumentar).

A continuación se muestra lo que esperaría ver en el visual si finalizara.

DecilTamaño del decil
110000
210000
310000
410000

Cualquier ayuda sería apreciada. Siento que esto puede estar más allá de las capacidades de Power BI en este momento, pero quiero explorar todas las opciones.

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Por lo que vi en este artículo, se basa en la segmentación constante que está codificada en las tablas de segmentación. Necesito que mi información de segmentación también se actualice dinámicamente (es decir, los límites superior e inferior de cada segmento deben cambiar según el conjunto de datos filtrado, ya que los límites superior e inferior se basan en percentiles del conjunto de datos filtrado).

Lo que realmente necesito es una columna calculada que se actualice al filtrar para calcular los límites superior e inferior, pero eso no está disponible. Lo que escribí usa una variable en la medida para calcular el límite superior e inferior durante la visualización, pero el rendimiento es muy pobre. A continuación se muestra la captura de pantalla del analizador de rendimiento utilizando la segmentación codificada, utilizando medidas para calcular solo los límites superior e inferior, o usando una variable para almacenar los límites superior / inferior y calcular las segmentaciones a partir de eso.

James452_0-1638997294413.png

Si bien el método funciona para conjuntos de datos pequeños (solo 10K registros en lo anterior), no he logrado que funcione en conjuntos de datos más grandes.

Syndicate_Admin
Administrator
Administrator

Por favor, revise esto, si no lo ha hecho.

https://www.daxpatterns.com/dynamic-segmentation/

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors