Добрый день!
У меня есть таблица с двумя полями:
1. Номер заказа
2. Время оформления (в формате чч:мин)
Вопрос - как мне рассчитать в какие интервалы времени больше всего заказов. Или сделать интервалы часовые и посмотреть кол-во заказов каждый час в течение 24 часов?
Нужно ли включать это время в календарь и как?
Добрый день!
Можно попробовать вот так:
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);
Либо, если время задано текстом, просто выделить часовую составляющую 02:30 = 02.
Для облегчения восприятия можно задать интервалы, например 02:30 = "с 2 до 3" и используя таблицы сопоставления создать новое измерение.
Календарь в этом случае менять не требуется.
Подскажите, пожалуйста, как можно выделить часовую составляющую (02:30 = 02)? С помощью какой функции?
И как задать интервалы непосредственно в QlikView "например 02:30 = "с 2 до 3"?
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.
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
Есть возможность, привести пример ваших данных?
Скрипт выглядит так:
LOAD Дата,
[Дата заказа],
[№ заказа],
[Время оформления заказа],
Left([Время оформления заказа],2) as [Час оформления заказа]
"Время оформления заказа" в эксель файле (я гружу все из экселя) в формате 19:45 (такой формат выгружается по умолчанию).
Цитата: Ирина от 21 июля 2015, 11:41:43
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
left(text())
Так пробовала, но в скрипте он не хочет преобразовывать время в текст....
Ну что-то вроде
floor( frac([Время оформления заказа])*24)
тогда
Схожая тема:
Конвертация числового формата даты (http://qlikview-forum.ru/qvf/index.php/topic,489.msg937.html#msg937)
Добрый день. Есть два поля, Время прихода сотрудника и время ухода на каждый день. Для того, чтобы посчитать время работы сотрудника я из времени уходы,вычитаю время прихода. В разрезе даты,отработанное время считается правильно, но суммарное время работы за все дни выводится неправильно: В формате num это число с дробной частью, например 21,246319444428, когда я беру функцию Time(21,246319444428), получается неправильное значение времени. Т.е время суммируется неправильно. Как можно избавиться от этой проблемы?
Вопрос Решен. Нужна функция Interval, а не Time.
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.