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

Usar medida en la columna calculada

Hola -

Tengo un escenario en el que los usuarios deben poder seleccionar un valor porcentual de una segmentación de datos.

Ese valor de segmentación de datos seleccionado es utilizado por las foránulas de DAX para actualizar los valores en las medidas y columnas calculadas.

1) El usuario selecciona el 58,5% de la segmentación de datos.

2) Creé una medida para extraer el valor seleccionado: Factor S = SELECTEDVALUE('SRAF'[SRAF])

3) Como prueba, saqué la medida anterior en una tarjeta para asegurarme de que funciona correctamente; que lo hace.

La siguiente captura de pantalla muestra que .585 está seleccionado en la segmentación de datos y .585 se devuelve en la medida de la tarjeta.

Si la segmentación de datos se actualiza a cualquier otro valor, la medida de la tarjeta se actualiza inmediatamente para reflejarlo.

Hasta ahora, bien.

WinterMist_1-1648238153138.png

4) Hay una tabla llamada 'XL Comm Rates' (captura de pantalla a continuación).

Las primeras 4 columnas que se muestran provienen de datos cargados.

Las últimas 3 columnas son columnas calculadas: Tasa efectiva, Tasa de ganancia, Factor S

NOTA: "Factor S" en realidad no es necesario en la tabla. Solo está presente para la resolución de problemas.

WinterMist_2-1648238816642.png

5) Tanto las columnas calculadas "Tasa efectiva" como "Tasa de ganancia" usan el Factor S SOLO SI [Capped] = "Y".

IF [Capped] = "N" THEN S Factor no se utiliza en el cálculo.

Tasa efectiva =
SI (
'XL Comm Rates'[Limitado] = "Y",
«XL Comm Rates» [Tarifa base] * 'XL Comm Rates'[Multiplicador de tasa efectiva] * «Todas las medidas»[Factor S],
'XL Comm Rates'[Tarifa base] * 'XL Comm Rates'[Multiplicador de tasa efectiva]
)
Tasa de ganancia =
SI (
'XL Comm Rates'[Limitado] = "Y",
«XL Comm Rates» [Tarifa base] * 'XL Comm Rates'[Multiplicador de la tasa de ganancia] * «Todas las medidas»[Factor S],
«XL Comm Rates» [Tarifa base] * 'XL Comm Rates'[Multiplicador de la tasa de ganancia]
)
RESULTADO: Como puede ver en la captura de pantalla anterior:
- La tasa efectiva y la tasa de ganancia se rellenan correctamente siempre que [Capped] = "N" porque no se usa el factor S.
- Pero para cada fila donde [Capped] = "Y", se usa el Factor S, y las 3 columnas calculadas no devuelven nada.
- Me resulta extraño que la medida de la tarjeta muestre que la medida se rellena correctamente como .585, mientras que al mismo tiempo, la misma medida exacta («Todas las medidas»[Factor S]) no devuelve nada cuando se utiliza en un cálculo o columna calculada.
He leído varios foros sobre medidas y columnas calculadas que son diferentes, y pensé que entendía esto.
Es por eso que estoy usando específicamente una medida para extraer el valor de la segmentación de datos y columnas calculadas para elementos específicos de fila dentro de una tabla. Claramente todavía me falta algo.
Gracias de antemano por la ayuda.
7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hi, @WinterMist ;

Las segmentaciones de datos no se pueden usar en columnas calculadas. Sin embargo, pueden utilizarse en medidas.

Las segmentaciones de datos son filtros y, por lo tanto, utilizan el contexto de filtro. Los filtros pueden cambiar dinámicamente en función de lo que se selecciona y de cómo se definen las interacciones de filtro. Dado que las medidas son campos dinámicos calculados bajo demanda, pueden aprovechar este contexto de filtro para dar forma a los resultados.

Luego llegamos a las columnas calculadas. Las columnas calculadas utilizan el contexto de fila. Se rellenan una vez en la actualización de datos y no se actualizan de nuevo. Si cambia las interacciones, cambia las segmentaciones de datos, el contexto de la fila subyacente y los cálculos realizados en la carga no se verán afectados.

Por lo tanto, debe usar una medida en lugar de la columna calculada si desea cambiar el cálculo en una tabla cuando cambió el valor de la segmentación de datos. como sigue:

Effective Rate1 = 
var _value=MAX('XL Comm Rates'[Base Rate])*MAX('XL Comm Rates'[Effective Rate Mutplier])
return 
IF (
MAX('XL Comm Rates'[Capped]) = "Y",
_value * 'SRAF'[S Factor],_value)
Profit Rate1 = 
var _value=MAX('XL Comm Rates'[Base Rate]) * MAX('XL Comm Rates'[Proft Rate Mutiplier] )
return 
IF (
MAX('XL Comm Rates'[Capped]) = "Y",
_value*[S Factor],_value)

El resultado final se muestra a continuación:

vyalanwumsft_0-1648518555166.png


Saludos
Equipo de soporte de la comunidad _ Yalan Wu
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola v-yalanwu-msft

Gracias por educarme.

Creé las 2 medidas que proporcionaste.

Sin embargo, al agregar cualquiera de ellos al objeto visual de tabla existente, PBI devuelve este error:

"... no hay suficiente memoria para completar esta operación ..."

WinterMist_0-1648588419446.png

Después de mirar varios sitios en este error de PBI, verifiqué las siguientes cosas:

NOTA: Se proporcionan capturas de pantalla para cada elemento a continuación.

  • ¿Es PBI Desktop la versión de 16 bits? Sí.
  • ¿La memoria disponible de PBI Desktop está configurada en alrededor de 16 GB? Sí.
  • ¿Es el modelo de datos un esquema en estrella (tabla de hechos con muchas dimensiones)? Sí.
  • ¿Hay más de 15 columnas en la imagen de la tabla? No.
    • Actualmente hay 13 columnas antes de agregar cualquiera de las 2 nuevas medidas.
    • Sin embargo, ninguno de estos 13 se puede eliminar, ya que el negocio los requiere todos.

WinterMist_1-1648588419448.png

WinterMist_2-1648588419450.png

WinterMist_3-1648588419457.png

WinterMist_4-1648588419458.png

El informe no ha tenido problemas de memoria hasta este punto que he visto.

Hágame saber si tiene alguna sugerencia.

Gracias de nuevo por su ayuda.

Hi, @WinterMist ;

compruebe cuánta ram y potencia de CPU está tomando BI. A veces los navegadores web toman mucha memoria. Así que por favor verifique y cierre cualquier aplicación que tome mucha memoria.

Guarde también los cambios en Power BI y cierre y abra el archivo de nuevo e inténtelo.

Puede deberse a que el modelo de datos está demasiado hinchado si no hay otros servicios que ocupen los recursos de hardware. Por ejemplo, la tabla de datos es demasiado grande o hay demasiadas consultas...

Además, la configuración de la máquina local es demasiado baja, lo que también es un problema.

Trate de hacer referencia a los enlaces.

https://radacad.com/performance-tip-for-power-bi-enable-load-sucks-memory-up


Saludos
Equipo de soporte de la comunidad _ Yalan Wu
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola v-yalanwu-msft

Gracias por su respuesta.

  • Antes de agregar una de las nuevas medidas a la tabla visual, esta es una instantánea del uso de CPU y memoria PBI :
    • CPU = 1,2%
    • RAM = 1 GB

WinterMist_0-1648764257938.png

  • Al intentar agregar una de las nuevas medidas a la nueva tabla visual, PBI spins & Memory sigue creciendo cuanto más tiempo espero.
    • 00m 00s – 1 GB (34%)
    • 01m 00s – 8 GB (56%) captura de pantalla
    • 02m 00s – 13 GB (72%)
    • 03m 00s – 17 GB (85%) captura de pantalla
    • 03m 30s – 19 GB (89%)
    • 04m 00s – 21 GB (94%) captura de pantalla
    • Durante los próximos 10 minutos, fluctúa entre el 97-99% a alrededor de 25 GB antes de que la tabla visual PBI finalmente se bloquee y muestre "No se puede mostrar lo visual".
    • En ese momento, la CPU y la memoria vuelven a los niveles normales nuevamente.

WinterMist_1-1648764257951.png

WinterMist_2-1648764257956.png

WinterMist_3-1648764257960.png

WinterMist_4-1648764257963.png

WinterMist_5-1648764257964.png

WinterMist_6-1648764257965.png

NOTAS ADICIONALES:

  • Dado que este visual de tabla incluye el número de directiva de la tabla Hechos, esencialmente extrae todos los registros de la tabla Hechos (con solo 2 filtros):
    • Producto = [Producto principal]
    • Año >= 2017
  • Como resultado, si establezco Slicer Year = 2021, hay ~ 25K registros en la tabla solo para ese año. No es de extrañar. Y hay varios años para seleccionar en la rebanadora de año.
    • Pero esto es de esperar, ya que es lo que las empresas quieren ver y han estado usando durante mucho tiempo, sin ningún problema.
  • Por lo tanto, si no se selecciona ningún valor de segmentación de datos, este visual de tabla muestra cientos de miles de registros de hechos, junto con muchas columnas de dimensión.
  • Si exporto desde la tabla visual a CSV para 2021, exportará la lista (~ 25K registros). Sin embargo, si no filtro por año e intento exportar, da el siguiente error:
    • Los datos superan el límite. Sus datos son demasiado grandes.
    • No creo que esta sea la causa de mi error de memoria de medición, a menos que el problema sea simplemente el número de filas.
    • Simplemente estoy compartiendo esto para mostrar que el número de filas en la imagen de la tabla es grande y es de esperar.

WinterMist_7-1648764257967.png

  • No estoy viendo nada malo en el modelo de datos, que yo sepa. Un esquema en estrella está diseñado para tener una tabla de hechos muy grande, con un número de registros que generalmente aumenta continuamente. En roles anteriores, he visto tablas de hechos con millones de registros. Así que este ejemplo me parece comparativamente pequeño. (En ese momento, sin embargo, estaba usando QlikSense, y no Power BI).
  • ¿Realmente no es posible agregar un cálculo de medida a esta tabla visual, simplemente porque hay cientos de miles de filas?
    • Tengo la esperanza de que el problema sea con mi ignorancia, y no simplemente con una limitación de número de filas con PBI.

Gracias de nuevo por su tiempo.

Notas adicionales:

1) La tabla de datos "XL Comm Rates" solo tiene 33 filas. Si creo una tabla visual de solo "XL Comm Rates" y agrego las 2 nuevas medidas, funciona. No hay ningún error de memoria.

WinterMist_0-1648590605588.png

2) Sin embargo, la tabla "XL Comm Rates" se une a la tabla "Plan D" (Dimensión del plan) en el campo Plan, y luego desde la tabla "Plan D" vuelve a la tabla Hechos.

WinterMist_1-1648590765385.png

3) La tabla visual donde se deben agregar estas 2 nuevas medidas es extremadamente grande, ya que contiene datos de Hechos, y casi todas las dimensiones. Para cada fila, debe buscar el "Plan" en la tabla "XL Comm Rates" para determinar si el registro está limitado (Y/N) y luego realizar los cálculos. Pero, por supuesto, esta es la tabla visual que produce el error "memoria insuficiente" al intentar agregar cualquiera de las medidas.

WinterMist_2-1648591103057.png

WinterMist_3-1648591207036.png

Estas notas deberían al menos decirle que sus medidas están funcionando correctamente.

Desafortunadamente, simplemente no puedo descubrir cómo usarlos en la tabla visual donde las empresas los necesitan todavía.

Gracias de nuevo por su tiempo.

Syndicate_Admin
Administrator
Administrator

Las columnas calculadas se rellenan en el momento de la actualización. Si usamos una medida en una columna calculada (lo que no debemos hacer), la medida tendrá el valor que powerbi le dé al mismo tiempo. Realmente no quiero entrar en el valor que obtiene porque no es una buena idea usar medidas de esta manera.

El valor de columna calculado no cambiará cuando cambie un valor de segmentación de datos.

@HotChilli -

Gracias por educarme que el camino que he estado siguiendo no es bueno.

¿Hay algún camino alternativo que recomendaría para esta situación?

La empresa debe poder seleccionar valores porcentuales que cambian continuamente de una segmentación de datos (potencialmente muchas veces por hora). Cada vez que se actualiza el valor porcentual, las fórmulas de tasa efectiva y tasa de ganancia deben actualizar inmediatamente (no en el momento de la actualización) sus valores calculados dentro de la visualización de la tabla.

Gracias de nuevo por su tiempo.

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.