Voy a mostrar dos métodos sobre cómo lograr esto. Este ejemplo provino de un miembro del , quien publicó una pregunta con una fecha y un número de noches de estadía. El miembro quería saber cómo crear nuevos registros para cada noche que una persona se hospedó en un motel usando Power Query.
Método 1: uso de la función Number.From en Power Query LuckyTemplates
Si está familiarizado con los cálculos de fechas en Excel, probablemente sabrá que cada día se puede traducir a un número entero, y también puede hacerlo aquí para obtener el equivalente numérico de cada fecha. Podemos usar la función Number.From .
Haré referencia a mi consulta de origen haciendo clic con el botón derecho en ella y seleccionando Referencia . Luego, a través de esa mini tabla, vaya a Agregar columna personalizada . Ahora ingresemos la función Number.From y apuntemos a la primera columna real que contiene nuestras fechas. No olvide el paréntesis de cierre y presione OK .
Así que aquí vemos una representación entera para el valor de la fecha. Y como es un número, podemos sumar y restar días. El objetivo es crear una fecha para cada noche consecutiva de estancia .
Si examinamos el primer registro, esa persona se quedó solo una noche, por lo que solo tenemos que devolver ese primer valor de fecha real. Luego, por segundo registro, esa persona se quedó dos noches consecutivas. Tenemos que devolver tanto un valor para el 13 como para el 14 de diciembre. Podemos lograr eso si sumamos el valor que está en la columna Noches al valor que tenemos en nuestra columna Personalizada , y luego restamos uno porque ya pasamos ese valor inicial.
Entonces, vayamos a la barra de fórmulas y ampliemos la lógica que hemos creado hasta ahora. Tenemos que usar ese valor numérico para la fecha dos veces, así que lo almacenaré en una variable. Agregaré la expresión let , luego agregaré un nombre para mi variable. Lo llamaré Primera Noche . Y luego, podemos agregar la cláusula in .
Las listas se pueden expandir a nuevas filas con un conjunto de inicializadores de lista, que son las llaves. Podemos crear una lista con fechas. Vamos a comenzar desde nuestra variable FirstNight hasta la variable FirstNight, más lo que sea en nuestro número de noches. Con un conjunto de corchetes, señale la columna Noches y luego reste uno . Presionaré OK y ahora tenemos una lista.
Cuando hago clic en el lateral del espacio en blanco, podemos ver el contenido de esa lista anidada abajo en el segundo panel de vista previa.
Ahora, con estas flechas hacia los lados, podemos expandir a nuevas filas . Luego, puedo establecer el tipo de datos en una fecha. Así que pueden ver que ya tenemos las fechas. Para el primer registro, devolvemos el mismo valor que está en el primer valor real. Para ese segundo registro, tenemos un registro para el 13 y otro para el 14 de diciembre.
Método 2: Uso de la lista de funciones M. Fechas en Power Query LuckyTemplates
Para el segundo método, podemos usar una función M llamada List.Dates . Haré referencia a mi consulta de origen y nuevamente, con ese ícono de mini tabla, agregaré una columna personalizada.
Agregaré esa función List.Date y luego la pondré entre paréntesis de apertura. Primero, quiere un valor de inicio como fecha y eso está en nuestra columna First Actual que contiene nuestros valores de fecha. Entonces, seleccionamos eso y luego ponemos una coma. A continuación, hay un conteo como un número, lo que significa cuántas fechas desea volver a esa lista. Y podemos ver que eso está en la columna Noches .
A continuación, está el paso como duración. Piensa en eso como un intervalo. Ahora estamos buscando noches consecutivas y queremos una lista continua de fechas. Un solo día tiene un equivalente numérico de uno, por lo que ingresaré la duración desde uno , luego un paréntesis de cierre y presionaré Aceptar.
Nuevamente, tenemos una lista anidada. Para el primer registro, tenemos un solo valor y para el segundo registro, tenemos el 13 y el 14 de diciembre.
A continuación, podemos nuevamente Expandir eso a Nuevas filas y configurar el tipo de datos apropiado hasta la fecha.
Ahora, quiero señalar que el primer perímetro en la función List.Dates requiere un tipo de datos de fecha. Si paso a mi paso Fuente y cambio este tipo de datos a Fecha/Hora, devuelve un error. Eso es porque no está pasando una fecha. Podemos solucionarlo fácilmente yendo a la barra de fórmulas y agregando Date.From .
Otra cosa que quiero señalar es que también puedes crear una lista alterna de fechas . Todo lo que necesita hacer es cambiar ese parámetro de paso final a 2, por ejemplo.
En este blog, he demostrado dos formas de crear nuevos registros basados en campos de fecha. La primera es generando una lista de fechas usando los inicializadores de lista y la segunda es usando la función List.Dates.
Espero que encuentres útil este tutorial. Puede ver el video tutorial completo a continuación y consultar los enlaces a continuación para obtener más contenido relacionado.