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
Anonymous
Not applicable

Diferencia entre dos fechas en dos líneas mediante Direct Query

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.

16 REPLIES 16
amitchandak
Super User
Super User

@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.

Anonymous
Not applicable

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.

Greg_Deckler
Super User
Super User

@EmanuelTavares EARLIER no es compatible con DirectQuery:

https://docs.microsoft.com/en-us/analysis-services/tabular-models/dax-formula-compatibility-in-direc...

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)

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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)


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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.

Annotation 2020-05-28 183816.png

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.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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)

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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.

Anonymous
Not applicable

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)

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

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

Anonymous
Not applicable

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

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.