Aylık arşivler: Şubat 2015

sap bo idt universe (platform) outer join

SAP Business Objects’te filtreleme yaparken outer join’lerin bozulmasının (inner join’e dönüşmesinin) önüne geçmek için aşağıdaki çözüm yöntemleri uygulanabilir.

Çözüm 1 (Genel): aşağıdaki gibi tablolarımız ve universe tanımları olsun. Raporlarda da siparişler üzerinde çeşitli filtreler kullanılsa da her zaman müşterilerin tamamının listesi alınmak istensin.

sap_bo_idt_universe_outer_join_0

sap_bo_idt_universe_outer_join_1

SAP BO Information Design Tool’da (Bilgi Tasarım Aracında) “FILTER_IN_FROM” universe parametresi Yes olarak değiştirilirse outer join ile gidilen tablolar üzerindeki filtreler join’den önce uygulanır ve outer’lık bozulmaz. (Not: Örnekte veritabanı olarak mysql kullanılmıştır. Oracle gibi ansi olmayan sql sorguları da çalıştıran veritabanları için hem “ANSI92” universe parametresi Yes olarak değiştirilir hem de filter in from seçeneği Yes olarak seçilir.)

sap_bo_idt_universe_outer_join_2

sap_bo_idt_universe_outer_join_3

Filter in From = No:

sap_bo_idt_universe_outer_join_4

sap_bo_idt_universe_outer_join_5

Filter in From = Yes:

sap_bo_idt_universe_outer_join_6

sap_bo_idt_universe_outer_join_7

Çözüm 2 (Özel): Eğer outer gidilen tablo üzerindeki filtre sabit ise universe’te tabloyu türetilmiş tablo (derived table) olarak tanımlanabilir. Yukarıdaki durum için sipariş tablosuna sabit filtre konabilir.

sap_bo_idt_universe_outer_join_8

Çözüm 3 (Basit): Outer gidilen tablo üzerindeki filtreleri veya (or) boş ile birleştirmek. (Dikkat: 2 id’li müşteri yok.)

sap_bo_idt_universe_outer_join_9

sap_bo_idt_universe_outer_join_10

sap bo idt universe (platform) tuzaklar

SAP Business Objects Information Design Tool (Bilgi Tasarım Aracı) da “Multiple SQL statements for each measure” seçeneğinin amacı nedir?

sap_bo_idt_universe_tuzak_0

sap_bo_idt_universe_tuzak_1

Durum 1, Kanyon tuzağı (Chasm Trap): Yukarıdaki şekillerdeki gibi tablolarımız, ilişkileri (bir dimension tablonun iki farklı tabloya 1’e n ilişkide olduğu durumlar), verisi olsun ve bu üç tablo tek context’te yer alsın. Seçenek işaretli değil ise aşağıdaki objeleri (her tablodan measure kullanılan durumda) kullandığımız sorgu ve sonucu şöyle olur: [yanlış]

sap_bo_idt_universe_tuzak_2

sap_bo_idt_universe_tuzak_3

Seçenek işaretli ise yine aynı objeleri kullandığımız sorgu ve sonucu şöyle olur: [doğru]

sap_bo_idt_universe_tuzak_4

sap_bo_idt_universe_tuzak_5

sap_bo_idt_universe_tuzak_6

sap_bo_idt_universe_tuzak_7

Durum 2, Fan tuzağı (Fan Trap): Aşağıdaki şekillerdeki gibi tablolarımız, ilişkileri (art arda 1’e n ilişki olan durumlar) ve verisi olsun. Seçenek işaretli değil ise aşağıdaki objeleri (her tablodan measure kullanılan durumda) kullandığımız sorgu ve sonucu şöyle olur: [yanlış]

sap_bo_idt_universe_tuzak_8

sap_bo_idt_universe_tuzak_9

sap_bo_idt_universe_tuzak_10

sap_bo_idt_universe_tuzak_11

Seçenek işaretli ise yine aynı objeleri kullandığımız sorgu ve sonucu şöyle olur: [doğru]

sap_bo_idt_universe_tuzak_12

sap_bo_idt_universe_tuzak_13

sap_bo_idt_universe_tuzak_14

sap_bo_idt_universe_tuzak_15

“Multiple SQL statements for each measure” seçeneğin işaretli olması hatalı sonuçları engeller. Bu durumlar context’lerle çözülebilecek durumlar değildir. Dimension tablolar ile fact tablolar üzerindeki measure’ların tek sorguda hesaplanmaması gerektiği ile ilgilidir.

sap bo idt notlar

SAP Business Objects Information Design Tool (Bilgi Tasarım Aracı) notları:

sap_bo_idt_parameters_1

* JOIN_BY_SQL=Yes
Rapor için hazırlanan sorgularda kullanılan objeler en az iki farklı context’ten sonuç alınıp bunların birleştirilmesini (merge) gerektiriyorsa. Birleştirme işleminin veritabanına yaptırılmasını sağlar. No değeri (varsayılan) alırsa kullanılan context kadar sorgu BO’da birleştirilir. Çalışma yükünün bir kısmını BO’dan veritabanına aktarmak için tercih edilebilir.

sap_bo_idt_parameters_2

* END_SQL=” /* bouser: @Variable(‘BOUSER’) universe: @Variable(‘UNVNAME’) document: @Variable(‘DOCNAME’) */ ”
BO’dan veritabanına gönderilen sorgularda bu sorgunun hangi BO kullanıcısının hangi universe’ten (platform) objeler kullanarak hangi raporu hazırladığını sorgu içine yazdırılabilmesini sağlar. Denetim amaçlı kullanılabilir. Not: aynı ifade begin_sql parametresine yazıldığında hata alınmaktadır.

sap_bo_idt_measure_on_filter

* Measure (ölçüt) objeleri filtrede kullanıldıklarında “group by … having mesasure = … ” şeklinde sorgu oluşturulur. Measure objelerin sql ifadesinin where kısmında yer almasını sağlamak için o measure’ın sadece filtrede kullanılabilen dimension (boyut) objesini de oluşturup, measure’ın da sadece sonuçta kullanılabilmesi sağlanabilir.

sap_bo_idt_measure_on_result

* Information Design Tool data foundation (veri altyapısı) da tablolar arasındaki join çizgilerinin gösterimi (Window – Preferences – Information Design Tool – Data Foundation Editor – Appearance – Join Lines=Bent Lines) tan değiştirilebilir. Bent Lines tercih edildiğinde tablo ilişkileri en okunur şekilde gösterilir.

sap_bo_idt_join_display

* BO’dan Oracle veritabanına bağlanılıyorsa Oracle’ın sorguları paralel çalıştırabilmesinden yararlanabilmek için BO’dan gelen sorgulara varsayılan paralellik verilebilir ya da universe’te bir parallel objesi ( /*+parallel(16)*/ 1 as paralel ) tanımlanarak kullanıcıların bu objeyi sorgularında ilk sırada kullanmaları istenebilir.

sap_bo_idt_oracle_parallel

* Projection Function=Delegated
Projection function universe’teki measure’ların sql sorgu sonucu veritabanından rapora alındıktan sonra, measure objelerinin dimension objelerine göre ne işlem yapılacağını (aggregate function) ifade eder. Toplama ve saydırma işlemlerinde hesaplamalar doğrudan yapılabilir ancak tekil saydırma (count distinct) ve ortalama alma işlemlerinde hesaplama ağırlıklarını ya da tekilliklerini kaybetmemek gerekir. Delegated özelliği bu duruma çözüm üretir.

sap_bo_idt_projection_function_delegated

sap_bo_idt_projection_function_difference

Projection function delegated kullanmanın eksi bir yanı şudur: webi raporu içinde oluşturulan değişkenlerle delegated özelliklikli measure objeler birlikte kullanılamaz, delegated özellikli measure objelerle kullanılacak tüm dimension objelerin universe’te tanımlanmış olması gereklidir. Çünkü oluşturulan değişken ile ortalama almanın ağırlıkları, tekil saydırmanın tekillikleri kesin doğrulukta (oluşturulan değişken sql’e yansıtılamadığı için) hesaplanamaz.

toad for oracle kullanım

Toad yararlı bazı özellikleri:

toad_options

Sık kullanılan sorgu ifadeleri için kısayol kuralı oluşturma (auto replace): View – Toad Options – Editor – Behavior – Auto Replace

toad_auto_replace

Birden fazla sorguyu çalıştıabilmek için sorguları farklı oturumlarda çalıştırma (execute queries in threads): View – Toad Options – Oracle – Transactions – Execute queries in threads

toad_execute_queries_in_threads

Toad ile çok fazla miktarda veri tabloya aktarılmak (import table data) istendiğinde Use Array DML seçeneği ile çok hızlı birşekilde içe aktarım gerçekleştirilebilir. Bu durumda Toad tek insert ifadesinde birden çok satır değerini koyarak çalıştırır.

notepad++ kullanım

Notepad++’nın yararlı iki özelliği:

Çoklu satır yazma: alt+shift tuşlarına basılarak çoklu satırda yazma modu kullanılabilir.

notepad-plus-plus_coklu_satir_yazma

Makro: makrolar klavye hareketlerini kaydedip aynı hareketlerin isnildiği kadar çalıştırılmasına olanak sağlar. Birçok satırda uygulanmak istenilen değişiklik için klavye tuşlarıyla (home, end, backspace, delete, up, down, right, left, karakterler, sayılar) tüm satırlar için ortak bir değişiklik kuralı oluşturulabilirse makrolarla tüm satırlar kolayca değiştirilebilir.

notpad-plus-plus_makro