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.
Hola, chicos.
Hace casi 2 años hice esta pregunta aquí y recibí una solución brillante del colega @Zubair_Muhammad:
DIAS_ENTRE_ESTADOS =
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = EARLIER ( [ID] ) && [DATA] < EARLIER ( [DATA] ) ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
Estaba usando "Importar" y todo estaba bien.
Ahora estoy haciendo algo, pero por una conexión de "Consulta Directa" y estoy recibiendo un mensaje extraño:
"EARLIER / EARLIEST hace referencia a un contexto de fila anterior que no existe."
Estudié e hice investigación, pero no encontré información al respecto.
¿Alguien podría ayudarme?
saludos.
@EmanuelTavares , si está viendo por fecha, entonces intente como abajo. Todos con tabla de fechas
Día actual :SUM(Ventas[Importe de ventas])
Last Day Non Continous ? CALCULATE(sum('order'[Qty]),filter(all('Date'),'Date'[Date] ?MAXX(FILTER(all('Date'),'Date'[Date]<max('Date'[Date]]),Table['Date'])))
Día detrás de las Ventas: CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-1,Day))
Otra opción
Este día: CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Date]'max('Date'[Date])))
Last Day ? CALCULATE(sum('order'[Qty]), FILTER(ALL('Date'),'Date'[Date]'max('Date'[Date])-1))
Consulte mi blog para consultas directas: https://community.powerbi.com/t5/Community-Blog/Decoding-Direct-Query-in-Power-BI-Part-1-Time-Intell...
Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/
Vea si mi seminario web sobre Time Intelligence puede ayudar: https://community.powerbi.com/t5/Webinars-and-Video-Gallery/PowerBI-Time-Intelligence-Calendar-WTD-Y...
Aprecia tus Felicitaciones.
Hola @amitchandak .
Gracias por tu mensaje.
La situación es: hay un registro y este registro tiene cambios de estado.
Necesito calcular el tiempo entre esos cambios. Uno por uno.
saludos.
@EmanuelTavares EARLIER no es compatible con DirectQuery:
Por lo tanto, yo haría esto:
DIAS_ENTRE_ESTADOS =
VAR CurrentID = [ID]
VAR CurrentData = [DATA]
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = CurrentID && [DATA] < CurrentData ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
Hola, @Greg_Deckler ,
Muchas gracias por tu mensaje.
No funcionó. Recibí el mensaje: "No se puede determinar el valor de 'ID' que hace referencia a la línea "VAR CurrentID á [ID]".
Luego traté de poner el nombre de la tabla, HISTORICO[ID], pero no funcionó demasiado.
saludos.
@EmanuelTavares - ¿Es una columna o una medida? Estaba saliendo de tu fórmula. No puedo entender por qué sería capaz de utilizar las referencias de columna en la siguiente fórmula, pero no en mi fórmula a menos que esté tratando de crear esta columna en una tabla diferente? Difícil de decir sin haber visto realmente sus datos.
DIAS_ENTRE_ESTADOS de la
VAR Previous_Date
MINX (
TOPN (
1,
FILTRO ( HISTORICO, [ID] - EARLIER ( [ID] ) && [DATA] < EARLIER ( [DATA] ) ),
[DATA], DESC
),
[DATOS]
)
devolución
IF( Previous_Date && NOT [ESTADO] - "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
Hola, @Greg_Deckler .
Es una medida.
Lo estoy creando en la propia tabla HISTORICO.
Pero hice otra prueba: puse el "[" y Power BI Desktop me ofrece solo las medidas del modelo, no un campo.
Cuando pongo el nombre de la tabla, "HISTORICO", no ofrece un campo.
saludos
Emanuel
@EmanuelTavares - Correcto, en medidas al hacer referencia a una columna debe estar envuelto en un agregador como SUM, AVERAGE, MIN, MAX, etc.
Hola @Greg_Deckler
No lo entendí.
Dije que probé su primera solución poniendo en una columna y no funcionó porque MINX no está permitido en consulta directa.
DIAS_ENTRE_ESTADOS =
VAR CurrentID = [ID]
VAR CurrentData = [DATA]
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = CurrentID && [DATA] < CurrentData ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
saludos
MINX es compatible con medidas. https://docs.microsoft.com/en-us/analysis-services/tabular-models/dax-formula-compatibility-in-direc...
Lo que estoy diciendo, es si esta es una medida que necesita para ajustar las agregaciones de columnas en un agregador:
DIAS_ENTRE_ESTADOS =
VAR CurrentID = MAX([ID])
VAR CurrentData = MAX([DATA])
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = CurrentID && [DATA] < CurrentData ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
Lo sabía, pero dije que en mi modelo original había una columna, no una medida (fue mi culpa).
Pero como medida, no funcionó demasiado, como dije antes.
Por lo tanto, el problema persiste.
saludos.
Hola @Greg_Deckler
No lo entendí.
Dije que probé su primera solución poniendo en una columna y no funcionó porque MINX no está permitido en consulta directa.
DIAS_ENTRE_ESTADOS =
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = EARLIER ( [ID] ) && [DATA] < EARLIER ( [DATA] ) ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
saludos
@EmanuelTavares Bueno, si es una medida, sólo haz esto:
DIAS_ENTRE_ESTADOS =
VAR CurrentID = MAX([ID])
VAR CurrentData = MAX([DATA])
VAR Previous_Date =
MINX (
TOPN (
1,
FILTER ( HISTORICO, [ID] = CurrentID && [DATA] < CurrentData ),
[DATA], DESC
),
[DATA]
)
RETURN
IF( Previous_Date && NOT [ESTADO] = "01", DATEDIFF ( Previous_Date, [DATA], DAY), 0)
Hola @Greg_Deckler!
Muchas gracias por su ayuda.
Información:
1. Intenté usar esta solución, pero devuelve un error en la última línea:
"No se puede determinar el valor de 'DATA'. O bien la columna no existe o no hay ninguna fila actual para esta columna."
2. Revisé de nuevo el modelo antiguo, basado en "Importar", y me di cuenta de que no creé una columna, sino una medida en lugar de. Lo siento.
Luego, probé su primera solución de nuevo en una columna, pero recibí un mensaje que decía que no puedo usar MINX en la consulta directa.
Estoy investigando y empiezo a creer que no puedo hacerlo con DAX en Direct Query.
Por otro lado, he leído que EARLY sólo se puede utilizar en medidas.
Complicado.
@EmanuelTavares , ¿Puede compartir datos de ejemplo y salida de ejemplo en un formato de tabla?
Intentaré cargar en SQL Server e intentar en modo de consulta directa.
Pensar si Rank puede ayudarnos a obtener el último registro
Hola @amitchandak
Gracias por tu ayuda.
Siga un enlace a una muestra.
Si quieres echarle un vistazo también, @Greg_Deckler, por favor sé mi suposición.
Por razones de seguridad, tendré que eliminarlo en 24 horas.
https://1drv.ms/u/s!Alj4o2gZuCvog9sxJwEZ5g56FeDmyg?e=U25u2z
saludos.
@Anonymous , he descargado. Por si acaso no volví con la solución. Marcarme de nuevo en la actualización del tema
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |