Genel
Pentaho Data Integration ile Eksik Günlerdeki Değerleri Doldurmak
Pentaho Data Integration ile Eksik Tarihleri Doldurma
Pentaho Data Integration ile çalışırken bazı durumlarda eksik günlerdeki değerleri doldurmak gibi bir ihtiyaç olabilir. Bununla ilgili küçük bir tutorial ile bunun nasıl yapılacağını anlatacağım.
Problemi Tanımlayalım
Öncelikle problemi tarif ederek başlayalım. Elimizde sıralı ama aralıklı tarihler içeren bir değer listesi olsun. En basit örnek olarak EVDS API'si üzerinden döviz kurlarını çektiğimizi düşünebiliriz. Bu durumda elimizdeki döviz kurları listesinde hafta sonu ve diğer tatil günleri için kur değeri olmayacaktır.
Bizim amacımız eksik kalan günleri, o günden önceki en son kur ile tamamlayarak eksik gün kalmamasını sağlamak.

Bu örnekte hafta sonları eksik kalan veri açıkça görünüyor.
Eksik Tarih Aralıklarını Tespit Etme
Öncelikle bir Analytic Query adımı ekleyerek eksik kalan aralıkların tespiti için zemin hazırlıyoruz.


Bu noktada öncelikli amacımız eksik kalan tarihler için aralıkları oluşturabilmek.
Aradaki Boş Gün Sayısını Hesaplama
Bir sonraki adımda aradaki boş gün sayılarını hesaplamamız gerekiyor. Bunun için JavaScript Step kullanıyoruz.


Bir önceki adımda Analytic Query ile ürettiğimiz date_end alanını kullanarak aradaki gün sayısını hesaplıyoruz ve gap diye isimlendirdiğimiz alana yazıyoruz.
Burada sonucun 1 çıkması arada boş gün olmadığını, 1'den büyük çıkması ise boş gün olduğunu gösteriyor. Bu yüzden en sonda -1 ile küçük bir düzeltme yapıyoruz.
Ayrıca scriptin üst tarafında, en son günden sonra gün olmadığı için de küçük bir düzeltmemiz var.
Eksik Satırları Clone Row ile Oluşturma
Şimdi de satırlarımızı çoğaltarak eksik satırlarımızı tamamlayacağız. Bunun için Clone Row adımını kullanıyoruz.


Burada püf noktası, bir önceki adımda hesapladığımız gap kadar clone üretmek. Böylece eksik günleri tamamlıyoruz.
Ancak dikkat ederseniz _date alanı eksik günler için kendisini tekrarlıyor ve bu alanda son bir düzeltme yapmak gerekiyor. Preview'deki 5, 6 ve 7 numaralı satırlarda bunu görebilirsiniz.
Bunu yapmak için de bu adımda day_num isimli bir değişken üretiyoruz.
Tarihleri Düzelterek Eksik Günleri Tamamlama
Son düzeltme için bir kez daha JavaScript Step kullanacağız.


_date alanına day_num kadar gün ekleyerek tarihlerdeki düzeltmeyi yapıyoruz ve eksik kalan günler bu şekilde tamamlanmış oluyor.






