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

No se pueden obtener los valores correctos cuando se utiliza una columna de formato de fecha diferente de la misma tabla

Hola a todos. Este me tiene perplejo. A continuación se muestra una captura de pantalla que muestra mis conexiones en el modelo de datos:

theDarkPrince_2-1631625569215.png

La columna YYYY_MM tiene formato "2021-09" y MONTH_IN_CAL columna tiene formato "Sep-21".

He creado una medida de la siguiente manera:

Previous Month Backlog = 
var curr_mon_yyyy_mm = "2021-09"
var prev_mon_yyyy_mm = "2021-08"
var Result = IF( MIN('Calendar'[YYYY_MM]) = curr_mon_yyyy_mm, CALCULATE(SUM('Facts Data'[BACKLOG_AMOUNT]), 'Calendar'[YYYY_MM] = prev_mon_yyyy_mm ), BLANK() )
Return Result

Lo que estoy tratando de lograr en esta medida es calcular la cantidad del mes anterior y mostrarla en el mes actual de la siguiente manera:

theDarkPrince_3-1631625734431.png

Con la columna YYYY_MM, funciona bien y obtengo la cantidad correcta. Sin embargo, quiero lograr lo mismo con MONTH_IN_CAL columna, pero me quedo en blanco:

theDarkPrince_4-1631625875780.png

Tanto YYYY_MM como MONTH_IN_CAL provienen de la misma tabla de calendario. Para tratar de llegar al fondo de las cosas, obtuve la consulta DAX usando Performance Analyzer y obtuve esto:

DEFINE
  VAR __DS0Core = 
    SUMMARIZECOLUMNS(
      ROLLUPADDISSUBTOTAL(
        ROLLUPGROUP('Calendar'[MONTH_IN_CAL], 'Calendar'[YYYY_MM]), "IsGrandTotalRowTotal"
      ),
      "Previous_Month_Backlog", 'Facts Data'[Previous Month Backlog]
    )
  VAR __DS0PrimaryWindowed = 
    TOPN(
      502,
      __DS0Core,
      [IsGrandTotalRowTotal],
      0,
      'Calendar'[YYYY_MM],
      1,
      'Calendar'[MONTH_IN_CAL],
      1
    )
EVALUATE
  __DS0PrimaryWindowed
ORDER BY
  [IsGrandTotalRowTotal] DESC, 'Calendar'[YYYY_MM], 'Calendar'[MONTH_IN_CAL]

YYYY_MM por sí solo está ordenado, pero para mostrar MONTH_IN_CAL en el orden cronológico adecuado, lo he ordenado por la columna YYYY_MM.

Por lo tanto, parece que, aunque la columna YYYY_MM no se está utilizando en el visual de la tabla, se convertirá automáticamente en parte de la consulta DAX para fines de pedido. Investigué un poco sobre cómo puedo resolver esto y encontré este https://blog.crossjoin.co.uk/2015/12/15/power-bi-desktop-sort-by-column-and-dax-calculations-that-us... artículo. Sin embargo, el autor sugiere usar ALL('Calendario'[MONTH_IN_CAL], 'Calendario'[YYYY_MM] ),pero usar eso me da un número incorrecto que es un total de todos los valores de la tabla. Cualquier idea sobre cómo se puede resolver esto. Cualquier ayuda es apreciada. Gracias.

@amitchandak @Greg_Deckler @parry2k @ryan_mayu @RicoZhou

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@theDarkPrince , Crear un rango en la tabla Calendario en AAAAMM

nueva columna

Rango de mes = RANKX(all('Date'),'Date'[YYYY_MM],,ASC,Dense)

medida de ejemplo

Este mes = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month Rank]=max('Date'[Month Rank])))
Último mes = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month Rank]=max('Date'[Month Rank])-1))

Período del año pasado = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month]=max(Period[Month]) && 'Date'[Year]=max('Date'[Year])-1))

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

@theDarkPrince Pensamiento:

Previous Month Backlog Measure = 
var __Current = MAX('Calendar'[Date])
VAR __PreviousEOMonth = EOMONTH(__Current,-1)
VAR __Previous = DATE(YEAR(__PreviousEOMOnth),MONTH(__PreviousEOMOnth),1)
var Result = CALCULATE(SUM('Facts Data'[BACKLOG_AMOUNT]), 'Calendar'[Date] <= __Previous, 'Calendar'[Date]<=__PreviousEOMonth)
Return Result
Syndicate_Admin
Administrator
Administrator

@theDarkPrince , Crear un rango en la tabla Calendario en AAAAMM

nueva columna

Rango de mes = RANKX(all('Date'),'Date'[YYYY_MM],,ASC,Dense)

medida de ejemplo

Este mes = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month Rank]=max('Date'[Month Rank])))
Último mes = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month Rank]=max('Date'[Month Rank])-1))

Período del año pasado = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Month]=max(Period[Month]) && 'Date'[Year]=max('Date'[Year])-1))

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.