Filtro de fecha actual de Power Query

Un usuario Pregunto ✅

Prometes_2

Hola,

Estoy aprendiendo Power Query y tengo un problema al tratar de usar un filtro simple. Tengo una tabla actual con una columna llamada ValidTo. En TSQL, podría filtrar esta columna para devolver solo los registros que eran> = GETDATE () (mayor o igual a la fecha en tiempo de ejecución). Estoy tratando de lograr el mismo resultado en Power Query pero no puedo encontrar qué función usar. Estaba revisando https://msdn.microsoft.com/en-us/library/mt296608.aspx pero no pude determinar qué función devuelve el valor de fecha y hora actual cuando se actualiza. Intenté TODAY(), GETDATE(), NOW(), todo sin suerte (ignora el anterior o igual). Esto parece algo simple de hacer, así que debo perderme dónde está la función.

¿Alguna ayuda? Gracias.

Filtro.png

KJinete

Power Query no utiliza fórmulas DAX. Tiene su propio idioma. TODAY() no es una fórmula válida en ese idioma.

Además, ese cuadro de diálogo solo permitirá valores de fecha literales, no fórmulas que evalúen una fecha. Pero puedes superar eso. Escriba alguna fecha en ese cuadro y presione Aceptar. No importa qué fecha ingrese porque solo la está usando para salir del cuadro de diálogo con una fórmula válida, después de lo cual la reemplazará. Después de presionar Aceptar, busque en la barra de fórmulas el paso que acaba de insertar. Deberías ver algo como:

= Table.SelectRows(#»Nombre del paso anterior», cada uno [VALIDTO] <= #fechahora(2016, 9, 12, 0, 0, 0))

Reemplace el final de esa fórmula con DateTime.LocalNow(), que es el equivalente de Power Query más cercano a TODAY()*.

= Table.SelectRows(#»Nombre del paso anterior», cada uno [pafo_EstimatedEndDate] <= FechaHora.LocalAhora())

…o simplemente puede ir al editor avanzado y escribir ese paso a mano si sabe cómo codificar a mano un nuevo paso.

*Técnicamente devuelve un valor de Fecha/Hora, donde HOY() devuelve un valor de Fecha. El literal más cercano a TODAY() es Date.From(DateTime.LocalNow()) que debe usar en lugar de DateTime.LocalNow() solo si la columna que está filtrando ya es un tipo de fecha simple en lugar de fecha/hora.

bisá

¿Qué pasa si necesito el dau antes de mi fecha actual? (ayer)

Traté de usar Fecha.Desde(FechaHora.LocalAhora()) -1 pero me sale el siguiente error:

Expression.Error: Não conseguimos aplicar o operador – aos tipos Date e Number.
Detalles:
Operador=-
Izquierda=29/01/2020
Derecha=1

¡Gracias!

KJinete

En respuesta a bisá

@bisah Date.From(Date.AddDays(DateTime.LocalNow(), -1)) debería hacerlo.

mesquita

En respuesta a KJinete

@KHorseman, ¿qué pasa si quiero tener el último domingo como fecha límite?

KJinete

Power Query no utiliza fórmulas DAX. Tiene su propio idioma. TODAY() no es una fórmula válida en ese idioma.

Además, ese cuadro de diálogo solo permitirá valores de fecha literales, no fórmulas que evalúen una fecha. Pero puedes superar eso. Escriba alguna fecha en ese cuadro y presione Aceptar. No importa qué fecha ingrese porque solo la está usando para salir del cuadro de diálogo con una fórmula válida, después de lo cual la reemplazará. Después de presionar Aceptar, busque en la barra de fórmulas el paso que acaba de insertar. Deberías ver algo como:

= Table.SelectRows(#»Nombre del paso anterior», cada uno [VALIDTO] <= #fechahora(2016, 9, 12, 0, 0, 0))

Reemplace el final de esa fórmula con DateTime.LocalNow(), que es el equivalente de Power Query más cercano a TODAY()*.

= Table.SelectRows(#»Nombre del paso anterior», cada uno [pafo_EstimatedEndDate] <= FechaHora.LocalAhora())

…o simplemente puede ir al editor avanzado y escribir ese paso a mano si sabe cómo codificar a mano un nuevo paso.

*Técnicamente devuelve un valor de Fecha/Hora, donde HOY() devuelve un valor de Fecha. El literal más cercano a TODAY() es Date.From(DateTime.LocalNow()) que debe usar en lugar de DateTime.LocalNow() solo si la columna que está filtrando ya es un tipo de fecha simple en lugar de fecha/hora.

Anónimo

En respuesta a KJinete

hola, estoy buscando obtener datos entre 91-180, 181-270, 271-365 días a partir de la fecha actual. ¿podría ayudar a hacerlo? buscando algo similar a la función «en los días anteriores» realmente agradecería la ayuda

Prometes_2

En respuesta a KJinete

¡Esto es exactamente lo que estaba buscando! Comprendí que usa el lenguaje M, pero no me di cuenta de que no podía escribir la fórmula en el cuadro de diálogo (TODAY() era solo un ejemplo, probé DateTime.LocalNow() pero tampoco funcionó). Voy a solicitar que se agregue esta funcionalidad, ya que parece más intuitivo y fácil de usar poder construirla sobre la marcha en lugar de la solución que ha proporcionado.

¡Muchas gracias por esta útil información!

En respuesta a Prometes_2

@Promethes_2

Puede agregar esta idea en el sitio de ideas. Y si la solución de KHorseman es exactamente lo que está buscando, puede marcar su respuesta como solución para cerrar este hilo.

Atentamente,

Herbert

Prometes_2

En respuesta a v-haibl-msft

¡Hecho y hecho! ¡Gracias de nuevo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *