IntervalMatch

IntervalMatch 접두사는 불연속 숫자 값과 하나 이상의 숫자 간격을 연결하며, 선택적으로 하나 이상의 추가 키의 값을 연결하는 테이블을 만드는 데 사용됩니다.

Syntax:  

IntervalMatch (matchfield)(loadstatement | selectstatement )

IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )

 

IntervalMatch 접두사는 간격을 로드하는 LOAD 또는 SELECT 문 앞에 와야 합니다. IntervalMatch 접두사가 있는 문을 실행하기 전에 불연속 데이터 포인트(아래 예에서는 Time)를 포함하는 필드 및 추가 키를 QlikView로 로드해야 합니다. 이 접두사가 자체적으로 필드를 데이터베이스 테이블에서 읽는 것은 아닙니다. 이 접두사는 로드한 간격과 키의 테이블을 불연속 숫자 데이터 포인트의 추가 열을 포함하는 테이블로 변환합니다. 또한 테이블이 불연속 데이터 포인트, 간격 및 키 필드의 값에 대한 가능한 조합마다 하나의 레코드를 가지도록 레코드의 수를 확장합니다.

간격은 겹칠 수 있으며 불연속 값은 일치하는 모든 간격에 연결됩니다.

확장된 IntervalMatch 접두사는 하나 이상의 불연속 숫자 값과 하나 이상의 숫자 간격을 연결하는 동시에 하나 이상의 추가 키의 값을 연결하는 테이블을 만드는 데 사용됩니다. 이 기능은 시간에 따라 느리게 변화하는 차원을 포함하는 트랜잭션을 연결할 수 있는 매우 강력하고 유용한 기능입니다.

정의되지 않은 간격 한계가 무시되지 않도록 하려면 NULL 값을 간격의 하한이나 상한이 되는 다른 필드에 매핑해야 합니다. 이를 위해서는 NullAsValue 문을 사용하거나 불연속 숫자 데이터 포인트를 사용하기 전후에 NULL 값을 숫자 값으로 대체하는 명시적인 테스트를 수행할 수 있습니다.

Arguments:  

인수 설명
matchfield 간격과 연결할 불연속 숫자 값을 포함하는 필드입니다.
keyfield 변환 시 일치시킬 추가 특성이 포함된 필드입니다.
loadstatement or selectstatement 결과는 테이블이어야 합니다. 여기서, 첫 번째 필드는 각 간격의 하한 값이 포함되고 두 번째 필드에는 각 간격의 상한 값이 포함됩니다. 또한 일치 키를 사용하는 경우 세 번째 및 후속 필드에는 IntervalMatch 문으로 제공된 키 필드가 포함됩니다. 간격은 항상 완료된 상태입니다. 즉, 간격에는 종료 지점이 포함되어야 합니다. 숫자가 아닌 한계를 지정하면 간격이 무시됩니다(정의되지 않음).

Example 1:  

아래의 두 테이블 중 첫 번째 테이블은 다른 주문의 생산 시작 및 종료 시간을 정의합니다. 두 번째 테이블은 불연속 이벤트의 수를 나열합니다. IntervalMatch 접두사를 사용하면 두 테이블을 논리적으로 연결하여, 예를 들어 생산 중단으로 영향을 받은 주문이나 특정 주문 제품을 생산한 근무조를 확인할 수 있습니다.

EventLog:
LOAD * Inline [
Time, Event, Comment
00:00, 0, Start of shift 1
01:18, 1, Line stop
02:23, 2, Line restart 50%
04:15, 3, Line speed 100%
08:00, 4, Start of shift 2
11:43, 5, End of production
];

OrderLog:
LOAD * INLINE [
Start, End, Order
01:00, 03:35, A
02:30, 07:58, B
03:04, 10:27, C
07:23, 11:43, D
];

//Link the field Time to the time intervals defined by the fields Start and End.
Inner Join IntervalMatch ( Time )
LOAD Start, End
Resident OrderLog;

결과:

이제 OrderLog 테이블에는 다음과 같은 추가적인 열(Time)이 포함됩니다. 레코드 수 역시 확장됩니다.

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

Example 2: (keyfield 사용)

위와 동일한 예로, ProductionLine 을 키 필드로 추가합니다.

EventLog:
LOAD * Inline [
Time, Event, Comment, ProductionLine
00:00, 0, Start of shift 1, P1
01:00, 0, Start of shift 1, P2
01:18, 1, Line stop, P1
02:23, 2, Line restart 50%, P1
04:15, 3, Line speed 100%, P1
08:00, 4, Start of shift 2, P1
09:00, 4, Start of shift 2, P2
11:43, 5, End of production, P1
11:43, 5, End of production, P2
];
 
OrderLog:
LOAD * INLINE [
Start, End, Order, ProductionLine
01:00, 03:35, A, P1
02:30, 07:58, B, P1
03:04, 10:27, C, P1
07:23, 11:43, D, P2
];
 
//Link the field Time to the time intervals defined by the fields Start and End and match the values
// to the key ProductionLine.
Inner Join
IntervalMatch ( Time, ProductionLine )
LOAD Start, End, ProductionLine
Resident OrderLog;

결과:

이제 아래와 같은 테이블 상자가 생성됩니다.

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