Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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.
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
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
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!
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.
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.