IntervalMatch

Genişletilmiş IntervalMatch öneki, ayrık sayısal değerleri bir veya daha fazla sayısal aralıkla eleştiren ve isteğe bağlı olarak bir veya daha fazla ek anahtarın değerlerini eşleştiren bir tablo oluşturmak için kullanılır.

Syntax:  

IntervalMatch (matchfield)(loadstatement | selectstatement )

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

 

IntervalMatch öneki, aralıkları yükleyen bir LOAD veya SELECT deyiminden önce yerleştirilmelidir. Ayrık veri noktalarını içeren alan (aşağıdaki örnekte Zaman) ve ek anahtarlar, IntervalMatch önekinin bulunduğu deyimden önce QlikView'e zaten yüklenmiş olmalıdır. Önek veritabanı tablosundan bu alanı tek başına okumaz. Önek, yüklenmiş aralıklar ve anahtarlar tablosunu ek sütun (ayrık sayısal veri noktaları) içeren tabloya dönüştürür. Bu işlem, aynı zamanda yeni tablo ayrık veri noktasının, aralığın ve anahtar alanlarının değerinin her olası kombinasyonu için bir kayıt içerecek şekilde kayıt sayısını genişletir

Aralıklar çakışabilir ve ayrık değerler tüm eşleşen aralıklara bağlanır.

Genişletilmiş IntervalMatch öneki, ayrık sayısal değerleri bir veya daha fazla sayısal aralıkla eşleştirirken aynı zamanda bir veya daha fazla ek anahtarın değerlerini eşleştiren tablo oluşturmak için kullanılır. Bu, zamanla değişen boyutlara sahip işlemleri bağlamak için kullanılabilen çok güçlü ve esnek bir özelliktir: Yavaş değişen boyutlar.

Tanımlanmamış aralık sınırlarının göz ardı edilmesini önlemek için, NULL değerlerin aralığın alt ve üst sınırlarını oluşturan diğer alanlara eşlenmesine izin vermek gerekebilir. Bu da, NULL değerleri ayrık sayısal veri noktalarının herhangi birinden çok önce veya sonra olacak şekilde sayısal bir değerle değiştiren açık bir test ya da NullAsValue deyimi ile başarılabilir.

Arguments:  

Bağımsız Değişken Açıklama
matchfield Aralıklara bağlanacak ayrık sayısal değerleri içeren alan.
keyfield Dönüştürme sırasında eşleştirilecek ek öznitelikleri içeren alan.
loadstatement or selectstatement Sonuçta birinci alanı her bir aralığın alt sınırını içeren, ikinci alanı her bir aralığın üst sınırını içeren ve anahtar eşleştirmesi kullanılması durumunda da üçüncü ve varsa sonraki alanları IntervalMatch deyiminde bulunan anahtar alanları içeren bir tablo ortaya çıkmalıdır. Aralıklar her zaman kapalıdır; yani uç noktaları her zaman aralığa dahil edilir. Sayısal olmayan sınırlar, aralığı göz ardı edilmiş (tanımlanmamış) olarak işler.

Example 1:  

Aşağıda iki tablo mevcuttur: Birinci tablo, farklı siparişlerin üretiminin başlangıç ve bitiş zamanlarını tanımlar. İkinci tablo, bir dizi ayrık olayı listeler. IntervalMatch öneki aracılığıyla, örneğin hangi siparişlerin kesintilerden etkilendiğini ve hangi siparişlerin hangi vardiyalarda üretildiğini öğrenmek amacıyla iki tabloyu mantıksal olarak birbirine bağlamak mümkündür.

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;

Sonuç:

Artık, OrderLog tablosu ek bir sütun içermektedir: Time. Kayıtların sayısı da genişlemiştir.

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 kullanarak)

Yukarıdaki örnekle aynı olup anahtar alan olarak ProductionLine eklenmiştir.

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;

Sonuç:

Artık aşağıdaki gibi bir tablo kutusu oluşturulabilir:

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