cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Pregunta teórica sobre el uso de DATESMTD con CALCULATE

Hola a todos

La documentación de MS proporciona este ejemplo a continuación para explicar la función DATESMTD:

calcular(suma(InternetSales_USD[SalesAmount_USD]), FECHASMTD(DateTime[DateKey]))

Mi pregunta es que según la sintaxis de la función CALCULATE, DATESMTD parece un filtro.

Pero aquí no está filtrando nada. Sólo está cambiando el contexto de cálculo que se debe hacer por mes a día.

Entonces, ¿por qué la función DATESMTD en el ejemplo anterior se considera y se coloca como "FILTRO" en la fórmula CALCULATE?

¿FILTER no es equivalente a eliminar elementos?

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

@Gguliani



La función CALCULATE acepta el siguiente tipo de parámetros después de Expression.

  • Expresiones de filtro booleanas
  • Expresiones de filtro de tabla
  • Funciones de modificación del filtro

En el ejemplo mtd es una expresión de filtro de tabla que se aplica aquí. CALCULATE filtra la columna DateTime[DateKey] con un intervalo de fechas de 1pt del mes a la fecha actual en segundo plano al aplicar la función DATESMTD.

¿Esperas que esto aclare tu pregunta?

Artículos:
https://dax.guide/calculate/
https://docs.microsoft.com/en-us/dax/calculate-function-dax


View solution in original post

Syndicate_Admin
Administrator
Administrator

No @Gguliani

Es un punto válido. Todo se reduce a la terminología. Aquí debe leer FILTER no como la selección habitual de la operación de filas, sino como contexto de filtro. El punto completo de CALCULATE es evaluar la expresión en un contexto de filtro modificado. Cada uno de esos argumentos "FILTER" descritos en la documentación se utiliza para modificar el contexto del filtro y puede ser:

A) operación de eliminación de filtros (como ALL, ALLEXCEPT, ALLNOBLANKROW)

B) operación de restauración de filtros (ALLSELECTED)

C) expresión de tabla, que devuelve una lista de valores para una o más columnas o para toda una tabla expandida

El punto C) sería el que está en juego en tu ejemplo datesmtd

Eche un vistazo a https://dax.guide/calculate/ para obtener una visión general más completa

SU18_powerbi_badge

Por favor, acepte la solución cuando haya terminado y considere la posibilidad de dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

No @Gguliani

Es un punto válido. Todo se reduce a la terminología. Aquí debe leer FILTER no como la selección habitual de la operación de filas, sino como contexto de filtro. El punto completo de CALCULATE es evaluar la expresión en un contexto de filtro modificado. Cada uno de esos argumentos "FILTER" descritos en la documentación se utiliza para modificar el contexto del filtro y puede ser:

A) operación de eliminación de filtros (como ALL, ALLEXCEPT, ALLNOBLANKROW)

B) operación de restauración de filtros (ALLSELECTED)

C) expresión de tabla, que devuelve una lista de valores para una o más columnas o para toda una tabla expandida

El punto C) sería el que está en juego en tu ejemplo datesmtd

Eche un vistazo a https://dax.guide/calculate/ para obtener una visión general más completa

SU18_powerbi_badge

Por favor, acepte la solución cuando haya terminado y considere la posibilidad de dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc.

View solution in original post

Syndicate_Admin
Administrator
Administrator

@Gguliani



La función CALCULATE acepta el siguiente tipo de parámetros después de Expression.

  • Expresiones de filtro booleanas
  • Expresiones de filtro de tabla
  • Funciones de modificación del filtro

En el ejemplo mtd es una expresión de filtro de tabla que se aplica aquí. CALCULATE filtra la columna DateTime[DateKey] con un intervalo de fechas de 1pt del mes a la fecha actual en segundo plano al aplicar la función DATESMTD.

¿Esperas que esto aclare tu pregunta?

Artículos:
https://dax.guide/calculate/
https://docs.microsoft.com/en-us/dax/calculate-function-dax


View solution in original post

Gracias @Fowmy esa explicación ayudó. Sólo una pequeña consulta de seguimiento:

¿Tiene sentido mi explicación a continuación? Quiero decir, ¿es compatible, contrarresta tu explicación o es incorrecto totalmente?

DATESMTD (DateTable[Date]) que según la sintaxis de la función CALCULATE aparece como un filtro es en realidad sólo un contexto. Y cuando pasamos el cursor sobre esa parte filter en la inteligencia de la fórmula- PBI sugiere que [Filter1] "evalúa una expresión en un contexto modificado por filtros". Lo que parece sugerir que aunque si no quita (filtrar) elementos todavía calcula la expresión por el contexto proporcionado por DATESMTD

@Gguliani

Tienes razón. Un punto en la eliminación de filtros además de agregar filtros es que CALCULATE también acepta modificadores de filtro.


Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Get Ready for Power BI Dev Camp

Power BI Dev Camp - June 24th

Mark your calendars and join us for our next Power BI Dev Camp!