Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 25, 2017, 03:15:12 am

Автор Тема: Расчет времени (Qlikview & Qlik Sense)  (Прочитано 2812 раз)

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Расчет времени (Qlikview & Qlik Sense)
« : Июнь 26, 2015, 02:21:50 pm »
Добрый день!

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

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

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #1 : Июнь 30, 2015, 09:54:09 am »
Добрый день!
Можно попробовать вот так:
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

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #2 : Июль 01, 2015, 10:15:25 pm »
Либо, если время задано текстом, просто выделить часовую составляющую 02:30 = 02.
Для облегчения восприятия можно задать интервалы, например 02:30 = "с 2 до 3" и используя таблицы сопоставления создать новое измерение.
Календарь в этом случае менять не требуется.

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

Re: Расчет времени
« Ответ #2 : Июль 01, 2015, 10:15:25 pm »

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #3 : Июль 20, 2015, 01:44:28 pm »
Подскажите, пожалуйста, как можно выделить часовую составляющую (02:30 = 02)? С помощью какой функции?
И как задать интервалы непосредственно в QlikView "например 02:30 = "с 2 до 3"?

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #4 : Июль 20, 2015, 05:35:29 pm »
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.



Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #5 : Июль 21, 2015, 11:41:43 am »
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #6 : Июль 21, 2015, 11:51:21 am »
Есть возможность, привести пример ваших данных?

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

Re: Расчет времени
« Ответ #6 : Июль 21, 2015, 11:51:21 am »

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #7 : Июль 21, 2015, 11:57:23 am »
Скрипт выглядит так:
LOAD Дата,
     [Дата заказа],
     [№ заказа],
     [Время оформления заказа],
     Left([Время оформления заказа],2) as [Час оформления заказа]


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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #8 : Июль 21, 2015, 12:43:14 pm »
Время задано не текстом и с помощью функции left не получается выделить часовую составляющую...
Возможно ли как-то в скрипте указать, что это текстовое поле при применении функции left?
left(text())

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #9 : Июль 21, 2015, 01:36:05 pm »
Так пробовала, но в скрипте он не хочет преобразовывать время в текст....

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Расчет времени
« Ответ #10 : Июль 21, 2015, 04:23:38 pm »
Ну что-то вроде
floor( frac([Время оформления заказа])*24)
тогда

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля

Оффлайн Eva

  • Новичок
  • *
  • Сообщений: 40
  • Страна: ru
  • Рейтинг: +8/-0
    • Просмотр профиля
Re: Расчет времени (Qlikview & Qlik Sense)
« Ответ #12 : Декабрь 15, 2015, 04:04:22 pm »
Добрый день. Есть два поля, Время прихода сотрудника и время ухода на каждый день. Для того, чтобы посчитать время работы сотрудника я из времени уходы,вычитаю время прихода. В разрезе даты,отработанное время считается правильно, но суммарное время работы за все дни выводится неправильно: В формате num это число с дробной частью, например 21,246319444428, когда я беру функцию Time(21,246319444428), получается неправильное значение времени. Т.е время суммируется неправильно. Как можно избавиться от этой проблемы?

Оффлайн Eva

  • Новичок
  • *
  • Сообщений: 40
  • Страна: ru
  • Рейтинг: +8/-0
    • Просмотр профиля
Re: Расчет времени (Qlikview & Qlik Sense)
« Ответ #13 : Декабрь 15, 2015, 04:11:23 pm »
Вопрос Решен. Нужна функция Interval, а не  Time.

Оффлайн Иван

  • Наставник
  • **
  • Сообщений: 62
  • Страна: ru
  • Рейтинг: +13/-0
    • Просмотр профиля
    • Теория и практика QlikView
Re: Расчет времени (Qlikview & Qlik Sense)
« Ответ #14 : Декабрь 16, 2015, 08:03:52 am »
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.
Бизнес-анализ, http://iiba.ru
Теория и практика QlikView, http://ivan-shamaev.ru/qlikview-theory-and-practic