Aylık arşivler: Nisan 2015

sap bo olaylar (events)

SAP Business Objects’te zamanlanan (schedule) raporların ilgili işler bittikten sonra çalışmasını sağlamak amacıyla kullanılırlar. Flag (bayrak, 1 ve 0) mantığı ile çalışırlar. İş zekası (veri mabarı) alanında çoğunlukla ilgili raporun ilgili etl’den sonra çalışmasını sağlamak amacıyla kullanılırlar. SAP BO 4.0 ve üzeri versiyonlarında 3 event (olay) çeşidi vardır.

1) Custom Event: Event’in tetiklenmesi elle sağlanır. Sağ tık trigger event.

2) File Event: Bir dosyanın ilgi klasörde olup olmamasına göre (dosya lgili klasörde varsa 1 yoksa 0) tetiklenir. Raporların çalışması için gerekli etl işleri bittiğinde etl makinesi ilgili klasörde bir dosya oluşturabilir.

3) Schedule event: raporların sırayla çalıştırılması için de kullanılabilir, etl işlerinin bitip bitmediğini veritabanından kontrol etmek içinde kullanılabilir. Bir rapor çalışıp bittiğinde tetiklenir. Event’in tanımına göre raporun başarılı, başarısız ya da her iki durumda da tetiklenecek şekilde çalışabilir.

sap_bo_events_cmc

sap_bo_events_new_event

sap_bo_events_custom_event

sap_bo_events_file_event

sap_bo_events_schedule_event

Schedule event kullanarak etl loglarını veritabanından kontrol ederek ilgili raporları tetiklemek için aşağıdaki yol izlenebilir. Her 15 dakikada bir çalışmaya zamanlanmış ve sorgusu aşağıdaki gibi olan bir rapor hazırlanır. Rapor başarılı bittiğinde (schedule event property: success) ilgili event tetiklenir. Aşağıdaki sorgu eğer o gün için etl kaydı atılmamışsa başarısız olur (hata alır) atılmışsa da başarılı olur (hata almadan çalışır) ve ilgili olay (event) maksimum 15 dakika içinde tetiklenmiş olur. (Sorgu bugünün etl kaydı atılmadan başarısız, atıldıktan sonra başarılı olması şartıyla istenildiği gibi düzenlenebilir.)

select
case when cnt >= 1 then 1
     else 'FAILURE'
end success_or_failure -- hesaplanan bu alan için rapor objesinin veri tipi sayıdır (number)
from (
   select count(etl_name, log_date) cnt
   from etl.etl_log
   where trunc(log_date) = trunc(sysdate)
)

sap_bo_events_depending_events

Kaynaklar:
sap bo blog yazısı
sap bo forum sorusu

sap bo excel veri kaynağı (data source)

SAP Business Objects 4.1 (Web Intelligence) yeni özelliği olan excel dosyalarını veri kaynağı olarak kullanabilme, iş ihtiyaçlarını çözmek için çok değerli bir geliştirmedir.

Örnek iş ihtiyacı senaryo 1: Müşteri numaraları (200000 adet) temin edildi, bu müşterilerin son bir aydaki işlemleri incelenecek.
Örnek iş ihtiyacı senaryo 2: Mağazaların (440 adet) hedef ciroları ya da satış adetleri verildi, mağaza başarı oranları raporu hazırlanacak.

Yukarıdaki ve benzeri durumlarda yeni gelen bu özellikle rapora istenilen formatta bilgi girilebilmesi sağlanmış oldu. Bu gibi ihtiyaçlara çözüm olarak kullanılabilen yöntemler şunlardı:

In List: temin edilen id’ler sorgu oluşturulurken sorgunun filtre kısmında in list (listede) koşuluna eklenebilir. Bu yöntemin dezavantajı kullanılan veritabanı yönetim sistemine göre in list koşulundaki listenin sınırlı olması ve sorgunun performanssız çalışmasıdır. (Bu sınır veritabanlarında in ifadesinin içinde yazılabilecek maksimum sabit değer sınırıdır.) Sınırlar Oracle için 1000, Teradata için 1024, MySql için varsayılan 1048576 değişrilebilir, PostgreSql için 1000’dir.

Excel Yükleme: bu yöntemde BO ortamından bağımsız bir geliştirme yapılarak ilgili amaca hitap eden (örneğin: müşteri numaraları için bir yükleme ekranı, mağaza hedefleri için başka bir yükleme ekranı, …) yükleme ekranları hazırlanarak kullanıcının uzun listesi veritabanında bir tabloya alınır; tablo da universe’te (platformda) ilgili tablo ve sütun ile joinlenirdi. Böylece kullanıcıya kendi yüklemesini seçerek yüklediği listenin istediği başka bilgilerine erişebilmesi sağlanmış olurdu. Bu yöntemin olumsuz yönü ek geliştirme yapılması maliyetidir; ama performans için en iyi yöntem olmaya devam etmektedir.

sap_bo_excel_as_data_source

Excel veri kaynağı: Webi kullanıcılarına veri girişi imkanı sağlayarak daha serbest (gelişmiş, özgür, …) rapor hazırlayabilme olanağı getirdi. Ayrıca kullanıcı bu veriyi istediği zaman güncelleyip raporda değişimini gözlemleyebilir.

sap_bo_excel_data_source_comparison

Detaylı kullanım dokümantasyonu.

oracle sql not in yerine outer join

oracle_sql_join_instead_of_not_in_trick

Yukarıdaki gibi bir durumda amacımız: T1 tablosunda olup T2 tablosunda olmayan kayıtlara ulaşmak.

select t1.*
from t1
where t1.c1 not in (
    select t2.c1
    from t2
    --where t2.c1 is not null -- antiparantez in ifadesinin içinde null sonuç olursa dış sorgudan sonuç dönmez
)

Yerine daha performanslı olması için aşağıdaki ifade kullanılabilir.

select t1.*
from t1, t2
where t1.c1 = t2.c1(+)
and t2.c1 is null

sap bo dinamik rapor dağıtımı

SAP Business Objects’te dinamik rapor dağıtımı Publication ile yapılır. Amaç raporun ilgili kısmının ilgili kişilere iletilmesidir. Örneğin her bayinin sadece kendi satış bilgilerini görmesi isteniyorsa, her bayi için ayrı rapor hazırlanmaz, rapor içindeki ayırt edici sorgu objesi ya da değişkenin (variable) ile dinamik rapor dağıtımı yapılabilir.

sap_bo_publication_visualization

Dağıtımı yapılacak rapor ayırt edici değişken ile geliştirilir, ayrı bir raporda dağıtım listesi hazırlanır. Publication (dağıtım) oluşturulurken Dynamic Receipents (dinamik alıcılar) kısmında dağıtım listesi raporunun alanları belirlenir, Personalization (kişiselleştirme) kısmında da hangi alanlara göre eşleştirilme yapılacağının tanımı girilir ve Publication çalıştırılır.

sa_bo_publication_personalization

sap_bo_publication_dynamic_receipents

sap_bo_publication_destination

cameyo ile uygulama sanallaştırma

Taşınabilir uygulamalar yazımda portableapps’ten bahsetmiştim. Postableapps’ta sadece taşınabilir sürümü olan programların kullanabilmesine izin verilirken. Cameyo uygulama sanallaştırma programı ile istenen tüm uygulamalar (programlar) taşınabilir hale getirilebilir.

Cameyo ile uygulama sanallaştırma (taşınabilir uygulamalar oluşturma) şöyle yapılır:
Cameyo kurulumu yapılır. Cameyo’ya uygulama kurulumu yapılacağı bilgisi girilir. İstenen program gerçekten bilgisayara kurulur. Cameyo bu işlemler sonucunda uygulamanın sanallaştırılmış (taşınabilir) halini tek exe dosyası ile oluşturur. Bu exe dosyası ile sanallaşmış (taşınabilir) program kullanılır.

Önceki yazımda belittiğim gibi yönetici (admin) olunmayan bilgisayarlarda bu exe ile kurulum yapılmadan istenen programlar kullanılabilir. :))