Создание интервала дат из одиночной даты
Иногда у интервалов времени нет четко выраженного начала и конца. Они подразумеваются только одним полем — меткой времени изменения.
Это может быть как в таблице ниже, где для различных валют указаны курсы валют. Каждый курс валют указан в отдельной строке, каждый — с новым обменным курсом. Также в таблице есть строки с пустыми датами, соответствующими исходному обменному курсу, который существовал до первого изменения.
Currency | Change Date | 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 |
Эта таблица определяет набор неперекрывающихся интервалов, где дата начала называется «Change Date», а дата конца определяется началом следующего интервала. Но поскольку дата конца хранится в своем столбце неявно, необходимо создать такой столбец, чтобы новая таблица стала списком интервалов.
Выполните следующие действия.
- Создайте файл с именем Rates.xlsx, содержащий таблицу, показанную выше, и сохраните его готовым к загрузке.
- Определите временной диапазон, с которым вы хотели бы работать. Начало диапазона должно предшествовать первой дате в данных, а конец диапазона должен быть после последней даты.
- Загрузите исходные данные, но измените пустые даты на начало диапазона, определенного в предыдущем маркере. Дата изменения должна быть загружена как «From Date».
- Отсортируйте таблицу сначала по элементу Currency, а затем по элементу «From Date» в убывающем порядке, так чтобы последние даты оказались сверху.
- Еще раз пройдитесь по данным, где вычисляется элемент «To Date». Если валюта текущей записи отличается от валюты предыдущей, то это первая запись новой валюты (но ее последнего интервала), поэтому следует использовать конец диапазона, определенного в шаге 1. Если это та же валюта, возьмите элемент «From Date» из предыдущей записи, вычтите небольшое количество времени и используйте это значение в текущей записи как элемент «To Date».
Убедитесь, что даты в столбце Change Date указаны в локальном формате дат.
Указанный ниже скрипт обновит исходную таблицу следующим образом:
Currency | 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 |
Скрипт QlikView будет выглядеть так:
После запуска этого скрипта вы получите таблицу с правильным перечислением интервалов.
Впоследствии эту таблицу можно использовать при сравнении с существующей датой с помощью функции Intervalmatch.