Содержание урока по Qlik Sense
Хранение форматов TimeStamp и Time в Qlik Sense
Использование формата Time и Timestamp в задачах бизнес-аналитики встречается не так часто, как задачи с датами. Однако, если такая задача появляется, то появляется очень много вопросов как сделать то или иное преобразование.
В предыдущей главе учебника я описывал как хранится формат timestamp (из чего он состоит). В этом разделе я опишу дополнительно с помощью каких функций можно работать со значениями Time и Timestamp.
Итак, как мы выяснили раньше Timestamp – это дробное число, в котором целая часть – это дата, а дробная часть – это время (т.е. time). Все число – это дата время или timestamp.
Рассмотрим результат работы функции Now() и функций, которые изменяют либо формат отображения данных, либо само число:

Now() | 16.06.2019 15:03:57 |
Num(Now()) | 43632,627743056 |
Time(Now()) | 15:03:57 |
Num(Time(Now())) | 43632,627743056 |
Time#(Now(),’DD.MM.YYYY h:mm:ss[.fff]’) | 16.06.2019 15:03:57 |
Num(Time#(Now(),’DD.MM.YYYY h:mm:ss[.fff]’)) | 0,627743056 |
Frac(Now()) | 0,627743056 |
Time(Frac(Now())) | 15:03:57 |
Изменение в дробной части влияет на время, изменение в целой части влияет на дату. Если Вам необходимо придумать модель Qlik Sense, в которой будет хитрым образом обрабатываться время – этих знаний будет достаточно для того, чтобы “изобрести” нужный Вам алгоритм.
Топ функций в Qlik Sense для работы со временем
1. Now() – возвращает текущую Дату и текущее время (отображается в соответствии с системной переменной SET TimestampFormat=’DD.MM.YYYY h:mm:ss[.fff]’; см. вкладку Main в скрипте).
2. Time() и Time#() – аналог Date() и Date#(), только для времени). Time влияет только на отображение данных в модели, т.е. влияет только на формат отображения числа. Time# – сообщает Qlik в каком формате данные поступают на вход функции, результатом будет дробная часть (если формат определен корректно).
3. Frac() и Num() – Frac() оставляет от числа с дробной частью только дробную часть, т.е. остается часть со временем. Num() меняет формат отображения дата время на числовой формат (см. пример вверху).
4. ReloadTime()
5. MakeTime()
6. ConvertToLocalTime()
7. FileTime() – с помощью этой функции в скрипте можно получить дату и время обновления файла. Пример получения даты и времени обновления файла qvd:
Let vFileDateTimeModified = FileTime('C:\QlikSenseProject\SourceData\QVD\РегистрПродаж.qvd');
8. Timestamp() и Timestamp#()
9. Interval()
Примеры (кейсы) по работе с форматом Time & TimeStamp
Qlik Sense & MakeTime: Минута – Час в числовом выражении
MakeTime(0,1) = 0:01:00 //1 минута Frac(MakeTime(0,1)) = 0,000694444 //1 минута в числовом выражении Frac(MakeTime(0,1))*60 = 0,041666667 //1 час в числовом выражении Frac(MakeTime(0,1))*60*24 = 1 //1 день = 1 в числовом выражении
Округление дата + время = TimeStamp до минуты
Now() Num(Now()) TimeStamp(Num(time(frac(floor(Now(),1/1440)),'hh:mm'))+floor(Now())) Num(time(frac(floor(Now(),1/1440)),'hh:mm'))+floor(Now())
Результат работы формул: