Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Кто может помочь? Проблема такая: есть таблица с данными прохода сотрудников на проход. Данные: личный номер сотрудника, время прохода турникета, направление (вошел или вышёл). В день 10-15 тысяч записей. Задача: надо сгрупировать по номеру сотрудника, по отсортировать времени и к каждой записи даты и времени входа приписать следующую запись выхода, и исходя из этих двух данных приписать время пребывания на объекте.
Благодарю за внимание!
Кто может помочь? Проблема такая: есть таблица с данными прохода сотрудников на проход. Данные: личный номер сотрудника, время прохода турникета, направление (вошел или вышёл). В день 10-15 тысяч записей. Задача: надо сгрупировать по номеру сотрудника, по отсортировать времени и к каждой записи даты и времени входа приписать следующую запись выхода , и исходя из этих двух данных приписать время пребывания на объекте .
На работаю
Благодарю за информацию Внимания!
Эту задачу можно решить при помощи сортировки данных в скрипте загрузки. Конечный код конечно будет зависеть от того, есть ли в данных "проблемные места" (например, когда человек зашел в обход системы учета, а вышел через нее, и у него подряд 2 события выхода стоят). Но в общем случае я решал бы ее так:
dataTmp1: //Загружаем исходные данные
LOAD
RowNo() as PassID, //Проставляем нумерацию для уникального определения каждой строки
PERSON_ID,
BORDER_CROSS_DATE as CrossTS,
date(floor(BORDER_CROSS_DATE)) as Day,
DIRECTION_NAME
FROM [lib://Demo (bbsales-u122707_qlik.acc)/In-Out.csv]
(txt, codepage is 1251, embedded labels, delimiter is ',', msq);
dataTmp2:
NoConcatenate
load
*
Resident dataTmp1 order by PERSON_ID,CrossTS asc; //Сортируем данные по сотруднику, а потом по дате прохода, по возрастанию
dataTmp3:
NoConcatenate
load *,
if(PERSON_ID<>Previous(PERSON_ID) and DIRECTION_NAME='out',1,0) as delMark //Отмечаем первую запись по сотруднику, если она имеет направление out, чтобы всегда начинать со входа
Resident dataTmp2;
data:
NoConcatenate
load *,
if(PERSON_ID=Previous(PERSON_ID) and DIRECTION_NAME='out',alt(-(Previous(CrossTS)-CrossTS),0),0) as [InTime] //Для каждой строчки выхода считаем разность от ее времени до времени предыдущей записи, ставим знак минус, потому что время выхода больше, чем время входа, чтобы в итоге получить положительное значение длительности.
Resident dataTmp3 where delMark=0; //Обрезаем первую запись по сотруднику, если она имеет направление out, чтобы всегда начинать со входа
//Дропаем временные таблицы
drop Tables dataTmp1, dataTmp2, dataTmp3;
Вот итоги:
please post some sample data
Preparing examples for Upload - Reduction and Data Scrambling
PERSON_ID | BORDER_CROSS_DATE | DIRECTION_NAME |
107532793 | 28.01.2013 18:04:16 | out |
107532793 | 02.02.2013 5:38:01 | in |
107532793 | 02.02.2013 7:00:37 | out |
107532793 | 19.02.2013 16:18:59 | out |
107532793 | 21.02.2013 6:27:01 | in |
107444721 | 11.04.2013 6:05:03 | in |
107444721 | 11.04.2013 6:28:40 | out |
107444721 | 12.04.2013 6:01:08 | in |
107444721 | 12.04.2013 6:26:07 | out |
107444721 | 16.04.2013 5:59:06 | in |
107444721 | 16.04.2013 6:47:08 | out |
107444721 | 16.04.2013 13:06:36 | in |
107444721 | 16.04.2013 13:24:00 | out |
107444721 | 19.04.2013 6:03:34 | in |
107444721 | 19.04.2013 6:17:44 | out |
107532793 | 20.04.2013 5:55:01 | in |
107444721 | 20.04.2013 6:00:19 | in |
107444721 | 20.04.2013 6:35:42 | out |
107532793 | 20.04.2013 7:07:25 | out |
107532793 | 21.04.2013 5:59:02 | in |
107444721 | 21.04.2013 6:05:47 | in |
107444721 | 21.04.2013 6:36:35 | out |
107444721 | 22.04.2013 5:11:33 | in |
107444721 | 22.04.2013 5:57:40 | out |
107444721 | 23.04.2013 5:02:42 | in |
107444721 | 23.04.2013 5:38:39 | out |
107444721 | 24.04.2013 5:03:16 | in |
107444721 | 24.04.2013 5:40:36 | out |
107444721 | 25.04.2013 5:10:24 | in |
107444721 | 25.04.2013 5:43:41 | out |
107444721 | 26.04.2013 5:02:16 | in |
107444721 | 26.04.2013 6:07:21 | out |
107444721 | 28.04.2013 5:25:05 | in |
107444721 | 28.04.2013 5:53:41 | out |
107444721 | 29.04.2013 15:38:03 | in |
107444721 | 29.04.2013 22:39:44 | out |
107444721 | 30.04.2013 5:05:06 | in |
107444721 | 30.04.2013 5:21:42 | out |
107444721 | 01.05.2013 5:00:47 | in |
107444721 | 01.05.2013 5:32:15 | out |
107444721 | 01.05.2013 16:05:10 | in |
107444721 | 01.05.2013 23:51:30 | out |
107444721 | 02.05.2013 5:01:06 | in |
107444721 | 02.05.2013 5:32:49 | out |
107444721 | 03.05.2013 5:06:56 | in |
107444721 | 03.05.2013 5:22:45 | out |
107444721 | 05.05.2013 5:05:19 | in |
107444721 | 05.05.2013 5:23:09 | out |
107444721 | 06.05.2013 4:59:38 | in |
107444721 | 06.05.2013 5:17:32 | out |
107444721 | 07.05.2013 5:13:14 | in |
107444721 | 07.05.2013 5:25:32 | out |
107444721 | 08.05.2013 5:03:29 | in |
107444721 | 08.05.2013 5:15:55 | out |
107444721 | 09.05.2013 5:03:38 | in |
107444721 | 09.05.2013 5:17:17 | out |
107444721 | 10.05.2013 5:17:58 | in |
107444721 | 10.05.2013 5:46:41 | out |
107444721 | 11.05.2013 4:43:13 | in |
107444721 | 11.05.2013 6:10:28 | out |
107444721 | 12.05.2013 4:47:41 | in |
107444721 | 12.05.2013 5:39:35 | out |
107444721 | 13.05.2013 4:47:47 | in |
107444721 | 13.05.2013 5:29:30 | out |
107444721 | 14.05.2013 5:03:01 | in |
107444721 | 14.05.2013 5:14:36 | out |
107444721 | 15.05.2013 5:02:34 | in |
107444721 | 15.05.2013 5:33:25 | out |
107444721 | 17.05.2013 5:02:39 | in |
107444721 | 17.05.2013 5:41:43 | out |
107444721 | 18.05.2013 4:55:42 | in |
107444721 | 18.05.2013 5:27:18 | out |
107444721 | 19.05.2013 4:52:22 | in |
107444721 | 19.05.2013 5:53:32 | out |
107444721 | 20.05.2013 4:42:59 | in |
107444721 | 20.05.2013 5:44:00 | out |
107444721 | 21.05.2013 4:42:02 | in |
107444721 | 21.05.2013 5:49:05 | out |
107444721 | 22.05.2013 4:43:18 | in |
107444721 | 22.05.2013 5:51:03 | out |
107444721 | 22.05.2013 20:02:33 | in |
107444721 | 22.05.2013 22:41:46 | out |
107444721 | 23.05.2013 4:38:43 | in |
107444721 | 23.05.2013 5:47:52 | out |
107444721 | 24.05.2013 5:00:29 | in |
107444721 | 24.05.2013 5:54:32 | out |
107444721 | 25.05.2013 5:01:22 | in |
107444721 | 25.05.2013 5:48:05 | out |
107444721 | 26.05.2013 4:56:17 | in |
107444721 | 26.05.2013 5:57:33 | out |
107444721 | 27.05.2013 5:02:00 | in |
107444721 | 27.05.2013 5:38:06 | out |
107444721 | 27.05.2013 20:50:26 | in |
107444721 | 27.05.2013 22:45:31 | out |
107444721 | 28.05.2013 5:01:40 | in |
107444721 | 28.05.2013 5:38:13 | out |
107444721 | 29.05.2013 4:59:58 | in |
107444721 | 29.05.2013 5:44:09 | out |
107444721 | 31.05.2013 5:00:53 | in |
107444721 | 31.05.2013 5:55:15 | out |
107444721 | 02.06.2013 4:56:53 | in |
107444721 | 02.06.2013 5:48:17 | out |
107444721 | 03.06.2013 5:15:21 | in |
107444721 | 03.06.2013 5:48:06 | out |
107444721 | 04.06.2013 4:58:30 | in |
107444721 | 04.06.2013 5:54:46 | out |
107444721 | 06.06.2013 5:05:19 | in |
107444721 | 06.06.2013 6:05:19 | out |
107444721 | 09.06.2013 5:11:00 | in |
107444721 | 09.06.2013 6:16:50 | out |
107444721 | 10.06.2013 5:03:04 | in |
107444721 | 10.06.2013 5:33:41 | out |
107444721 | 11.06.2013 5:01:18 | in |
107444721 | 11.06.2013 5:37:43 | out |
107444721 | 11.06.2013 20:09:14 | in |
107444721 | 11.06.2013 22:30:03 | out |
107444721 | 12.06.2013 5:09:05 | in |
107444721 | 12.06.2013 5:37:49 | out |
107444721 | 13.06.2013 4:33:26 | in |
107444721 | 13.06.2013 5:40:57 | out |
107444721 | 14.06.2013 4:30:58 | in |
107444721 | 14.06.2013 5:48:22 | out |
107444721 | 15.06.2013 4:35:47 | in |
107444721 | 15.06.2013 5:46:37 | out |
107444721 | 15.06.2013 15:42:28 | in |
107444721 | 16.06.2013 6:10:13 | out |
107444721 | 17.06.2013 4:26:57 | in |
107444721 | 17.06.2013 5:34:33 | out |
107444721 | 18.06.2013 4:32:10 | in |
107444721 | 18.06.2013 5:46:36 | out |
107444721 | 20.06.2013 4:42:45 | in |
107444721 | 20.06.2013 6:05:26 | out |
107444721 | 20.06.2013 13:48:35 | in |
107444721 | 20.06.2013 22:39:10 | out |
107444721 | 21.06.2013 4:41:02 | in |
107444721 | 21.06.2013 6:27:30 | out |
107444721 | 21.06.2013 15:48:36 | in |
107444721 | 22.06.2013 5:42:44 | out |
107444721 | 23.06.2013 4:55:02 | in |
107444721 | 23.06.2013 5:42:54 | out |
107444721 | 24.06.2013 4:30:19 | in |
107444721 | 24.06.2013 5:59:15 | out |
107444721 | 24.06.2013 16:10:28 | in |
107444721 | 25.06.2013 5:16:34 | out |
107444721 | 26.06.2013 4:34:53 | in |
107444721 | 26.06.2013 5:46:49 | out |
107444721 | 27.06.2013 4:41:13 | in |
107444721 | 27.06.2013 5:43:51 | out |
107444721 | 28.06.2013 4:39:07 | in |
107444721 | 28.06.2013 5:37:27 | out |
107444721 | 28.06.2013 18:28:27 | in |
107444721 | 29.06.2013 5:42:44 | out |
107444721 | 30.06.2013 4:46:40 | in |
107444721 | 30.06.2013 5:33:44 | out |
107444721 | 01.07.2013 4:54:07 | in |
107444721 | 01.07.2013 5:45:30 | out |
107444721 | 02.07.2013 4:50:21 | in |
107444721 | 02.07.2013 5:43:42 | out |
107532793 | 02.07.2013 17:22:31 | out |
107444721 | 03.07.2013 4:41:51 | in |
107444721 | 03.07.2013 5:55:54 | out |
107444721 | 04.07.2013 4:41:44 | in |
107444721 | 04.07.2013 5:39:29 | out |
107444721 | 05.07.2013 4:40:08 | in |
107444721 | 05.07.2013 5:27:53 | out |
107444721 | 05.07.2013 12:45:22 | in |
107444721 | 06.07.2013 1:38:57 | out |
107444721 | 07.07.2013 4:46:09 | in |
107444721 | 07.07.2013 5:22:17 | out |
107532793 | 08.07.2013 4:31:22 | in |
107444721 | 08.07.2013 4:52:20 | in |
107532793 | 08.07.2013 5:28:03 | out |
107444721 | 08.07.2013 5:46:58 | out |
107532793 | 09.07.2013 4:33:10 | in |
107444721 | 09.07.2013 4:43:54 | in |
107532793 | 09.07.2013 5:09:51 | out |
107444721 | 09.07.2013 5:36:41 | out |
107444721 | 10.07.2013 4:40:11 | in |
107532793 | 10.07.2013 4:42:12 | in |
107532793 | 10.07.2013 5:46:40 | out |
107444721 | 10.07.2013 5:47:30 | out |
107532793 | 10.07.2013 22:59:05 | in |
107444721 | 11.07.2013 1:48:04 | in |
107532793 | 11.07.2013 14:14:31 | out |
107532793 | 12.07.2013 4:41:22 | in |
107532793 | 12.07.2013 5:48:52 | out |
107532793 | 13.07.2013 4:43:59 | in |
107444721 | 13.07.2013 5:31:14 | out |
107532793 | 13.07.2013 5:35:12 | out |
107532793 | 14.07.2013 4:22:55 | in |
107444721 | 14.07.2013 4:52:36 | in |
107532793 | 14.07.2013 5:50:31 | out |
107444721 | 14.07.2013 6:11:33 | out |
107532793 | 15.07.2013 4:29:19 | in |
107444721 | 15.07.2013 4:59:11 | in |
107444721 | 15.07.2013 5:26:28 | out |
107532793 | 15.07.2013 5:33:47 | out |
107444721 | 15.07.2013 14:41:22 | in |
107532793 | 16.07.2013 4:31:37 | in |
107532793 | 16.07.2013 5:44:58 | out |
107444721 | 16.07.2013 5:50:51 | out |
107532793 | 17.07.2013 4:38:04 | in |
107444721 | 17.07.2013 4:42:46 | in |
107444721 | 17.07.2013 5:22:00 | out |
107532793 | 17.07.2013 5:43:19 | out |
107532793 | 18.07.2013 4:28:41 | in |
107444721 | 18.07.2013 4:58:34 | in |
107444721 | 18.07.2013 5:37:05 | out |
107532793 | 18.07.2013 5:40:34 | out |
107532793 | 19.07.2013 4:38:38 | in |
107444721 | 19.07.2013 4:51:51 | in |
107532793 | 19.07.2013 5:34:18 | out |
107444721 | 19.07.2013 5:47:37 | out |
107532793 | 20.07.2013 4:33:30 | in |
107444721 | 20.07.2013 4:56:54 | in |
107444721 | 20.07.2013 5:28:30 | out |
107532793 | 20.07.2013 5:35:51 | out |
107444721 | 21.07.2013 5:00:03 | in |
107444721 | 21.07.2013 5:31:37 | out |
107532793 | 22.07.2013 4:32:36 | in |
107444721 | 22.07.2013 5:03:52 | in |
107532793 | 22.07.2013 5:35:06 | out |
107444721 | 22.07.2013 5:49:50 | out |
107532793 | 23.07.2013 4:36:06 | in |
107444721 | 23.07.2013 4:52:05 | in |
107532793 | 23.07.2013 5:05:47 | out |
107444721 | 23.07.2013 5:32:30 | out |
107444721 | 24.07.2013 4:42:09 | in |
107532793 | 24.07.2013 4:48:36 | in |
107444721 | 24.07.2013 5:33:56 | out |
107532793 | 24.07.2013 5:44:53 | out |
107532793 | 25.07.2013 4:31:04 | in |
107444721 | 25.07.2013 4:32:47 | in |
107532793 | 25.07.2013 5:37:09 | out |
107444721 | 25.07.2013 5:42:15 | out |
107532793 | 26.07.2013 4:37:24 | in |
107444721 | 26.07.2013 4:45:37 | in |
107444721 | 26.07.2013 5:41:56 | out |
107532793 | 26.07.2013 5:47:09 | out |
107444721 | 26.07.2013 16:18:31 | in |
107444721 | 27.07.2013 5:39:35 | out |
107532793 | 28.07.2013 4:31:48 | in |
107444721 | 28.07.2013 4:48:11 | in |
107532793 | 28.07.2013 5:12:36 | out |
107444721 | 28.07.2013 5:25:25 | out |
107532793 | 29.07.2013 4:31:23 | in |
107444721 | 29.07.2013 4:50:31 | in |
107532793 | 29.07.2013 5:20:44 | out |
107444721 | 29.07.2013 5:46:07 | out |
107444721 | 30.07.2013 4:41:10 | in |
107444721 | 30.07.2013 5:38:37 | out |
107532793 | 31.07.2013 4:33:38 | in |
107444721 | 31.07.2013 4:51:20 | in |
107532793 | 31.07.2013 5:25:32 | out |
107444721 | 31.07.2013 5:41:56 | out |
107532793 | 01.08.2013 4:34:20 | in |
107444721 | 01.08.2013 4:57:59 | in |
107532793 | 01.08.2013 5:34:03 | out |
107444721 | 01.08.2013 5:39:40 | out |
107532793 | 02.08.2013 4:39:37 | in |
107444721 | 02.08.2013 4:51:05 | in |
107532793 | 02.08.2013 5:40:48 | out |
107444721 | 02.08.2013 6:02:57 | out |
107444721 | 03.08.2013 4:51:46 | in |
107444721 | 03.08.2013 5:50:20 | out |
107382146 | 03.08.2013 11:25:34 | in |
107382146 | 03.08.2013 13:03:11 | out |
107382146 | 03.08.2013 14:20:34 | in |
107444721 | 03.08.2013 20:24:59 | in |
107532793 | 04.08.2013 4:38:47 | in |
107532793 | 04.08.2013 5:30:44 | out |
107444721 | 04.08.2013 5:45:14 | out |
107444721 | 05.08.2013 4:37:34 | in |
107444721 | 05.08.2013 5:47:33 | out |
107382146 | 06.08.2013 4:22:44 | out |
107532793 | 06.08.2013 4:27:42 | in |
107444721 | 06.08.2013 4:35:38 | in |
107444721 | 06.08.2013 5:38:13 | out |
107382146 | 06.08.2013 6:20:57 | in |
107532793 | 06.08.2013 15:55:29 | out |
107532793 | 07.08.2013 4:28:49 | in |
107444721 | 07.08.2013 4:53:36 | in |
107444721 | 07.08.2013 5:27:44 | out |
107532793 | 07.08.2013 5:43:33 | out |
107382146 | 07.08.2013 7:27:52 | out |
107532793 | 08.08.2013 4:34:12 | in |
107444721 | 08.08.2013 4:50:52 | in |
107532793 | 08.08.2013 5:23:12 | out |
107444721 | 08.08.2013 5:29:11 | out |
107532793 | 09.08.2013 4:30:57 | in |
107444721 | 09.08.2013 4:58:12 | in |
107444721 | 09.08.2013 5:39:21 | out |
107532793 | 09.08.2013 5:41:50 | out |
107532793 | 10.08.2013 4:25:41 | in |
107444721 | 10.08.2013 4:53:19 | in |
107532793 | 10.08.2013 5:47:16 | out |
107444721 | 10.08.2013 5:50:51 | out |
107532793 | 11.08.2013 4:40:56 | in |
107444721 | 11.08.2013 4:59:41 | in |
107444721 | 11.08.2013 5:24:32 | out |
107532793 | 11.08.2013 5:31:31 | out |
107532793 | 12.08.2013 4:30:09 | in |
107444721 | 12.08.2013 4:54:36 | in |
107444721 | 12.08.2013 5:26:13 | out |
107532793 | 12.08.2013 5:39:17 | out |
107532793 | 13.08.2013 4:19:08 | in |
107532793 | 13.08.2013 5:33:02 | out |
107444721 | 13.08.2013 16:10:33 | in |
107532793 | 14.08.2013 4:21:37 | in |
107532793 | 14.08.2013 5:25:53 | out |
107444721 | 14.08.2013 5:31:20 | out |
107532793 | 15.08.2013 4:34:43 | in |
107444721 | 15.08.2013 4:50:40 | in |
107444721 | 15.08.2013 5:53:46 | out |
107532793 | 15.08.2013 5:56:52 | out |
107532793 | 16.08.2013 4:25:22 | in |
107444721 | 16.08.2013 4:38:22 | in |
107532793 | 16.08.2013 5:32:41 | out |
107444721 | 16.08.2013 5:46:37 | out |
107444721 | 17.08.2013 4:38:30 | in |
107444721 | 17.08.2013 5:40:43 | out |
107532793 | 18.08.2013 4:29:04 | in |
107532793 | 18.08.2013 5:51:54 | out |
107532793 | 19.08.2013 4:19:35 | in |
107444721 | 19.08.2013 4:47:08 | in |
107532793 | 19.08.2013 5:26:01 | out |
107444721 | 19.08.2013 5:35:12 | out |
107532793 | 20.08.2013 4:37:15 | in |
107444721 | 20.08.2013 4:40:28 | in |
107444721 | 20.08.2013 5:38:20 | out |
107532793 | 20.08.2013 5:45:44 | out |
107532793 | 21.08.2013 4:21:50 | in |
107532793 | 21.08.2013 6:01:00 | out |
107532793 | 22.08.2013 4:46:12 | in |
107444721 | 22.08.2013 4:49:46 | in |
107444721 | 22.08.2013 5:40:42 | out |
107532793 | 22.08.2013 5:52:18 | out |
107532793 | 23.08.2013 4:26:19 | in |
107444721 | 23.08.2013 4:47:23 | in |
107444721 | 23.08.2013 5:15:22 | out |
107532793 | 23.08.2013 5:56:15 | out |
107532793 | 24.08.2013 4:30:30 | in |
107444721 | 24.08.2013 4:54:42 | in |
107444721 | 24.08.2013 5:34:13 | out |
107444721 | 25.08.2013 4:49:22 | in |
107444721 | 25.08.2013 5:15:29 | out |
107532793 | 25.08.2013 7:21:58 | out |
107532793 | 26.08.2013 2:17:05 | in |
107532793 | 26.08.2013 15:48:21 | out |
107532793 | 27.08.2013 4:25:00 | in |
107444721 | 27.08.2013 4:48:03 | in |
107532793 | 27.08.2013 5:33:08 | out |
107444721 | 27.08.2013 6:10:05 | out |
107532793 | 28.08.2013 4:27:07 | in |
107444721 | 28.08.2013 4:38:29 | in |
107444721 | 28.08.2013 5:31:43 | out |
107532793 | 28.08.2013 5:32:23 | out |
107532793 | 29.08.2013 4:34:32 | in |
107444721 | 29.08.2013 4:45:18 | in |
107444721 | 29.08.2013 5:32:59 | out |
107532793 | 29.08.2013 5:38:03 | out |
107444721 | 29.08.2013 19:18:31 | in |
107532793 | 30.08.2013 4:25:27 | in |
107444721 | 30.08.2013 5:57:35 | out |
107532793 | 30.08.2013 6:19:44 | out |
107532793 | 31.08.2013 4:41:50 | in |
107532793 | 31.08.2013 5:46:50 | out |
107444721 | 01.09.2013 4:35:41 | in |
107532793 | 01.09.2013 4:38:43 | in |
107444721 | 01.09.2013 5:30:51 | out |
107532793 | 01.09.2013 6:06:31 | out |
107532793 | 02.09.2013 4:33:21 | in |
107532793 | 02.09.2013 5:24:05 | out |
107532793 | 03.09.2013 4:46:53 | in |
107532793 | 03.09.2013 5:45:49 | out |
107444721 | 03.09.2013 22:47:22 | in |
107532793 | 04.09.2013 4:31:34 | in |
107532793 | 04.09.2013 5:39:07 | out |
107532793 | 05.09.2013 4:35:10 | in |
107532793 | 05.09.2013 5:58:44 | out |
107532793 | 06.09.2013 4:30:12 | in |
107444721 | 06.09.2013 5:30:13 | out |
107532793 | 06.09.2013 5:39:04 | out |
107444721 | 08.09.2013 5:06:54 | in |
107444721 | 08.09.2013 5:49:38 | out |
107444721 | 09.09.2013 4:23:05 | in |
107532793 | 09.09.2013 4:31:15 | in |
107444721 | 09.09.2013 5:02:10 | out |
107532793 | 09.09.2013 5:35:17 | out |
107532793 | 10.09.2013 4:46:24 | in |
107532793 | 10.09.2013 5:37:13 | out |
107444721 | 10.09.2013 20:31:52 | in |
107532793 | 11.09.2013 4:30:00 | in |
107532793 | 11.09.2013 5:49:03 | out |
107532793 | 12.09.2013 4:32:06 | in |
107532793 | 12.09.2013 5:27:47 | out |
107444721 | 12.09.2013 6:11:13 | out |
107444721 | 13.09.2013 14:49:49 | in |
107532793 | 14.09.2013 4:32:11 | in |
107532793 | 14.09.2013 5:36:34 | out |
107444721 | 14.09.2013 5:40:44 | out |
107532793 | 15.09.2013 4:54:02 | in |
107532793 | 15.09.2013 5:27:53 | out |
107532793 | 16.09.2013 4:24:52 | in |
107532793 | 16.09.2013 5:35:25 | out |
107444721 | 16.09.2013 19:06:00 | in |
107532793 | 17.09.2013 4:57:51 | in |
107444721 | 17.09.2013 5:30:33 | out |
107532793 | 17.09.2013 5:56:26 | out |
107532793 | 17.09.2013 10:27:20 | in |
107444721 | 18.09.2013 4:39:48 | in |
107444721 | 18.09.2013 5:40:22 | out |
107444721 | 18.09.2013 18:43:41 | in |
107444721 | 19.09.2013 5:54:53 | out |
107444721 | 19.09.2013 21:35:57 | in |
107444721 | 20.09.2013 6:04:53 | out |
107444721 | 21.09.2013 3:31:14 | in |
107444721 | 21.09.2013 6:09:26 | out |
107444721 | 21.09.2013 21:50:51 | in |
107444721 | 22.09.2013 5:23:46 | out |
107444721 | 22.09.2013 20:13:50 | in |
107444721 | 24.09.2013 1:53:28 | out |
107444721 | 25.09.2013 4:40:45 | in |
107444721 | 25.09.2013 5:29:01 | out |
107444721 | 25.09.2013 14:59:46 | in |
107444721 | 26.09.2013 5:21:18 | out |
107444721 | 27.09.2013 4:47:42 | in |
107444721 | 27.09.2013 5:15:17 | out |
107444721 | 30.09.2013 16:57:43 | in |
107444721 | 01.10.2013 5:03:26 | out |
107532793 | 02.10.2013 2:20:49 | out |
107444721 | 02.10.2013 18:13:56 | in |
107444721 | 03.10.2013 2:56:47 | out |
107444721 | 04.10.2013 17:47:31 | in |
107444721 | 05.10.2013 2:16:03 | out |
107532793 | 07.10.2013 0:34:16 | in |
107532793 | 07.10.2013 15:56:12 | out |
107444721 | 08.10.2013 4:51:29 | in |
107444721 | 08.10.2013 5:03:50 | out |
107444721 | 09.10.2013 4:34:06 | in |
107444721 | 09.10.2013 5:28:51 | out |
107444721 | 10.10.2013 4:36:42 | in |
107444721 | 10.10.2013 5:26:06 | out |
107444721 | 11.10.2013 4:27:50 | in |
107532793 | 11.10.2013 4:46:33 | in |
107444721 | 11.10.2013 5:11:15 | out |
107532793 | 11.10.2013 5:38:58 | out |
107382146 | 12.10.2013 2:27:44 | in |
107444721 | 12.10.2013 4:27:06 | in |
107444721 | 12.10.2013 5:29:47 | out |
107532793 | 13.10.2013 4:31:47 | in |
107444721 | 13.10.2013 4:53:54 | in |
107444721 | 13.10.2013 5:28:24 | out |
107532793 | 13.10.2013 5:36:46 | out |
107382146 | 13.10.2013 18:43:47 | out |
107532793 | 14.10.2013 4:43:50 | in |
107444721 | 14.10.2013 4:44:43 | in |
107444721 | 14.10.2013 5:03:26 | out |
107532793 | 14.10.2013 5:15:54 | out |
107444721 | 14.10.2013 17:06:38 | in |
107532793 | 15.10.2013 4:31:50 | in |
107444721 | 15.10.2013 5:14:29 | out |
107532793 | 15.10.2013 5:39:37 | out |
107532793 | 16.10.2013 4:29:41 | in |
107532793 | 16.10.2013 5:30:16 | out |
107444721 | 16.10.2013 13:42:47 | in |
107444721 | 17.10.2013 3:54:30 | out |
107532793 | 17.10.2013 5:26:12 | in |
107532793 | 17.10.2013 16:09:53 | out |
107444721 | 17.10.2013 20:38:48 | in |
107532793 | 19.10.2013 4:33:48 | in |
107532793 | 19.10.2013 5:28:12 | out |
107444721 | 19.10.2013 16:58:59 | out |
107532793 | 21.10.2013 4:37:39 | in |
107532793 | 21.10.2013 5:22:41 | out |
Эту задачу можно решить при помощи сортировки данных в скрипте загрузки. Конечный код конечно будет зависеть от того, есть ли в данных "проблемные места" (например, когда человек зашел в обход системы учета, а вышел через нее, и у него подряд 2 события выхода стоят). Но в общем случае я решал бы ее так:
dataTmp1: //Загружаем исходные данные
LOAD
RowNo() as PassID, //Проставляем нумерацию для уникального определения каждой строки
PERSON_ID,
BORDER_CROSS_DATE as CrossTS,
date(floor(BORDER_CROSS_DATE)) as Day,
DIRECTION_NAME
FROM [lib://Demo (bbsales-u122707_qlik.acc)/In-Out.csv]
(txt, codepage is 1251, embedded labels, delimiter is ',', msq);
dataTmp2:
NoConcatenate
load
*
Resident dataTmp1 order by PERSON_ID,CrossTS asc; //Сортируем данные по сотруднику, а потом по дате прохода, по возрастанию
dataTmp3:
NoConcatenate
load *,
if(PERSON_ID<>Previous(PERSON_ID) and DIRECTION_NAME='out',1,0) as delMark //Отмечаем первую запись по сотруднику, если она имеет направление out, чтобы всегда начинать со входа
Resident dataTmp2;
data:
NoConcatenate
load *,
if(PERSON_ID=Previous(PERSON_ID) and DIRECTION_NAME='out',alt(-(Previous(CrossTS)-CrossTS),0),0) as [InTime] //Для каждой строчки выхода считаем разность от ее времени до времени предыдущей записи, ставим знак минус, потому что время выхода больше, чем время входа, чтобы в итоге получить положительное значение длительности.
Resident dataTmp3 where delMark=0; //Обрезаем первую запись по сотруднику, если она имеет направление out, чтобы всегда начинать со входа
//Дропаем временные таблицы
drop Tables dataTmp1, dataTmp2, dataTmp3;
Вот итоги:
Огромное спасибо Евгений за внимание, поддержку и оперативность. Будем дальше грызть гранит знаний: )) Теперь я должен это всё привести в минуты и для каждого сотрудника суммировать время за неделю ( 5 рабочих дней).
Еще раз спасибо и удачи!