Перейти к основному содержимому Перейти к дополнительному содержимому

Сопоставление интервалов с дискретными данными

Префикс intervalmatch для операторов LOAD или SELECT используется для связывания дискретных числовых значений с одним или несколькими числовыми интервалами. Это очень полезная функция, которая может использоваться, например, в производственных средах.

Пример применения Intervalmatch

Взгляните на две расположенные ниже таблицы. В первой таблице задано время начала и конца выполнения различных заказов. Во второй таблице заданы некоторые отдельные события. Как связать отдельные события с заказами, чтобы знать, например, какие заказы были затронуты нарушениями, и в какие смены были выполнены определенные заказы?

Таблица OrderLog
НачатьКонецПорядок
01:0003:35A
02:3007:58Б
03:0410:27C
07:2311:43D
Таблица EventLog
ВремяСобытиеКомментарий
00:000Начало смены 1
01:181Остановка линии
02:232Перезапуск линии 50%
04:153Скорость линии 100%
08:004Начало смены 2
11:435Окончание производства

Сначала загрузите две таблицы как обычно, затем свяжите поле Time с интервалами, определенными полями Start и End:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

Теперь в программе Qlik Sense можно создать таблицу следующим образом:

Таблица с полем Time, связанным с интервалами, определенными Start и End
ВремяСобытиеКомментарийПорядокНачатьКонец
0:000Начало смены 1---
1:181Остановка линииA1:003:35
2:232Перезапуск линии 50%A1:003:35
4:153Скорость линии 100%Б2:307:58
4:153Скорость линии 100% C3:0410:....
8:004Начало смены 2C3:0410:....
8:004Начало смены 2D7:2311:....
11:435Конец производстваЕ7:2311:.....

Отсюда видно, что в основном остановка линии повлияла на заказ A, а снижение скорости линии повлияло также на заказы B и C. Только заказы C и D были частично обработаны Shift 2.

При использовании intervalmatch обратите внимание на следующие моменты:

  • До оператора intervalmatch поле, которое содержит дискретные точки диаграммы (Time в приведенном выше примере), уже должно быть считано в программу Qlik Sense. Оператор intervalmatch не считывает это поле из таблицы базы данных.
  • Таблица, считанная с помощью оператора intervalmatch LOAD или SELECT, должна всегда содержать ровно два поля (Start и End в примере, приведенном выше). Для установки связи с другими полями необходимо выполнить считывание из полей интервала вместе с дополнительными полями в отдельном операторе LOAD или SELECT (первый оператор SELECT в примере, приведенном выше).
  • Интервалы всегда закрыты. Это означает, что конечные точки включены в интервал. Нечисловые пределы выводят игнорируемый интервал (неопределенный), а пределы NULL расширяют интервал до неопределенного значения (неограниченный).
  • Интервалы могут накладываться друг на друга, а дискретные значения будут связаны со всеми соответствующими интервалами.

Использование расширенного синтаксиса intervalmatch для разрешения неполадок с медленно изменяющимися измерениями

Расширенный intervalmatch синтаксис может использоваться для разрешения известных неполадок с медленно изменяющимися измерениями в исходных данных.

Пример скрипта:

SET NullInterpret='';

 

IntervalTable:

LOAD Key, ValidFrom, Team

FROM 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is IntervalTable);

 

Key:

LOAD

Key,

ValidFrom as FirstDate,

date(if(Key=previous(Key),

previous(ValidFrom) - 1)) as LastDate,

Team

RESIDENT IntervalTable order by Key, ValidFrom desc;

 

drop table IntervalTable;

 

Transact:

LOAD Key, Name, Date, Sales

FROM 'lib://dataqv/intervalmatch.xlsx' (ooxml, embedded labels, table is Transact);

 

INNER JOIN intervalmatch (Date,Key) LOAD FirstDate, LastDate, Key RESIDENT Key;

Оператор nullinterpret необходим только при считывании данных из табличного файла, поскольку пропущенные значения определяются как пустые строки, а не как значения NULL.

Загрузка данных из IntervalTable может привести к созданию следующей таблицы:

Table with data loaded from IntervalTable
KeyFirstDateTeam
0001102011-01-21Southwest
000110-Northwest
000120-Northwest
0001202013-03-05Southwest
0001202013-03-05Northwest
0001202013-03-05Southwest

Оператор nullasvalue разрешает сопоставление значений NULL с полями в списке.

Создайте Key, FirstDate, LastDate (поля атрибутов) с помощью элементов previous и order by, после чего параметр IntervalTable исключается и заменяется этой таблицей ключей.

Загрузка данных из Transact может привести к созданию следующей таблицы:

Таблица с данными, загруженными из Transact
КлючИмяДатаПродажи
000110Шпенглер Аарон2009-08-18100
000110Шпенглер Аарон2009-12-25200
000110Шпенглер Аарон2011-02-03300
000110Шпенглер Аарон2011-05-05400
000120Баллард Джон2011-06-04500
000120Баллард Джон2013-01-20600
000120Баллард Джон2013-03-10700
000120Баллард Джон2013-03-13800
000120Баллард Джон2013-09-21900

Последовательно заданные операторы inner join и intervalmatch заменяют вышеуказанный ключ синтетическим ключом, подсоединяемым к таблице Transact, что позволяет создать следующую таблицу:

Таблица с последовательно заданными операторами inner join и intervalmatch
КлючКомандаИмяДата началаДата окончанияДатаПродажи
000110Северо-ЗападШпенглер Аарон-2011-01-202009-08-18100
000110Северо-ЗападШпенглер Аарон-2011-01-202009-12-25200
000110Юго-ЗападШпенглер Аарон2011-01-21 2011-02-03300
000110Юго-ЗападШпенглер Аарон2011-01-21 2011-05-05400
000120Северо-ЗападБаллард Джон 2013-01-052011-06-04500
000120SouthwestBallard John2013-01-062013-03-042013-01-20600
000120Юго-ЗападБаллард Джон2013-03-05 2013-03-10700
000120Юго-ЗападБаллард Джон2013-03-05 2013-03-13800
000120Юго-ЗападБаллард Джон2013-03-05 2013-09-21900

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!