Creación de un intervalo de fechas a partir de una sola fecha
En ocasiones, los intervalos de tiempo no se almacenan de forma explícita con un principio y un final. En su lugar, están implícitos solo por un campo: la fecha/hora del cambio.
Podría ser como en la tabla a continuación, en la que hay tipos de cambio para múltiples divisas: Cada cambio de tasa de divisa está en su propia fila, cada una de ella con una nueva tasa de conversión. Asimismo, la tabla contiene filas con fechas vacías que corresponden a la tasa de conversión inicial, antes de que se hiciera el primer cambio.
= Moneda | Fecha de cambio | Rate |
---|---|---|
EUR | - | 8.59 |
EUR | 28/01/2013 | 8.69 |
EUR | 15/02/2013 | 8.45 |
USD | - | 6.50 |
USD | 10/01/2013 | 6.56 |
USD | 03/02/2013 | 6.30 |
Esta tabla define un conjunto de intervalos que no se solapan, donde los datos de inicio se denominan “Change Date” y la fecha de finalización se define por el inicio del siguiente intervalo. Pero, ya que la fecha de finalización no se almacena de forma explícita en su propia columna, necesitamos crear esta columna para que la nueva tabla se convierta en una lista de intervalos.
Haga lo siguiente:
- Cree un archivo denominado Rates.xlsx que contenga la tabla mostrada anteriormente y guárdelo listo para la carga.
- Determine con qué rango de fechas desea trabajar. El inicio del rango debe ser anterior a la primera fecha de los datos, y el final del rango debe ser posterior a la última.
- Cargue los datos de origen, pero cambie las fechas vacías en el principio del rango definido en el punto anterior. La fecha del cambio deber cargarse como “From Date”.
- Ordene la tabla primero de acuerdo con la divisa Currency, después ordénela de forma descendente según la fecha de inicio “From Date” para que tenga las últimas fechas en la parte superior.
- Dé una segunda pasada por los datos, donde se calcula la fecha de finalización: “To Date”. Si el registro actual tiene una divisa distinta a la del registro anterior, entonces es el primer registro de una nueva divisa (pero su último intervalo), por lo que debería usar el rango definido en el paso 1. Si es la misma moneda, deberá tomar el “From Date” del registro anterior, restar una pequeña cantidad de tiempo y usar este valor como “To Date” en el registro actual.
Asegúrese de que las fechas en la columna Change Date estén en el mismo formato que el formato de fecha local.
El script mostrado a continuación actualizará la tabla de origen de la siguiente forma:
= Moneda | Rate | FromDate | ToDate |
---|---|---|---|
EUR | 8.45 | 15/02/2013 | vEndTime |
EUR | 8.69 | 28/01/2013 | 14/02/2013 23:59:59 |
EUR | 8.59 | vBeginTime | 28/01/2013 23:59:59 |
USD | 6.30 | 03/02/2013 | vEndTime |
USD | 6.56 | 10/01/2013 | 2/02/2013 23:59:59 |
USD | 6.50 | vBeginTime | 9/01/2013 23:59:59 |
El aspecto del script QlikView será el siguiente:
Cuando se ejecute este script, tendrá una tabla que muestre los intervalos correctamente.
Esta tabla se puede usar posteriormente en una comparación con otra fecha usando los métodos Intervalmatch mencionados anteriormente.