Correspondendo intervalos a dados discretos

O prefixo intervalmatch de um comando LOAD ou SELECT é usado para vincular valores numéricos discretos a um ou mais intervalos numéricos. Esse recurso é muito útil e pode ser usado, por exemplo, em ambientes de produção, conforme demonstrado no exemplo a seguir.

Example:  

Examine as duas tabelas a seguir. A primeira tabela mostra o início e o final da produção de pedidos diferentes. A segunda tabela mostra alguns eventos discretos. Como podemos associar os eventos discretos aos pedidos, de forma que saibamos, por exemplo, que pedidos foram afetados pelas interferências e que pedidos foram processados por quais turnos?

Table OrderLog

Table EventLog

Table of discrete numeric values (Event)

Primeiro, carregue as duas tabelas da forma habitual e, em seguida, vincule o campo Time aos intervalos definidos pelos campos Start e End:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

Agora você pode criar uma tabela no QlikView, como mostrado abaixo:

Podemos observar, principalmente, que o pedido A foi afetado pela interrupção da linha, mas que a velocidade reduzida da linha afetou também os pedidos B e C. Somente os pedidos C e D foram parcialmente tratados pelo Shift 2.

Observe o seguinte ao utilizar o comando intervalmatch:

  • Antes do comando intervalmatch o campo que contém os pontos de dados discretos (Time no exemplo acima) já deve ter sido lido no QlikView. O próprio comando intervalmatch não lê esse campo da tabela do banco de dados.
  • A tabela lida no comando intervalmatch LOAD ou SELECT deve sempre conter exatamente dois campos (Start e End no exemplo apresentado). Para estabelecer um link com outros campos, é necessário ler os campos de intervalo com campos adicionais em um campo LOAD ou SELECT separado (o primeiro comando SELECT no exemplo apresentado).
  • 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) e os limites NULL estendem o intervalo indefinidamente (ilimitado).
  • Os intervalos podem estar sobrepostos e os valores discretos estarão vinculados a todos os intervalos correspondentes.

Usando a sintaxe intervalmatch estendida para resolver problemas de lentidão durante a alteração de dimensões

A sintaxe intervalmatch estendida pode ser utilizada para tratar o problema já conhecido de lentidão durante a alteração de dimensões na fonte de dados.

Script de amostra:

SET NullInterpret='';

 

IntervalTable:

LOAD Key, ValidFrom, Team from IntervalTable.xls;

NullAsValue FirstDate,LastDate;

 

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 Transact.xls;

 

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

O comando nullinterpret é exigido apenas na leitura de dados de um arquivo de tabela, pois os valores ausentes são definidos como caracteres vazios em vez de valores NULL.

O carregamento dos dados de IntervalTable resultaria na seguinte tabela:

O comando nullasvalue permite que os valores NULL sejam mapeados para os campos listados.

Crie Key, FirstDate, LastDate (campos de atributos) usando previous e order by. Posteriormente, IntervalTable é eliminada e substituída por essa tabela de chave.

O carregamento dos dados de Transact resultaria na seguinte tabela:

O comando intervalmatch precedido por inner join substitui a chave por uma chave sintética que se conecta à tabela Transact, resultando na seguinte tabela: