Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Diferencias de marca en fila vs fila anterior (basadas en fecha, sitio y persona)

Hola

Tengo una mesa configurada como abajo.
Vinculado a una clave de sitio y a una dimensión de fecha.

Mi objetivo es idear una fórmula para la columna "Cambiar indicador" (actualmente una columna calculada), donde se mostrará un "1" si hay un cambio en cualquiera de los números para el SiteID +UniqueID2 en comparación con el mes anterior:

FechaSiteIDUniqueID2NombreNum1Num2Número 3Num4Número5Número6TotalIndicador de cambio
7/1/2020A3333Persona30.300.070.050.170.060.200.850
7/1/2020B3333Persona30.100.020.000.030.000.000.150
8/1/2020A3333Persona30.350.070.000.170.060.200.851
8/1/2020B3333Persona30.100.020.000.030.000.000.150
9/1/2020A3333Persona30.350.070.000.170.060.200.850
9/1/2020B3333Persona30.100.020.000.030.000.000.150
10/1/2020A3333Persona30.350.070.000.170.060.200.850
10/1/2020B3333Persona30.100.000.000.040.000.010.151
11/1/2020A3333Persona30.400.070.000.170.060.200.901
11/1/2020B3333Persona30.050.000.000.040.000.010.101


Empecé con sólo tratar de obtener la diferencia basada en "Num1" y una vez que tenía ese derecho, iba a trabajar a través de Num2, Num3, etc. Esto es lo que he intentado:
Indicador de cambio = if(isblank(sumx(Table,Filter(Table,Table[UniqueID2]=Earlier(Table[UniqueID2]) && Table[Num1]<>Earlier(Table[Num1])))),1,0)
Mensaje de error: varias columnas no se pueden convertir en valores escalares

Indicador de cambio = Tabla[Num1] - Búsqueda (Tabla[Num1],Tabla[UniqueID2],[UniqueID2],Tabla[SiteID],[SiteID],Tabla[Fecha], DateAdd(Tabla[Fecha],-1,month))
Esto no me da ningún mensaje de error para trabajar fuera de, todas las celdas de columna vuelven #ERROR.

Desafortunadamente no puedo proporcionar ningún archivo de datos, etc., que sé que es preferido.

Si alguien me señalara en una dirección general (enlaces, ejemplos, ideas), lo apreciaría.
Estaba leyendo sobre el uso de colums índice. ¿Eso ayudaría en absoluto? No pensé que los necesitaba ya que todo se basa en la columna Fecha.

TYIA.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Ninguna de las respuestas que recibí funcionó, pero esto es lo que descubrí:
Para comparar con el mes anterior - utilice Medir:
Indicador de cambio = if(min(Table[Date]<>Date(2020,07,01),
If(Calculate(sum(Table[Num1]),PreviousMonth(Table[Date])) <> sum(Table[num1],
1,0)


Después de que conseguí esta parte trabajando, me pidieron que comparara cada mes con el primer mes del año fiscal (7/1/2020) en lugar del mes anterior. La única manera de que esto funcionara era como una columna calculada:

Indicador de cambio =
Var _FirstDayFP = If(Table[FiscalPeriod]=2021, Fecha(2020,07,01),
If(Table[FiscalPeriod]=2022, Fecha(2021,07,01),0))
devolución
If(
Tabla[Num1]
<>
Calculate(sum(Tabla[Num1]),
filtro(Tabla,Tabla[Fecha]=_FirstDayFP),
filtro(Tabla,Tabla[UniqueID2]=Anterior(Tabla[UniqueID2])),
filtro(Tabla,Tabla[SiteID]=Anterior(Tabla[SiteID])),
filtro(Tabla,Tabla[FiscalPeriod]=Anterior(Tabla[FiscalPeriod]))),
1, 0)
Apreciar cualquier comentario / comentarios / pensamientos.
Espero que esto ayude a otra persona.

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Ninguna de las respuestas que recibí funcionó, pero esto es lo que descubrí:
Para comparar con el mes anterior - utilice Medir:
Indicador de cambio = if(min(Table[Date]<>Date(2020,07,01),
If(Calculate(sum(Table[Num1]),PreviousMonth(Table[Date])) <> sum(Table[num1],
1,0)


Después de que conseguí esta parte trabajando, me pidieron que comparara cada mes con el primer mes del año fiscal (7/1/2020) en lugar del mes anterior. La única manera de que esto funcionara era como una columna calculada:

Indicador de cambio =
Var _FirstDayFP = If(Table[FiscalPeriod]=2021, Fecha(2020,07,01),
If(Table[FiscalPeriod]=2022, Fecha(2021,07,01),0))
devolución
If(
Tabla[Num1]
<>
Calculate(sum(Tabla[Num1]),
filtro(Tabla,Tabla[Fecha]=_FirstDayFP),
filtro(Tabla,Tabla[UniqueID2]=Anterior(Tabla[UniqueID2])),
filtro(Tabla,Tabla[SiteID]=Anterior(Tabla[SiteID])),
filtro(Tabla,Tabla[FiscalPeriod]=Anterior(Tabla[FiscalPeriod]))),
1, 0)
Apreciar cualquier comentario / comentarios / pensamientos.
Espero que esto ayude a otra persona.

Syndicate_Admin
Administrator
Administrator

aquí está el código DAX completo

Change Indicator Calc = 
var num1 = 'Table'[Num1]
var num2 = 'Table'[Num2]
var num3 = 'Table'[Num3]
var num4 = 'Table'[Num4]
var num5 = 'Table'[Num5]
var num6 = 'Table'[Num6]
var dateT = 'Table'[Date]
var siteID = 'Table'[SiteID]
var filtertable = 
     FILTER(
        'Table';
        MONTH('Table'[Date]) = MONTH(dateT)-1
        && 'Table'[SiteID] = siteID
    )
var calcNum1 = 
    CALCULATE(
        COUNT('Table'[SiteID]);
        FILTER(
            filtertable;
            'Table'[Num1] <> num1
            || 'Table'[Num2] <> num2
            || 'Table'[Num3] <> num3
            || 'Table'[Num4] <> num4
            || 'Table'[Num5] <> num5
            || 'Table'[Num6] <> num6

        )
    )
var result = 
    SWITCH(
        TRUE();
        ISBLANK(calcNum1); 0;
        NOT(ISBLANK(calcNum1)); 1
    )
return result
Syndicate_Admin
Administrator
Administrator

Hola

¿Puedes vivir con esto? Puede descargar mi archivo PBI desde aquí.

Untitled.png

su archivo tiene num1, num2, num3 cada uno en su propia fila
mi tabla powerbi se configura exactamente como en la pregunta - num1, num2, num3 son columnas dentro de la misma fila, por lo que tengo que comparar fila a fila, no dentro de una columna.
¿Hay alguna manera de usar la indexación o alguna otra técnica para comparar fila a fila?

Hola

He aplicado transformaciones en sus datos mediante el Editor de consultas. Por favor, estudie mi solución cuidadosamente.

Syndicate_Admin
Administrator
Administrator

Change Indicator Calc = 
var num1 = 'Таблица (2)'[Num1]
var num2 = 'Таблица (2)'[Num2]
var dateT = 'Таблица (2)'[Date]
var siteID = 'Таблица (2)'[SiteID]
var calcNum1 = 
CALCULATE(
    SUM('Таблица (2)'[Num1]);
    FILTER(
        'Таблица (2)';
        'Таблица (2)'[Num1] <> num1 
        && MONTH('Таблица (2)'[Date]) = MONTH(dateT)-1
        && 'Таблица (2)'[SiteID] = siteID
    )
)
var p2 = 
SWITCH(
    TRUE();
    ISBLANK(calcNum1); 0;
    NOT(ISBLANK(calcNum1)); 1
)
return p2

Este es un ejemplo de trabajo con una sola columna "num1". Ahora su trabajo es agregar otras columnas al código para comprobar los valores

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors