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.
Sintaxe:
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.
Argumentos:
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. |
loadstatementorselectstatement | 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). |
Exemplo 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.
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 |
Exemplo 2: (usando keyfield)
Como no exemplo acima, adicionando ProductionLine como um campo chave.
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 |