Ana içeriğe geç Tamamlayıcı içeriğe geç

Aralıkları ayrık verilerle eşleme

Bir LOAD veya SELECT deyimine yönelik intervalmatch öneki, ayrık sayısal değerleri bir veya daha fazla sayısal aralığa bağlamak için kullanılır. Bu, örneğin üretim ortamlarında kullanılabilen oldukça etkili bir özelliktir.

Intervalmatch örneği

Aşağıdaki iki tabloya bakın. İlk tablo, farklı sıralamaların üretiminin başlangıcını ve bitişini göstermektedir. İkinci tablo, bazı ayrık olayları göstermektedir. Örneğin hangi siparişlerin arızalardan etkilendiğini ve hangi siparişlerin hangi vardiyalar ile işlendiğini bilebilmek için ayrık olayları siparişlerle nasıl ilişkilendirebiliriz?

Tablo OrderLog
BaşlatSonSıra
01:0003:35A
02:3007:58B
03:0410:27C
07:2311:43D
Tablo EventLog
SaatOlayYorum
00:0001. vardiya başlangıcı
01:181Hattın durması
02:232Hattın yeniden başlatılması %50
04:153Hat hızı %100
08:0042. vardiya başlangıcı
11:435Üretim bitişi

İlk olarak iki tabloyu normal şekilde yükleyin ve ardından Time alanını Start ve End alanlarıyla tanımlanan aralıklara bağlayın:

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

Şimdi Qlik Sense içinde, aşağıda olduğu gibi bir tablo oluşturabilirsiniz:

Start ve End ile tanımlanan aralıklara bağlı Time alanı içeren tablo
SaatOlayYorumSıraBaşlatSon
0:0001. vardiya başlangıcı---
1:181Hattın durmasıA1:003:35
2:232Hattın yeniden başlatılması %50A1:003:35
4:153Hat hızı %100B2:307:58
4:153Hat hızı %100 C3:0410:....
8:0042. vardiya başlangıcıC3:0410:....
8:0042. vardiya başlangıcıD7:2311:....
11:435Üretim sonuE7:2311:.....

Artık kolayca görebildiğimiz üzere, hattın durmasından en fazla etkilenen sipariş A olmuş; ancak azalan hat hızı B ve C siparişlerini de etkilemiştir. Yalnızca C ve D siparişleri Shift 2 tarafından kısmi olarak işlenmiştir.

intervalmatch öğesini kullanırken şu noktalara dikkat edin:

  • intervalmatch deyiminden önce, ayrık veri noktalarını (yukarıdaki örnekte Time) içeren alanın önceden Qlik Sense içine okunmuş olması gerekir. intervalmatch deyimi bu alanı veritabanı tablosundan okumaz.
  • intervalmatch LOAD veya SELECT deyiminde okunan tablo her zaman tam olarak iki alan (yukarıdaki örnekte Start ve End) içermelidir. Diğer alanlarla bir bağlantı kurmak için, aralık alanlarını ek alanlarla birlikte ayrı bir LOAD veya SELECT deyiminde (yukarıdaki örnekte ilk SELECT deyimi) okumalısınız.
  • Aralıklar her zaman kapalıdır. Yani uç noktaları her zaman aralığa dahil edilir. Sayısal olmayan sınırlar göz ardı edilecek (tanımlanmamış) aralığı oluştururken, NULL sınırlar aralığı süresiz olarak (sınırsız) genişletir.
  • Aralıklar çakışabilir ve ayrık değerler tüm eşleşen aralıklara bağlanır.

Yavaşça değişen boyut sorunlarını çözmek için genişletilmiş intervalmatch söz dizimini kullanma

Genişletilmiş intervalmatch söz dizimi, kaynak verilerde var olduğu bilinen yavaşça değişen boyutlar sorununu ele almak için kullanılabilir.

Örnek kod:

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;

nullinterpret deyimi, yalnızca bir tablo dosyasından veri okunurken gereklidir; bunun nedeni, eksik değerlerin NULL değerler yerine boş dizgeler olarak tanımlanmasıdır.

IntervalTable kaynağından verilerin yüklenmesi, şu tabloyla sonuçlanır:

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

nullasvalue deyimi, NULL değerlerin listelenen alanlara eşlenmesine olanak tanır.

previous ve order by kullanarak Key, FirstDate, LastDate öğelerini (öznitelik alanları) oluşturun; böylece bu anahtar tablo yerini almış olacağından, IntervalTable bırakılır.

Transact kaynağından verilerin yüklenmesi, şu tabloyla sonuçlanır:

Transact kaynağından yüklenen verilerle tablo
AnahtarAdTarihSatışlar
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

Öncesinde inner join öğesinin geldiği intervalmatch deyimi, aşağıdaki tabloyla sonuçlanacak şekilde, yukarıdaki anahtarı Transact tablosuna bağlanan bir yapay anahtar ile değiştirir:

Öncesinde inner join öğesinin geldiği intervalmatch deyimini içeren tablo
AnahtarTakımAdİlkTarihSonTarihTarihSatışlar
000110KuzeybatıSpengler Aaron-2011-01-202009-08-18100
000110KuzeybatıSpengler Aaron-2011-01-202009-12-25200
000110GüneybatıSpengler Aaron2011-01-21 2011-02-03300
000110GüneybatıSpengler Aaron2011-01-21 2011-05-05400
000120KuzeybatıBallard John 2013-01-052011-06-04500
000120GüneybatıBallard John2013-01-062013-03-042013-01-20600
000120GüneybatıBallard John2013-03-05 2013-03-10700
000120GüneybatıBallard John2013-03-05 2013-03-13800
000120GüneybatıBallard John2013-03-05 2013-09-21900

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız lütfen bize bildirin!