Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
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:
Fecha | SiteID | UniqueID2 | Nombre | Num1 | Num2 | Número 3 | Num4 | Número5 | Número6 | Total | Indicador de cambio |
7/1/2020 | A | 3333 | Persona3 | 0.30 | 0.07 | 0.05 | 0.17 | 0.06 | 0.20 | 0.85 | 0 |
7/1/2020 | B | 3333 | Persona3 | 0.10 | 0.02 | 0.00 | 0.03 | 0.00 | 0.00 | 0.15 | 0 |
8/1/2020 | A | 3333 | Persona3 | 0.35 | 0.07 | 0.00 | 0.17 | 0.06 | 0.20 | 0.85 | 1 |
8/1/2020 | B | 3333 | Persona3 | 0.10 | 0.02 | 0.00 | 0.03 | 0.00 | 0.00 | 0.15 | 0 |
9/1/2020 | A | 3333 | Persona3 | 0.35 | 0.07 | 0.00 | 0.17 | 0.06 | 0.20 | 0.85 | 0 |
9/1/2020 | B | 3333 | Persona3 | 0.10 | 0.02 | 0.00 | 0.03 | 0.00 | 0.00 | 0.15 | 0 |
10/1/2020 | A | 3333 | Persona3 | 0.35 | 0.07 | 0.00 | 0.17 | 0.06 | 0.20 | 0.85 | 0 |
10/1/2020 | B | 3333 | Persona3 | 0.10 | 0.00 | 0.00 | 0.04 | 0.00 | 0.01 | 0.15 | 1 |
11/1/2020 | A | 3333 | Persona3 | 0.40 | 0.07 | 0.00 | 0.17 | 0.06 | 0.20 | 0.90 | 1 |
11/1/2020 | B | 3333 | Persona3 | 0.05 | 0.00 | 0.00 | 0.04 | 0.00 | 0.01 | 0.10 | 1 |
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.
Solved! Go to Solution.
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.
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.
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
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.
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