Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago

Problema de DAX.

Hola expertos,

Cuando estoy tratando de crear una medida me quedé con el siguiente problema.

Básicamente aquí estoy tratando de mostrar los valores del año anterior. Puedo usar datediff pero mi columna RPT Year está en formato de número entero

Prueba: CALCULATE(SUM(Query[Jan]),Query2[RPTyear]-2019) ---- Funciona
Pero cuando estoy tratando de hacer como abajo, estoy recibiendo error (básicamente dinámico)
Prueba: CALCULATE(SUM(Query[Jan]),Query2[RPTyear]-(Query2[RPTyear]-1))
Si seleccionamos 2020, necesito pasar 2019. RPTYear se muestra como segmentadora
Gracias
Anand

8 Replies

  • No @AnandaKali,

    Lo primero - No ha mencionado qué error está recibiendo utilizando esta medida. ¿Compartirlo para describir cuál es el problema?

    Gracias

    Pragati

    • Anonymous's avatar
      Anonymous
      Not applicable

      Se muestra el error como No se puede encontrar el año RPT

  • @AnandaKali

    tal vez usted puede probar esto

    Test = CALCULATE(SUM(Query[Jan]),Query2[RPTyear]=SLECTEDVALUE(Query2[RPTyear])-1))
  • @AnandaKali , En caso de que necesite este año vs el año pasado. Si tiene fecha, utilice la inteligencia de tiempo. otra clase de un año de tabla y utilizar la fórmula utilizando sólo año

    Ventas YTD á CALCULATE(SUM(Sales[Sales Amount]),DATESYTD('Date'[Date],"12/31"))
    Last YTD Sales á CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-1,Year),"12/31"))
    Este año Ventas: CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR('Date'[Date]),"12/31"))
    Ventas del año pasado: CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(ENDOFYEAR(dateadd('Date'[Date],-1,Year)),"12/31"))
    Last to last YTD Sales - CALCULATE(SUM(Sales[Sales Amount]),DATESYTD(dateadd('Date'[Date],-2,Year),"12/31"))
    Año detrás de Ventas: CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Year))


    Sólo año vs año, no un nivel por debajo. Esto puede funcionar sin la tabla de fechas, pero necesita una tabla de años

    Este año: CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]-max('Date'[Year])))
    Last Year ? CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]-max('Date'[Year])-1))
    rolling? CALCULATE(sum('order'[Qty]),filter(ALL('Date'),'Date'[Year]>'max('Date'[Year])-2 && 'Date'[Year]<-max('Date'[Year])) )

    diff -Este año]-[Año pasado]
    diff % á divide([This Year]-[Last Year ],[Last Year ])

    Power BI — Año tras año con o sin inteligencia de tiempo
    https://medium.com/@amitchandak.1978/power-bi-ytd-questions-time-intelligence-1-5-e3174b39f38a

  • AllisonKennedy's avatar
    AllisonKennedy
    Icon for Community Champion rankCommunity Champion

    @AnandaKali tiene una tabla DimDate? ¿Es eso lo que es Query2?

    Puede hacerlo más fácilmente si tiene una tabla DimDate utilizando inteligencia de tiempo integrada, de lo contrario necesita calcular el año máximo seleccionado en el contexto de todo el informe, puede hacerlo usando una variable, pero ¿necesita trabajar para selecciones de varios años? Si es así, la tabla DimDate es mucho más fácil. https://excelwithallison.blogspot.com/2020/04/dimdate-what-why-and-how.html

    De lo contrario, el uso de una variable se vería algo parecido a (he intentado tener en cuenta las selecciones de varios años, e imitado el comportamiento de la función DATEADD utilizando la inteligencia de tiempo y la tabla de fechas:

    Prueba de la prueba ( Test)

    VAR maxYear á MAX(Query2[RPTyear])

    VAR minYear á MIN(Query2[RPTyear])

    devolución

    CALCULATE(SUM(Query[Jan]),FILTER(ALL(Query2[RPTyear]), Query2[RPTyear]<-maxYear-1 && Query2[RPTyear]>- minYear-1 ))

  • Anonymous's avatar
    Anonymous
    Not applicable

    No @AnandaKali,

    Según su descripción, creé los datos:

    v-yangliu-msft_0-1608279255001.png

    Estos son los pasos que puede seguir:

    1. Utilice la tabla calculada para crear una tabla de calendario denominada query2 y cree una columna calculada para mostrar la tabla yearcalculated:

    Quert2 = CALENDARAUTO()

    columna calculada:

    PRTyear = YEAR('Quert2'[Date])

    2. Crear medida.

    Test =
    var _select =SELECTEDVALUE('Quert2'[PRTyear])
    return CALCULATE(SUM('Query'[Jan]),FILTER('Query',YEAR('Query'[Date])=_select-1))

    3. Resultado

    v-yangliu-msft_1-1608279255005.png

    Puede descargar el archivo PBIX desde aquí.

    Saludos

    Liu Yang

    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.