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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
phodges
Frequent Visitor

Escalado de números en Power BI

Hola comunidad de Power BI,

Estoy trabajando en un proyecto que requiere el escalado de datos dentro de Power BI. Adjunto es un archivo de ejemplo con un pequeño conjunto de datos. El conjunto de datos que estoy usando es mucho más grande y más complejo, pero esto debería ilustrar la idea. Traté de adjuntar el archivo real, pero supongo que no se puede adjuntar directamente los archivos aquí, así que he añadido algunas capturas de pantalla y el código para mis medidas a continuación.

He determinado una forma de escalar números en una tabla que divida el conjunto de datos original por un número escrito por el usuario. El usuario escribe el índice de la fila que desea escalar en una segmentación de datos establecida en "mayor o igual que" y, a continuación, en otra segmentación de datos similar escribe el valor de escalado para esa fila de índice. A continuación, se realiza el cálculo para escalar el número. Esto funciona eficazmente si el número de filas que se deben escalar es pequeño. Pero para cada fila que el usuario desea escalar, se necesitaría crear un nuevo conjunto de tablas para las segmentaciones de datos para que todas las matemáticas se puedan hacer en la misma tabla. Necesito todo esto en la misma tabla porque necesito el total de los números escalados.

Como puede ver, hacerlo de esta manera significaría necesitar muchas tablas de una sola columna para contener las opciones para las opciones numéricas utilizadas por el usuario. También significaría muchas instrucciones IF dentro de la medida de escalado. ¿Alguien sabe una mejor manera de hacer esto?

Algunas notas sobre esto:

- Sé que un "parámetro WhatIf" se puede utilizar para definir una elección de número, pero debido a las limitaciones del "parámetro WhatIf" (sólo puede contener 1000 números) esto no funcionará porque necesito un rango más alto de opciones numéricas. Para el ejemplo simple que proporcioné sí que funcionarían, pero no para mi conjunto de datos más grande.

- Sé que también puedo usar GenerateSeries() para producir una tabla calculada para las opciones numéricas, que al menos puede ser mejor que las tablas completas "físicas", pero he encontrado un problema similar al de "Parámetro WhatIf" en el que muestra un comportamiento extraño generando números en un rango de números más grande.

- Necesito ser capaz de escalar los números en una fila de forma independiente de las otras filas. Algunos necesitan ser escalados y otros pueden necesitar permanecer como están.

Gracias de antemano por cualquier pensamiento o comentario.

Capture.PNGCapture2.PNGCapture3.PNGCapture4.PNGCapture5.PNGCapture6.PNG

Medidas:

Números a escalar medidas - PROMEDIO('Números a escalar'[Números a escalar]) //utilizados para agarrar los números a escalar para cálculos posteriores

Números escalados : IF //utilizado para escalar los números
(
SELECTEDVALUE('Números a escalar'[índice]) ? MIN('Índice de número a escalar 1'[Número de tipo en]),
[Números a escalar medida]/MIN('Valor de escala 1'[Número de tipo en]),
Si
(
SELECTEDVALUE('Números a escalar'[índice]) ? MIN('Índice de número a escalar 2'[Número de tipo en]),
[Números a escalar medida]/MIN('Valor de escala 2'[Número de tipo en]),
[Números a escalar medida]
)
)

Total de números escalados : IF //utilizado para calcular el total adecuado de los números escalados en la fila "Total" de la tabla
(
HASONEFILTER('Números a escalar'[índice]),
[Números escalados],
SUMX('Números a escalar', [Números escalados])
)

Diferencia de números escalados a partir de números reales ? AVERAGE('Numbers to be scaled'[Numbers to be scaled]) - [Scaled Numbers] //used for conditional formatting to highlight which rows were scaled

3 REPLIES 3
v-jayw-msft
Community Support
Community Support

Hola @phodges ,

Puede actualizar el pbix a onedrive y compartir el enlace aquí. Para la función switch() se puede probar a continuación la fórmula.

Switch(true(),condition1,result1,condition2,result2,etc...)

Saludos

Jay

Community Support Team _ Jay
If this post helps, then please consider Accept it as the solution
to help the other members find it.

Thank you for your reply. Yes I have tried the switch function, but because I have 20 possible conditions it takes a very long time. It seems, by all that I have been reading, this is the proper way to do, but it is far too slow. I will keep working on it and if I find a solution I will post in case someone else needs a similar solution. If you, or anyone, has any other ideas I would love to hear them. Thanks again for your help!

phodges
Frequent Visitor

Así que como una actualización de mi publicación anterior,

- Descubrí por qué GenerateSeries() no funcionaba correctamente. Todo lo que tenía que hacer era establecerlo en un valor decimal fijo y funcionó bien incluso con el rango de números más alto.

- Estaba usando una gran cantidad de declaraciones IF para crear las opciones que necesitaba, pero encontré que Switch() se puede utilizar para limpiar mucho eso.

- Todavía estoy usando una gran cantidad de tablas (ahora son todas GenerateSeries() en lugar de tablas codificadas de forma rígida) para las selecciones de números por los usuarios por lo que si alguien sabe de una mejor manera de hacer que agradecería la ayuda.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors