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

Shape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.

Reply
Syndicate_Admin
Administrator
Administrator

Gráfico de cascadas: datos de desapresibles para un conjunto de datos grande (registros de 10 M+)

Hola

Me enfrento a un problema en el que el tamaño de mis datos es potencialmente demasiado grande para el tipo de objeto visual que quiero crear. Tengo un conjunto de datos que tiene alrededor de 45 millones de registros y necesito crear un gráfico de cascada que, en mi opinión, requeriría un poco de desapreocupar los datos, ya que algunos de los campos que estamos trayendo al conjunto de datos son agregados de otros campos. por ejemplo:

fechamercado30 días después de la fecha vencida60 días después de la fecha vencida
1/1/2021nos7,000,0008,000,401
1/1/2021como5,300,000500,130

A continuación, se convertiría en el siguiente con el fin de ser capaz de hacer una avería de cascada mediante la determinación de días pasados debidos en función de segmentos de envejecimiento distintos:

fechamercadométricovalor
1/1/2021nos30 días después de la fecha vencida7,000,000
1/1/2021nos60 días después de la fecha vencida8,000,401
1/1/2021como30 días después de la fecha vencida5,300,000
1/1/2021como60 días después de la fecha vencida500,130

El problema es el tamaño de mi conjunto de datos. Ya es bastante grande (45M) y potencialmente voy a tener que volar mucho más para crear las vistas de cascada que necesito crear a menos que a) limite ciertas segmentaciones o b) colapse ciertos segmentos juntos antes de traer el conjunto de datos a PowerBI. Ninguno de los dos es ideal. ¿Hay alguna manera de hacer un gráfico de cascada en la forma en que estoy pensando sin volar completamente mi conjunto de datos o informe?

1 ACCEPTED SOLUTION

Hola @v-kelly-msft,

No te preocupes en absoluto. Después de hacer algunas investigaciones pude idear algo que creo que funcionará. Esencialmente, lo que he encontrado es que si puedo omitir todos y cada uno de los registros con un valor cero, el conjunto de datos se vuelve mucho más manejable. La forma de hacerlo sería crear una tabla calculada como tal:

UnpivotedTable = UNION(CALCULATETABLE(
                             SUMMARIZE(OriginalTable,
                                       OriginalTable[date],
                                       OriginalTable[segment1],
                                       OriginalTable[segment2],
                                       OriginalTable[segment3],
                                       OriginalTable[segment4],
                                       OriginalTable[segment5],
                                       OriginalTable[segment6],
                                       OriginalTable[segment7],
                                       OriginalTable[segment8],
                                       OriginalTable[segment9],
                                       OriginalTable[segment10],
                                       OriginalTable[segment11],
                                       OriginalTable[segment12],
                                       OriginalTable[segment13],
                                       OriginalTable[segment14],
                                       "Metric",
                                       "30 days past due",
                                       "Value",
                                       sum(OriginalTable[30 days past due])),
                                       FILTER(OriginalTable,OriginalTable[30 days past due] <> 0)),
                CALCULATETABLE(
                             SUMMARIZE(OriginalTable,
                                       OriginalTable[date],
                                       OriginalTable[segment1],
                                       OriginalTable[segment2],
                                       OriginalTable[segment3],
                                       OriginalTable[segment4],
                                       OriginalTable[segment5],
                                       OriginalTable[segment6],
                                       OriginalTable[segment7],
                                       OriginalTable[segment8],
                                       OriginalTable[segment9],
                                       OriginalTable[segment10],
                                       OriginalTable[segment11],
                                       OriginalTable[segment12],
                                       OriginalTable[segment13],
                                       OriginalTable[segment14],
                                       "Metric",
                                       "60 days past due",
                                       "Value",
                                       sum(OriginalTable[60 days past due])),
                                       FILTER(OriginalTable,OriginalTable[60 days past due] <> 0)),

Mientras que antes de unpivoting me dejó con un conjunto de datos 2-5 veces el tamaño de mi conjunto de datos original, éste me deja con un conjunto de datos mucho más pequeño que todavía contiene todos los datos relevantes necesarios para un gráfico de cascada de trabajo.

View solution in original post

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

No @bi_poweruser429,

¿Qué tal crear una tabla duplicada mediante la eliminación de las columnas?

Saludos
Kelly

¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Hola @v-kelly-msft,

¿No sería una mesa enorme que tendría que guardar en alguna parte? Ese es realmente el problema... técnicamente sería posible duplicar y despivot una tabla en M o DAX, pero ¿sería capaz incluso de almacenar eso en mi archivo dado que el conjunto de datos principal en sí es ya registros 45M? Lo único que podría pensar sería traer los datos a través de Direct Query (por lo tanto, no almacenarlos en PBI) que simplemente no es factible debido a las limitaciones de ese método.

No @bi_poweruser429,

Si es así, primero cree una tabla tenue como se indica a continuación:

v-kelly-msft_0-1619515614582.png

A continuación, cree una tabla calculada como se indica a continuación:

Table 2 = CROSSJOIN(SELECTCOLUMNS('Table',"Date",[Date],"Market",[Market]),VALUES('dim table'[Column1]))

Y una medida como se indica a continuación:

Measure = 
SWITCH(
    SELECTEDVALUE('Table 2'[Column1]),
    "30 days past due",CALCULATE(SUM('Table'[30 days past due]),FILTER(ALL('Table'),'Table'[Date]=MAX('Table 2'[Date])&&'Table'[Market]=MAX('Table 2'[Market]))),
    "60 days past due",CALCULATE(SUM('Table'[60 days past due]),FILTER(ALL('Table'),'Table'[Date]=MAX('Table 2'[Date])&&'Table'[Market]=MAX('Table 2'[Market]))),BLANK())

Finalmente verás:

v-kelly-msft_1-1619515704190.png

Para el archivo .pbix relacionado, pls ver adjunto.

Saludos
Kelly

¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Hola @v-kelly-msft,

Desafortunadamente, esta opción sigue haciendo volar mi conjunto de datos hasta un tamaño insostenible. Creo que tendré que manejar esto en el lado de db. Gracias por su ayuda.

No @bi_poweruser429,

Siento no poder ayudar al final.

Saludos
Kelly

¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Hola @v-kelly-msft,

No te preocupes en absoluto. Después de hacer algunas investigaciones pude idear algo que creo que funcionará. Esencialmente, lo que he encontrado es que si puedo omitir todos y cada uno de los registros con un valor cero, el conjunto de datos se vuelve mucho más manejable. La forma de hacerlo sería crear una tabla calculada como tal:

UnpivotedTable = UNION(CALCULATETABLE(
                             SUMMARIZE(OriginalTable,
                                       OriginalTable[date],
                                       OriginalTable[segment1],
                                       OriginalTable[segment2],
                                       OriginalTable[segment3],
                                       OriginalTable[segment4],
                                       OriginalTable[segment5],
                                       OriginalTable[segment6],
                                       OriginalTable[segment7],
                                       OriginalTable[segment8],
                                       OriginalTable[segment9],
                                       OriginalTable[segment10],
                                       OriginalTable[segment11],
                                       OriginalTable[segment12],
                                       OriginalTable[segment13],
                                       OriginalTable[segment14],
                                       "Metric",
                                       "30 days past due",
                                       "Value",
                                       sum(OriginalTable[30 days past due])),
                                       FILTER(OriginalTable,OriginalTable[30 days past due] <> 0)),
                CALCULATETABLE(
                             SUMMARIZE(OriginalTable,
                                       OriginalTable[date],
                                       OriginalTable[segment1],
                                       OriginalTable[segment2],
                                       OriginalTable[segment3],
                                       OriginalTable[segment4],
                                       OriginalTable[segment5],
                                       OriginalTable[segment6],
                                       OriginalTable[segment7],
                                       OriginalTable[segment8],
                                       OriginalTable[segment9],
                                       OriginalTable[segment10],
                                       OriginalTable[segment11],
                                       OriginalTable[segment12],
                                       OriginalTable[segment13],
                                       OriginalTable[segment14],
                                       "Metric",
                                       "60 days past due",
                                       "Value",
                                       sum(OriginalTable[60 days past due])),
                                       FILTER(OriginalTable,OriginalTable[60 days past due] <> 0)),

Mientras que antes de unpivoting me dejó con un conjunto de datos 2-5 veces el tamaño de mi conjunto de datos original, éste me deja con un conjunto de datos mucho más pequeño que todavía contiene todos los datos relevantes necesarios para un gráfico de cascada de trabajo.

No @bi_poweruser429,

Gracias por compartir.

Saludos
Kelly

¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

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

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Top Solution Authors
Top Kudoed Authors