Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
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:
fecha | mercado | 30 días después de la fecha vencida | 60 días después de la fecha vencida |
1/1/2021 | nos | 7,000,000 | 8,000,401 |
1/1/2021 | como | 5,300,000 | 500,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:
fecha | mercado | métrico | valor |
1/1/2021 | nos | 30 días después de la fecha vencida | 7,000,000 |
1/1/2021 | nos | 60 días después de la fecha vencida | 8,000,401 |
1/1/2021 | como | 30 días después de la fecha vencida | 5,300,000 |
1/1/2021 | como | 60 días después de la fecha vencida | 500,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?
Solved! Go to 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.
¿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.
Si es así, primero cree una tabla tenue como se indica a continuación:
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:
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.
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.
Gracias por compartir.
Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.