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

Evitar el uso de PREVIOUSMONTH y hay una brecha en las fechas

Hola- Para obtener los ingresos mensuales, necesito tomar los ingresos del mes actual y restarlos de los ingresos del mes anterior.

Este cálculo ( -Monthly Rev = [ATD Revenue] - CALCULATE([ATD Revenue],PREVIOUSMONTH(Period[Period Start Date])) funciona muy bien hasta que hay una brecha en el Gl Period y luego resta esa cantidad de cero, lo que no quiero que haga. Tampoco está funcionando correctamente de diciembre a enero, ya que también está trayendo de vuelta los ingresos de ATD de ese mes en lugar de restarlos del mes anterior.

La columna naranja es lo que está trayendo de vuelta y la columna "Debería ser" es lo que me gustaría que volviera. ¿Estoy pensando que la solución puede estar envolviendo esta fórmula en una función IF?

Jdokken_0-1632263470728.png

25 REPLIES 25
Syndicate_Admin
Administrator
Administrator

Dado que no tiene una tabla de fechas, "no puede" usar las funciones de inteligencia de tiempo. Por lo tanto, debe codificar los cálculos de fecha.
Probar:

Valor del mes anterior =

VAR SelDate = MAX(Período [Fecha de inicio del período])

VAR SelPeriod = AÑO(SelDate) * 100 + MES(SelDate)
VAR PP = IF( MONTH(SelDate) =1, (YEAR(SelDate) -1) * 100 + 12, YEAR(SelDate) * 100 + MONTH(SelDate) -1

DEVOLUCIÓN

CALCULATE([ATD Revenue], FILTER(ALL(Period), SelPeriod = PP))

y

-Ingresos mensuales = IF(ISBLANK([Valor del mes anterior]), BLANK(), [Ingresos ATD] - [Valor del mes anterior])

PD. Disculpas por cualquier error de sintaxis. Estoy escribiendo en mi teléfono

Gracias @PaulDBrown ,

Estoy probando tu fórmula pero luego obtuve este error?

Jdokken_0-1632767152062.png

¿Es el tipo Period[Period Start Date]?

Jdokken_0-1632770513916.png

De acuerdo, los probaré como medidas separadas. Todavía estoy recibiendo estos espacios en blanco aleatorios y no lo entiendo. Así que estoy estableciendo tiempo con alguien en TI que tal vez pueda ayudarme a descubrir qué está pasando en el cubo. Pensé que era interesante en mi fórmula -PreviousMonth2 que los espacios en blanco se alinearan con los números impares que aparecen "421", 100019" y "38420". Tal vez eso tenga algo que ver con eso.

-PM ATD REV =
VAR SelDate = MAX(Period[Period Start Date])
DEVOLUCIÓN
CALCULAR([ATD Ingresos],
FILTRO(TODOS(Punto),
AÑO(SelDate) * 100 + MES(SelDate) = [-PreviousMonth]))

Jdokken_1-1632771233838.png

Veo que tienes un ID de período. Prueba:

Mes anterior ATD =

VAR PP = MAX(Tabla[PRD_ID]) + 1

DEVOLUCIÓN
CALCULAR ([ATD Revenue],

FILTER(ALL(Period), Tabla [PR_ID] = PP)

)

@PaulDBrown - No tenía idea de que las funciones de Inteligencia de Tiempo no se pudieran usar sin una tabla de Fecha. Ese es un gran consejo, gracias por compartir.

Traté de generar tu código. El único error de sintaxis que apareció fue el ")" que faltaba después de -1 antes de "RETURN". La única otra cosa que @Jdokken a tener en cuenta es que los ingresos mensuales ya existen, por lo que puede valer la pena ajustar el nombre a Ingresos mensuales $ o algo más.

@PaulDBrown probablemente sea un error de mi parte, sin embargo, por alguna razón, el código solo devolvía espacios en blanco tanto para los ingresos mensuales como para el valor del mes anterior. (Tema no relacionado, su imagen de perfil es absolutamente increíble! ¡Siempre aparece en la lista de los mejores autores de Kudoed y es el primero en llamar la atención! ¡Mate de oro!)

TheoC_0-1632429454207.png

Aquí hay una referencia de Microsoft sobre la necesidad de una tabla de fechas para las funciones de inteligencia de tiempo:

https://docs.microsoft.com/en-gb/learn/modules/dax-power-bi-time-intelligence/2-functions

¡Leyenda! Saludos para este mate.

Ok, he tenido la oportunidad de probar esto (el código necesita correcciones)

Primero cree la medida para el período anterior:

Prev Period =
VAR SelDate =
    MAX ( 'Table'[Period Start Date] )
VAR PP =
    IF (
        MONTH ( SelDate ) = 12,
        ( YEAR ( SelDate ) + 1 ) * 100 + 1,
        YEAR ( SelDate ) * 100
            + MONTH ( SelDate ) + 1
    )
RETURN
    PP

Y entonces

Previous month value =
VAR SelDate =
    MAX ( 'Table'[Period Start Date] )
RETURN
    CALCULATE (
        [ATD Revenue],
        FILTER (
            ALL ( 'Table' ),
            YEAR ( SelDate ) * 100
                + MONTH ( SelDate ) = [Prev Period]
        )
    )

y

Monthly revenue =
IF (
    ISBLANK ( [Previous month value] ),
    BLANK (),
    [ATD Revenue] - [Previous month value]
)

y obtienes:

Result.JPG

Si eso no funciona, ¿puede mostrar una representación de cómo se configura el modelo?

(¡gracias por sus amables palabras sobre mi elección de perfil!)

Jdokken_1-1632769100068.png Conseguí que la parte "PP" de su DAX funcionara (pero tuve que cambiarla a un -1 frente a un +1. Pero cuando intento devolver el PMV está en blanco.

-AnteriorMesto =
VAR SelDate = MAX(Period[Period Start Date])
VAR PP = SI(
MES(SelDate) = 12,
(AÑO(SelDate)+ 1) * 100 + 1,
AÑO(SelDate) * 100 + MES(SelDate)-1
)
VAR PMV = CALCULATE([ATD Revenue], FILTER(ALL(Period), YEAR(SelDate) * 100 + MONTH(SelDate) = PP))
DEVOLUCIÓN
PP

Trate de mantenerlos como medidas separadas

Syndicate_Admin
Administrator
Administrator

@Jdokken Recreé su tabla y luego creé la solución:

TheoC_0-1632355324825.png

Crea cuatro measuers simples:

TheoC_1-1632355371940.png

Pasos a seguir:

  • 1. Suma de ingresos ATD = SUMA ( Tabla 1[Ingresos ATD] )
  • 2. Suma Curmth = CALCULAR ( [1. Suma de los ingresos de ATD] , DATESMTD ( Tabla1 [Fecha de inicio del período] ) )
  • 3. Suma LstMth = CALCULAR ( [1. Suma ATD Ingresos] , DATEADD ( Tabla1[Fecha de inicio del período] , -1 , MES ) )
  • 4. Var CurMth v LstMth = IF ( [3. Suma lstMth] = 0 , 0 , [2. Suma Curmth] - [3. Suma LstMth] )

@TheoC Muchas gracias por tratar de resolver esto. Estoy trabajando con un CUBE y, por lo tanto, solo puedo crear medidas (sin columnas). Creo que puede haber algo más sucediendo que no puedo ver, ya que el mes anterior no se llenará por períodos aleatorios, incluso si no hay lagunas en las fechas. Ni siquiera estoy seguro de dónde buscar en los datos para averiguar por qué muestran espacios en blanco para períodos anteriores que claramente tienen una cantidad.

Jdokken_0-1632411805368.png

@Jdokken No he probado lo nuevo de Paul, pero voy a salir en una extremidad aquí y decir que probablemente esté en el dinero. Tenía curiosidad por saber si podían integrarse en variables para determinar los resultados, así que armé medidas muy básicas que parecían funcionar y no perder meses. No tengo su conjunto de datos completo, pero este es el resultado a continuación utilizando figuras inventadas:

TheoC_0-1632441973351.png

Las medidas son:

TheoC_1-1632441995732.png

TheoC_2-1632442009084.png

TheoC_3-1632442046371.png

Si prueba lo anterior en su conjunto de datos, sería increíble. Estoy realmente interesado en ver si funciona o si la Inteligencia de Tiempo dentro de variables también es limitada. Pero como se mencionó, mirando los resultados en la tabla de captura de pantalla, ¿parece funcionar bien?

Syndicate_Admin
Administrator
Administrator

Hola

¿Desea que el resultado sea una fórmula de columna calculada o como una medida? Comparta un archivo PBI para trabajar.

Necesito una medida ya que estoy conectado a un cubo. No he podido averiguar cómo compartir un archivo PBI.

Hola

Necesitará una tabla de calendario que debe tener una relación con la columna Fecha de inicio del período. Una vez que esté en su lugar, tendrá que arrastrar Fecha desde la tabla Calendario a su visual (en lugar de Fecha de inicio del período). Escriba estas medidas:

ATD rev = suma(Datos[Ingresos ATD])

Rev mensual = [ATD rev]-calculate([ATD rev],previousmonth(calendar[date]))

Espero que esto ayude.

@Jdokken Recreé su tabla y luego creé la solución:

TheoC_0-1632355324825.png

Crea cuatro measuers simples:

TheoC_1-1632355371940.png

Pasos a seguir:

  • 1. Suma de ingresos ATD = SUMA ( Tabla 1[Ingresos ATD] )
  • 2. Suma Curmth = CALCULAR ( [1. Suma de los ingresos de ATD] , DATESMTD ( Tabla1 [Fecha de inicio del período] ) )
  • 3. Suma LstMth = CALCULAR ( [1. Suma ATD Ingresos] , DATEADD ( Tabla1[Fecha de inicio del período] , -1 , MES ) )
  • 4. Var CurMth v LstMth = IF ( [3. Suma lstMth] = 0 , 0 , [2. Suma Curmth] - [3. Suma LstMth] )
Syndicate_Admin
Administrator
Administrator

Hola @Jdokken

Recomendaría crear un par de medidas como las siguientes:

Corriente Mth Rev $ = CALCULAR ( [ATD Revenue] , DATESMTD ( 'TableName'[Fecha de inicio del período] )

Anterior Mth Rev $ = CALCULAR ( [ATD Revenue] , DATESADD ( 'TableName'[Fecha de inicio del período] , -1 , MES )

Espero que esto ayude a aparearse.

Danos un cinco alto si lo hace.

Para obtener Ingresos Mensuales tengo que tomar cada período ATD Ingresos y restarlos del período anterior.

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.