기본 콘텐츠로 건너뛰기 보완적인 콘텐츠로 건너뛰기

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

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

 

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

테이블 OrderLog
시작 End 정렬
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D

 

테이블 EventLog
시간 이벤트 주석
00:00 0 shift 1로 시작
01:18 1 라인 중단
02:23 2 라인 다시 시작 50%
04:15 3 라인 속도 100%
08:00 4 shift 2로 시작
11:43 5 생산 종료

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

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

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

A table in QlikView combining the above tables.

생산 라인 중단에 가장 큰 영향을 받은 것은 주문 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에서 데이터를 로드하면 다음과 같은 테이블이 생깁니다.

테이블 1 예
첫 번째 날짜
000110 2011-01-21 Southwest
000110 - Northwest
000120 - Northwest
000120 2013-03-05 Southwest
000120 2013-03-05 Northwest
000120 2013-01-06 Southwest

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

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

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

테이블 2 예
이름 날짜 판매
000110 Spengler Aaron 2009-08-18 100
000110 Spengler Aaron 2009-12-25 200
000110 Spengler Aaron 2011-02-03 300
000110 Spengler Aaron 2011-05-05 400
000120 Ballard John 2011-06-04 500
000120 Ballard John 2013-01-20 600
000120 Ballard John 2013-03-10 700
000120 Ballard John 2013-03-13 800
000120 Ballard John 2013-09-21 900

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

테이블 3 예
이름 첫 번째 날짜 마지막 날짜 날짜 판매
000110 Northwest Spengler Aaron - 2011-01-20 2009-08-18 100
000110 Northwest Spengler Aaron - 2011-01-20 2009-12-25 200
000110 Southwest Spengler Aaron 2011-01-21 - 2011-02-03 300
000110 Southwest Spengler Aaron 2011-01-21 - 2011-05-05 400
000120 Northwest Ballard John - 2013-01-05 2011-06-04 500
000120 Southwest Ballard John 2013-01-06 2013-03-04 2013-01-20 600
000120 Southwest Ballard John 2013-03-05 - 2013-03-10 700
000120 Southwest Ballard John 2013-03-05 - 2013-03-13 800
000120 Southwest Ballard John 2013-03-05 - 2013-09-21 900

이 페이지가 도움이 되었습니까?

이 페이지 또는 해당 콘텐츠에서 오타, 누락된 단계 또는 기술적 오류와 같은 문제를 발견하면 개선 방법을 알려 주십시오!

분석 현대화 프로그램에 참여

Remove banner from view

분석 현대화 프로그램으로 귀중한 QlikView 앱을 손상시키지 않고 현대화하십시오. 여기를 클릭 하여 자세한 내용을 참조하거나 다음에 연결하십시오. ampquestions@qlik.com