Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Ирина от 26 июня 2015, 02:21:50

Название: Расчет времени (Qlikview & Qlik Sense)
Отправлено: Ирина от 26 июня 2015, 02:21:50
Добрый день!

У меня есть таблица с двумя полями:
1. Номер заказа
2. Время оформления (в формате чч:мин)

Вопрос - как мне рассчитать в какие интервалы времени больше всего заказов. Или сделать интервалы часовые и посмотреть кол-во заказов каждый час в течение 24 часов?
Нужно ли включать это время в календарь и как?
Название: Re: Расчет времени
Отправлено: kvv от 30 июня 2015, 09:54:09
Добрый день!
Можно попробовать вот так:
nn_01:
Load * Inline [
nn_01, date_01
01, 00:01
02, 00:30
03, 00:40
04, 11:05
05, 11:10
06, 12:12
07, 14:10
08, 18:20
09, 18:20
10, 19:45
11, 19:55
12, 20:50
];

nn_03:
Load hour(date_01) as date_03,
count(hour(date_01)) as date_03_count
Resident nn_01
Group By hour(date_01);
Название: Re: Расчет времени
Отправлено: admin от 01 июля 2015, 10:15:25
Либо, если время задано текстом, просто выделить часовую составляющую 02:30 = 02.
Для облегчения восприятия можно задать интервалы, например 02:30 = "с 2 до 3" и используя таблицы сопоставления создать новое измерение.
Календарь в этом случае менять не требуется.
Название: Re: Расчет времени
Отправлено: Ирина от 20 июля 2015, 01:44:28
Подскажите, пожалуйста, как можно выделить часовую составляющую (02:30 = 02)? С помощью какой функции?
И как задать интервалы непосредственно в QlikView "например 02:30 = "с 2 до 3"?
Название: Re: Расчет времени
Отправлено: kvv от 20 июля 2015, 05:35:29
1. Выделить часовую составляющую (02:30 = 02:
left(date_01, 2) - left(02:30, 2)


2. Задать интервалы непосредственно в QlikView "например 02:30 = "с 2 до 3":
2.1 if (00, 'c 0 до 1', if (01, 'с 1 до 2', if (02, 'с 2 до 3')))
2.2 С помощью функции ApplyMap.


Название: Re: Расчет времени
Отправлено: Ирина от 21 июля 2015, 11:41:43
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
Название: Re: Расчет времени
Отправлено: kvv от 21 июля 2015, 11:51:21
Есть возможность, привести пример ваших данных?
Название: Re: Расчет времени
Отправлено: Ирина от 21 июля 2015, 11:57:23
Скрипт выглядит так:
LOAD Дата,
     [Дата заказа],
     [№ заказа],
     [Время оформления заказа],
     Left([Время оформления заказа],2) as [Час оформления заказа]


"Время оформления заказа" в эксель файле (я гружу все из экселя) в формате 19:45 (такой формат выгружается по умолчанию).
Название: Re: Расчет времени
Отправлено: admin от 21 июля 2015, 12:43:14
Цитата: Ирина от 21 июля  2015, 11:41:43  
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
left(text())
Название: Re: Расчет времени
Отправлено: Ирина от 21 июля 2015, 01:36:05
Так пробовала, но в скрипте он не хочет преобразовывать время в текст....
Название: Re: Расчет времени
Отправлено: bibis от 21 июля 2015, 04:23:38
Ну что-то вроде
floor( frac([Время оформления заказа])*24)
тогда
Название: Re: Расчет времени (Qlikview & Qlik Sense)
Отправлено: admin от 22 июля 2015, 09:39:31
Схожая тема:
Конвертация числового формата даты (http://qlikview-forum.ru/qvf/index.php/topic,489.msg937.html#msg937)
Название: Re: Расчет времени (Qlikview & Qlik Sense)
Отправлено: Eva от 15 декабря 2015, 04:04:22
Добрый день. Есть два поля, Время прихода сотрудника и время ухода на каждый день. Для того, чтобы посчитать время работы сотрудника я из времени уходы,вычитаю время прихода. В разрезе даты,отработанное время считается правильно, но суммарное время работы за все дни выводится неправильно: В формате num это число с дробной частью, например 21,246319444428, когда я беру функцию Time(21,246319444428), получается неправильное значение времени. Т.е время суммируется неправильно. Как можно избавиться от этой проблемы?
Название: Re: Расчет времени (Qlikview & Qlik Sense)
Отправлено: Eva от 15 декабря 2015, 04:11:23
Вопрос Решен. Нужна функция Interval, а не  Time.
Название: Re: Расчет времени (Qlikview & Qlik Sense)
Отправлено: Иван от 16 декабря 2015, 08:03:52
Eva, доброе утро!

Можно сделать так:
1. У вас есть время оформления заказа (пусть это будет поле [Время оформления]).
2. Создаете таблицу с помощью Inline (любые периоды, которые вас интересуют).
3. Используете прием Intervalmatch функцию.

TimeInterval:
LOAD * Inline [
START,END,NameTimePeriod
00:00,10:00,с 00-00 по 10-00
10:00,12:00,с 10-00 по 12-00
12:00,14:00,с 12-00 по 14-00
14:00,16:00,с 14-00 по 16-00
16:00,18:00,с 16-00 по 18-00
18:00,20:00,с 18-00 по 20-00
20:00,22:00,с 20-00 по 22-00
22:00,24:00,с 22-00 по 24-00
];

IntervalMatchTbl:
Intervalmatch([Время оформления])
load START, END
Resident TimeInterval;


Ну а дальше Вы можете для каждого NameTimePeriod рассчитать любые показатели непосредственно в графических объектах приложения QlikView.