IntervalMatch

O prefixo IntervalMatch estendido é usado para criar uma tabela comparando valores numéricos discretos com um ou mais intervalos numéricos e opcionalmente comparar os valores de uma ou várias chaves adicionais.

Syntax:  

IntervalMatch (matchfield)(loadstatement | selectstatement )

IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )

 

O prefixo IntervalMatch deve ser colocado antes de um comando LOAD ou SELECT que carregue os intervalos. O campo que contém os pontos de dados discretos (Tempo, no exemplo abaixo) já deve ter sido carregado no Qlik Sense antes do comando com o prefixo IntervalMatch. O prefixo não lê esse campo por meio da tabela do banco de dados. O prefixo transforma a tabela carregada de intervalos e chaves em uma tabela que contém uma coluna adicional: os pontos de dados numéricos discretos. Ele também expande o número de registros de forma que a nova tabela tenha um registro por combinação possível de ponto de dados discreto, intervalo e valor do(s) campo(s) chave.

Os intervalos podem estar sobrepostos e os valores discretos estarão vinculados a todos os intervalos correspondentes.

Quando o prefixo IntervalMatch é estendido com campos chave, ele é usado para criar uma tabela comparando valores numéricos discretos com um ou mais intervalos numéricos, enquanto ao mesmo tempo compara os valores de uma ou várias chaves adicionais.

Para evitar que limites de intervalo indefinidos sejam desconsiderados, você deve permitir que valores NULL sejam mapeados para outros campos que constituem o limite inferior ou superior no intervalo. Isso pode ser controlado pelo comando NullAsValue ou por um teste explícito que substitui NULL por um valor numérico bem antes ou depois de qualquer um dos pontos de dados numéricos discretos.

Arguments:  

Argumento Descrição
matchfield O campo que contém os valores numéricos discretos a serem vinculados a intervalos.
keyfield Campos que contêm os atributos adicionais a serem combinados na transformação.
loadstatement or selectstatement Deve resultar em uma tabela cujo primeiro campo contém o limite inferior de cada intervalo, o segundo contém o limite superior e, no caso do uso da correspondência de chaves, o terceiro e quaisquer campos seguintes contêm o(s) campo(s) chave presentes no comando IntervalMatch. Os intervalos estão sempre fechados, isto é, sempre contêm pontos de extremidade. Os limites não numéricos fazem com que o intervalo seja desconsiderado (indefinido).

Example 1:  

Nas duas tabelas abaixo, a primeira lista vários eventos discretos e a segunda define as horas inicial e final da produção de pedidos diferentes. Por meio do prefixo IntervalMatch, é possível conectar as duas tabelas logicamente para saber, por exemplo, quais pedidos foram afetados por algum contratempo, quais foram processados e em que turnos.

EventLog: LOAD * Inline [ Time, Event, Comment 00:00, 0, Start of shift 1 01:18, 1, Line stop 02:23, 2, Line restart 50% 04:15, 3, Line speed 100% 08:00, 4, Start of shift 2 11:43, 5, End of production ]; OrderLog: LOAD * INLINE [ Start, End, Order 01:00, 03:35, A 02:30, 07:58, B 03:04, 10:27, C 07:23, 11:43, D ]; //Link the field Time to the time intervals defined by the fields Start and End. Inner Join IntervalMatch ( Time ) LOAD Start, End Resident OrderLog;

 

Agora, a tabela OrderLog contém uma coluna adicional: Time. O número de registros também é expandido.

Time Start End Order

00:00

- - -
01:18 01:00 03:35 A
02:23 01:00 03:35 A
04:15 02:30 07:58 B
04:15 03:04 10:27 C
08:00 03:04 10:27 C
08:00 07:23 11:43 D
11:43 07:23

11:43

D

Example 2: (usando keyfield)

Como no exemplo acima, adicionando ProductionLine como um campo chave.

EventLog:
LOAD * Inline [
Time, Event, Comment, ProductionLine
00:00, 0, Start of shift 1, P1
01:00, 0, Start of shift 1, P2
01:18, 1, Line stop, P1
02:23, 2, Line restart 50%, P1
04:15, 3, Line speed 100%, P1
08:00, 4, Start of shift 2, P1
09:00, 4, Start of shift 2, P2
11:43, 5, End of production, P1
11:43, 5, End of production, P2
];
 
OrderLog:
LOAD * INLINE [
Start, End, Order, ProductionLine
01:00, 03:35, A, P1
02:30, 07:58, B, P1
03:04, 10:27, C, P1
07:23, 11:43, D, P2
];
 
//Link the field Time to the time intervals defined by the fields Start and End and match the values
// to the key ProductionLine.
Inner Join
IntervalMatch ( Time, ProductionLine )
LOAD Start, End, ProductionLine
Resident OrderLog;

 

Agora, uma tabela poderia ser criada:

ProductionLine Time Event Comment Order Start End
P1

00:00

0 Start of shift 1 - - -
P2 01:00 0 Start of shift 1 - - -
P1 01:18 1 Line stop A 01:00 03:35
P1 02:23 2 Line restart 50% A 01:00 03:35
P1 04:15 3 Line speed 100% B 02:30 07:58
P1 04:15 3 Line speed 100% C 03:04 10:27
P1 08:00 4 Start of shift 2 C 03:04 10:27
P2 09:00 4 Start of shift 2 D 07:23 11:43
P1 11:43 5 End of production - - -
P2 11:43 5 End of production D 07:23 11:43