Расчет времени (Qlikview & Qlik Sense)

Автор Ирина, 26 июня 2015, 02:21:50

« назад - далее »

Ирина

Добрый день!

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

Вопрос - как мне рассчитать в какие интервалы времени больше всего заказов. Или сделать интервалы часовые и посмотреть кол-во заказов каждый час в течение 24 часов?
Нужно ли включать это время в календарь и как?

kvv

#1
Добрый день!
Можно попробовать вот так:
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);

admin

Либо, если время задано текстом, просто выделить часовую составляющую 02:30 = 02.
Для облегчения восприятия можно задать интервалы, например 02:30 = "с 2 до 3" и используя таблицы сопоставления создать новое измерение.
Календарь в этом случае менять не требуется.

Ирина

Подскажите, пожалуйста, как можно выделить часовую составляющую (02:30 = 02)? С помощью какой функции?
И как задать интервалы непосредственно в QlikView "например 02:30 = "с 2 до 3"?

kvv

#4
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?

kvv

Есть возможность, привести пример ваших данных?

Ирина

Скрипт выглядит так:
LOAD Дата,
     [Дата заказа],
     [№ заказа],
     [Время оформления заказа],
     Left([Время оформления заказа],2) as [Час оформления заказа]


"Время оформления заказа" в эксель файле (я гружу все из экселя) в формате 19:45 (такой формат выгружается по умолчанию).

admin

Цитата: Ирина от 21 июля  2015, 11:41:43  
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
left(text())

Ирина

Так пробовала, но в скрипте он не хочет преобразовывать время в текст....

bibis

Ну что-то вроде
floor( frac([Время оформления заказа])*24)
тогда


Eva

Добрый день. Есть два поля, Время прихода сотрудника и время ухода на каждый день. Для того, чтобы посчитать время работы сотрудника я из времени уходы,вычитаю время прихода. В разрезе даты,отработанное время считается правильно, но суммарное время работы за все дни выводится неправильно: В формате num это число с дробной частью, например 21,246319444428, когда я беру функцию Time(21,246319444428), получается неправильное значение времени. Т.е время суммируется неправильно. Как можно избавиться от этой проблемы?

Eva

Вопрос Решен. Нужна функция Interval, а не  Time.

Иван

#14
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.

Яндекс.Метрика