Ir para conteúdo principal Pular para conteúdo complementar

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.

Exemplo de sintaxe Intervalmatch

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?

Tabela OrderLog
IniciarFimOrdem
01:0003:35A
02:3007:58 B
03:0410:27C
07:2311:43D
Tabela EventLog
HoraEventoComentário
00:000Começo do turno 1
01:181Parada de linha
02:232Reinício da linha 50%
04:153Velocidade da linha 100%
08:004Começo do turno 2
11:435Fim da produção

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 Qlik Sense, como mostrado abaixo:

Tabela com campo Hora vinculado aos intervalos definidos por Início e Fim
HoraEventoComentárioOrdemIniciarFim
0:000Começo do turno 1---
1:181Parada de linhaA1:003:35
2:232Reinício da linha 50%A1:003:35
4:153Velocidade da linha 100% B2:307:58
4:153Velocidade da linha 100% C3:0410:....
8:004Começo do turno 2C3:0410:....
8:004Começo do turno 2D7:2311:....
11:435Fim da produçãoE7:2311:.....

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 Qlik Sense. O 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 vínculo com outros campos, você deve ler os campos de intervalo juntamente com campos adicionais em um comando LOAD ou SELECT separado (o primeiro comando SELECT no exemplo acima).
  • Os intervalos estão sempre fechados. Ou seja, 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 '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;

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:

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

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:

Tabela com dados carregados de Transact
ChaveNomeDataVendas
000110Spengler Aaron2009-08-18100
000110Spengler Aaron2009-12-25200
000110Spengler Aaron2011-02-03300
000110Spengler Aaron2011-05-05400
000120Ballard John2011-06-04500
000120Ballard John2013-01-20600
000120Ballard John2013-03-10700
000120Ballard John2013-03-13800
000120Ballard John2013-09-21900

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

Tabela com o comando intervalmatch precedido pela inner join
ChaveTeamNomeFirstDateLastDateDataVendas
000110NorthwestSpengler Aaron-2011-01-202009-08-18100
000110NorthwestSpengler Aaron-2011-01-202009-12-25200
000110SouthwestSpengler Aaron2011-01-21 2011-02-03300
000110SouthwestSpengler Aaron2011-01-21 2011-05-05400
000120NorthwestBallard John 2013-01-052011-06-04500
000120SouthwestBallard John2013-01-062013-03-042013-01-20600
000120SouthwestBallard John2013-03-05 2013-03-10700
000120SouthwestBallard John2013-03-05 2013-03-13800
000120SouthwestBallard John2013-03-05 2013-09-21900

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo – um erro de digitação, uma etapa ausente ou um erro técnico – avise-nos!