간격과 불연속 데이터의 연결

LOAD 또는 SELECT 문에 intervalmatch 접두사를 사용하면 불연속 숫자 값을 하나 이상의 숫자 간격과 연결할 수 있습니다. 이는 아래 예와 같은 프로덕션 환경에서 사용할 수 있는 매우 강력한 기능입니다.

Example:  

아래 두 테이블을 보십시오. 첫 번째 테이블에는 여러 주문의 생산 시작 날짜와 종료 날짜가 나와 있습니다. 두 번째 테이블에는 몇 가지 불연속 이벤트가 나와 있습니다. 생산 중단으로 영향을 받은 주문이나 특정 주문 제품을 생산한 근무조 등을 확인하기 위해 이러한 불연속 이벤트를 주문과 연결하려면 어떻게 해야 할까요?

Table OrderLog

Table EventLog

Table of discrete numeric values (Event)

먼저 두 테이블을 일반적인 방법으로 로드하고 Time 필드를 StartEnd:필드로 정의된 간격과 연결합니다.

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

이제 아래와 같이 QlikView에서 테이블을 만들 수 있습니다.

생산 라인 중단에 가장 큰 영향을 받은 것은 주문 A이지만 주문 BC의 경우에도 라인 속도 저하에 영향을 받았음을 손쉽게 확인할 수 있습니다. 주문 CDShift 2에 의해 부분적으로 처리되었습니다.

intervalmatch를 사용할 때는 다음 사항에 주의하십시오.

  • intervalmatch 문을 실행하기 전에 불연속 데이터 포인트(이 예에서는 Time)가 포함된 필드를 QlikView로 읽어와야 합니다. intervalmatch 문은 이 필드를 데이터베이스 테이블에서 읽지 않습니다.
  • intervalmatch LOAD 또는 SELECT 문으로 읽은 테이블에는 항상 정확히 두 개의 필드(위 예에서는 StartEnd)가 포함되어 있어야 합니다. 다른 필드에 대한 연결을 설정하려면 별도의 LOAD 또는 SELECT 문(위 예에서 첫 번째 SELECT 문)으로 추가 필드와 간격 필드를 함께 읽어야 합니다.
  • 간격은 항상 완료된 상태입니다. 즉, 간격에는 종료 지점이 포함되어야 합니다. 제한이 숫자가 아닐 경우 간격이 무시되며(정의되지 않음), 제한이NULL일 경우 간격이 무기한으로(무제한) 확장됩니다.
  • 간격은 겹칠 수 있으며 불연속 값은 일치하는 모든 간격에 연결됩니다.

확장된 intervalmatch 구문을 사용하여 느리게 변화하는 차원 문제 해결

확장된 intervalmatch 구문을 사용하여 잘 알려진 소스 데이터의 느리게 변화하는 차원 문제를 처리할 수 있습니다.

예제 스크립트:

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;

누락된 값은 NULL 값이 아니라 빈 문자열로 정의되므로, nullinterpret 문은 테이블 파일에서 데이터를 읽어올 때만 필요합니다.

IntervalTable에서 데이터를 로드하면 다음과 같은 테이블이 생깁니다.

nullasvalue 문을 사용하여 NULL 값을 나열된 필드에 매핑할 수 있습니다.

previousorder by를 사용하여 Key, FirstDate, LastDate(특성 필드)를 만들면 나중에 IntervalTable이 이 키 테이블로 대체된 후 삭제됩니다.

Transact에서 데이터를 로드하면 다음과 같은 테이블이 생깁니다.

inner join 다음에 나오는 intervalmatch 문은 Transact 테이블을 연결하는 가상 키로 위 키를 대체하여 다음과 같은 테이블을 만듭니다.