Aylık arşivler: Eylül 2017

sap design studio geomap basemap urls

Genel yakınlık (odaklanma), enlem ve boylam formatı:
/{z}/{x}/{y}

Sap Design Studio yakınlık (odaklanma), enlem ve boylam formatı:
/{LOD}/{X}/{Y}

Open Street Map format for Sap Design Studio
http://tile.openstreetmap.org/{LOD}/{X}/{Y}.png

Arc GIS Online ESRI
http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{LOD}/{X}/{Y}

Nokia HERE
http://1.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{LOD}/{X}/{Y}/256/png8?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg

Stamen Watercolor
http://tile.stamen.com/watercolor/{LOD}/{X}/{Y}.png

Stamen Toner
http://tile.stamen.com/toner/{LOD}/{X}/{Y}.png

Open Cycle Map
http://a.tile.opencyclemap.org/cycle/{LOD}/{X}/{Y}.png
http://a.tile.opencyclemap.org/transport/{LOD}/{X}/{Y}.png

Kaynak:
SCN Geo_Map Basemap URL

çoklu bağlantılı platform taşıma tecrübesi (multisource universe promotion experience)

Sap BO Platform 4.1 Service Pack 7 Patch 1 versiyonunda geliştirme (dev) ve canlı (prod) ortamları arasında multisource universe taşıması yapıldığında taşıma işi (promotion job) failure (başarısız) ile sonuçlanıyordu. Universe bağlı (dependent) Business Security Profile ve Data Security Profile lar ile birlikte taşındığında da Partial Success (kısmen başarılı) ile sonuçlanıyordu. Adaptive Job Server ların log seviyelerini yükseltip (set log level to high) job sunucusu loglarını kontrol ettiğimde aşağıdakine benzer bir ifade buldum.

object promoted update failed
error: com.businessobjects.mds.PublishingException Multisource connection can not be registered

Bu hata açıklamasını sap support portalda aradığımda 2045392 nolu sap notunu buldum.

Notta taşıma işi başarısız olsa da başaraılı bir şekilde taşıma yapıldığı yazıyor ve çoklu kaynaklı universe ü kullandığı bağlantılar (connections) ile taşınmasının denenemesini öneriyor.

Universe üzerinde çeşitli ekleme, güncelleme ve silme işlemleri yaparak taşıdığımda da yapılan değişikliklerin başarılı bir şekilde taşındığını gördüm.

Sap Note 2045392 – Promotion Status=Failure : Object Promoted. Update Failed. Error :com.businessobjects.mds.publishing.exception.PublishingException: Multisource connection can not be registered: xxxx

Symptom

While promoting a multi source universe the promotion job fails with the below error:- Resolution Status=Overwritten, Dependency Status=All the required dependencies are included., Commit Status=Commit attempted and failed., Promotion Status=Failure : Object Promoted. Update Failed. Error :com.businessobjects.mds.publishing.exception.PublishingException: Multisource connection can not be registered: Connection Name Environment

* SAP BusinessObjects Business Intelligence 4.0 SP06 Patch1
* Windows Server 2008
* Oracle 11G
* Supported Application server

Reproducing the Issue

1. Create a new promotion job and select a multisource universe
2. Select manage dependencies and uncheck the dependent connections.
3. Click ‘Apply and close’ and promote the job.
4. The promotion job fails with partial sucess and staus reflects the described error.
5. The same error is observed in BIAR-to-LIVE scenario.

Resolution

Even though the described error is observed in the promotion job status, the universe is successfully promoted in the destination environment and found to be working.

Promote the multi source universe along with the dependent connections to avoid the error in the promotion job status.

See Also

1814652 – Error occurs when migrating a multi source .unx universe from one environment to another using promotion management

Keywords

promote multisource universe connection cannot be registered BI 4.0 BI 4.1 publishing exception update failed com.businessobjects.mds.publishing.exception.PublishingException

sap bo koşullu dağıtım (conditional publication)

Sap BO ortamında rapor dağıtımı [http://ayhankargin.com/blog/?p=314] yaparken (publication) dağıtım yapılan tüm hedeflere her zaman sorgu sonucu veri gelmiyorsa, ve boş rapor içeriği olunca gönderim yapılması istenmiyorsa aşağıdaki yöntem ile bu sağlanabilir.

Dağıtımı yapılacak rapor A olsun. Dağıtım listesi B olsun. Dağıtımı yapılan A raporu ile dağıtım listesi olan B raporunun birleştirilme (join) alanı da C alanı olsun. Örnek olarak rapor sorguları aşağıdaki gibi olsun.

A rapor sorgusu:

select a.islem_sube, islem_tarih_saat, islem_tutar, islem_aciklama
from ozel_islem_listesi a
where a.tarih between trunc(sysdate-1) and trunc(sysdate)

B rapor sorgusu:

select b.islem_sube, b.sube_eposta
from islem_sube b

C alanı:

ozel_islem_listesi.islem_sube = islem_sube.islem_sube

Böyle bir dağıtımda bir şube için A raporundan her zaman veri gelmeyebilir. Amacımız da eğer A raporunda bir şube için veri gelmiyorsa B rapor dağıtımı listesinde de bu şubenin gelmemesi.

Bunun için B rapor sorgusunu aşağıdaki gibi bir hale getirirsek A raporunda gelmeyen sube B raporunda da gelmez.

B rapor sorgusu değiştirilmiş hali:

select b.islem_sube, b.sube_eposta
from islem_sube b
where b.islem_sube in (
    select a.islem_sube
    -- , islem_tarih_saat, islem_tutar, islem_aciklama
    from ozel_islem_listesi a
    where a.tarih between trunc(sysdate-1) and trunc(sysdate)
)

B rapor sorgusu Custom Sql, FreeHand Sql veya Result from Another Query gibi özellikler ile değiştirilebilir.

mHTML seçeneği ile rapor içeriğinin mail gövdesinde (body) gönderimi

sap bo webi rapor içeriğinin e-posta gövdesinde gönderimi

(sap bo web inteeligence sending report content in mail body)

Bazen iş birimleri raporların maile ek olarak (excel, pdf) değil de mailin içinde olmasını isteyebiliyorlar.

Sap BO ortamında rapor içeriğini e-posta gövdesinde (mail body) göndermek için:

* Rapor dağıtımı (publication) ile hedef (destination) mHTML seçilir.

* %SI_DOCUMENT_HTML_CONTENT% Yer işaretçisi (placeholder) mail gövdesinde kullanılır.

sap bo universe ve oracle birlikte kullanımı en iyi pratikleri (best practices)

Veri ambarında Sap BO universe lerinin bağlandığı veri tabanı (database) Oracle tercih edilmiş ise tabloların partition larını kullanmak sorgu performansları için çok kritik önemdedir. Partition lı tablolar çoğunlukla işlem (fact) tablolarıdır. İşlem tablolarınında hem günlük aktarım ile (etl ile) veri ambarına alınma hem de hatalı günler için tekrar çalıştıralabilme hem de sorgularken performanslı sorgulayabilmek için işlem tarihine göre günlük partiton ile oluşturmak çok faydalı olacaktır. (Veri miktarı çok fazla ise günlük range partition + hash sub partition da kullanılabilir.) Burada partition ı diğer tablolar ile join lerken de verimli kullanabilmek için tarih bilgisinin saat detayı olmadan partition lanması önemlidir.

Veri ambarlarında (data warehouse, dwh) genellikle takvim (calendar) tablosu bulunur. Takvim tablosunda her bir gün için bir kayıt bulunur ve o günün çeşitli özellikleri tabloda yer alır. Örneğin: Tarih, Yıl, Ay Numarası, HaftaiçiMi, HaftasonuMu, ResmiTatilMi gibi.

Bir universe te birden fazla işlem (fact) tablosu context ler yardımıyla kullanılabilir. İşlem tablolarının da partition larını günlük (saat detaysız bir kolon ile) yaptığımız için takvim tablosunun tarih kolonuyla (inner) join leyerek universe e koyarsak. Takvim tablosu üzerinden bir obje ile filtrelemeyi yaptığımızda işlem (fact) tablosunun sadece ilgili partition larına erişim sağlanmış olur. Böylece sorgularımız hızlı sonuç döndürür. BO kullanıcıları raporlarını hızlı bir şekilde alabilirler.

Ek olarak işlem (fact) tablosu üzerindeki işlem tarihi doğrudan filtrede kullanıldığında oracle tabloya partition kullanarak erişmeyebilir. Sebebi Sap BO tarih alanlar üzerinde filtreleme yapıldığında sorgunun where ifadesine tarih tipinde değil de string olarak yollamasındandır. Örneğin yukarıdaki tablolarımız için:

select count(islem_1_no)
from islem_1
where islem_tarihi between ‘16.01.2017 00:00:00’ and ‘28.02.2017 00:00:00’

Yukarıdaki gibi sql sorgusu üretildiği için Oracle string i tarih tipine (ya da islem_tarihi ni string e) çevirdiği için partition kullanarak tablo erişimi yapmaz. Doğrudan islem_tarihi üzerinde filtreleme yapılması için hazır filtre (predefined filter) oluşturulabilir.

islem_1.islem_tarihi between to_date( @Prompt(‘İşlem 1 Baş. Tarihi’,’D’,,Mono,Free,Not_Persistent,) ,’DD.MM.YYYY HH24:MI:SS’) and to_date( @Prompt(‘İşlem 1 Bit. Tarihi’,’D’,,Mono,Free,Not_Persistent,) ,’DD.MM.YYYY HH24:MI:SS’)

Hazır filtre ile istemlerden (prompt) gelen değerler tarih tipine yukarıdaki gibi çevirilerek islem tablosuna partition kullanılarak erişim yapılmış olur.

maskeli alanları fonksiyon ile maskelemek

Sap BO universe lerinde (platform, evren) görüntülenmesi kritik öneme sahip alanlar (örneğin: kart no, gsm no, vb.) sadece yetkili kişiler tarafından görüntülenmesi gerekir. Böyle bir durumda genel yaklaşım bu önemli alanların bir kısmının görüntülenebildiği maskeli obje ve sadece yetkililerin görebildiği maskesiz obje oluşturulur.

Örnek olarak gsm numarasının ilk ve son 4 hanesinin gösterilmesini sağlayan “Gsm No Maskeli” ve Gsm Numarasının tamamının görüntülenebildiği “Gsm No Maskesiz” alanı oluşturulabilir. Sonra da maskesiz alan sadece yetkili kullanıcılara Business Security Profile (veya Access Restriction) ile yetki yerilir.

Bu yöntemden daha sade, kolay ve basit olarak şöyle bir yöntem kullanılabilir. İlgili obje için yetkili personeller (siciller) bir tabloda tutulur. Sadece bir tane Gsm No alanı oluşturulur. Alanın içinde bir veritabanı fonksiyonuna @Variable(“BOUSER”) değişkeni gönderilerek eğer yetkili ise maskesiz hali eğer yetkisiz ise maskeli hali gösterilir.

case when obje_yetkisi(‘@Variable(‘BOUSER’)’) = ‘var’ then gsm_no else substr(gsm_no,1,4)||’***’||substr(gsm_no,8,4) end

sftp rapor hedefi için fingerprint (parmak izi) elde edilmesi

Sap BO BI Platformda Sftp (secure file transfer protocol) hedefine rapor çıktısı atılmak istendiğinde aşağıdaki hata alınıyorsa sebebi Sftp FingerPrint değeri girilmemiş olması ya da doğru girilmemiş olması olabilir.

Hata: connection error.[]: [CrystalEnterprise.Sftp]

Sftp fingerprint değeri aşağıdaki adımlar izlenerek elde edilebilir:

* Adaptive Job Server (lar)da Sftp hedefi aktifleştirilir.

* Sftp sunucusuna yazma, değiştirme, okuma yetkisi olan kullanıcı adı ve şifre temin edilir.

* Adaptive Job Server log seviyesi (log level) yüksek (high) olarak değiştirilir.

* Rapor sahte (herhangi bir, dummy) bir fingerprint ile çalıştırılır. (Örnekte: NEEDKEYHERE)

* Rapor tarihçesinde yukarıdaki hata alınır.

* Kısa bir süre sonra, hata Adaptive Job Server loglarına yazılır. (\SAP BusinessObjects Enterprise XI 4.0\logging klasöründe örneğin jobserver_BIPW08R2.AdaptiveJobServer_WebIJavaSchedulingService_CHILD0_cxx_trace.000001.glf şeklinde glf dosyasına)

* Girilen sahte fingerprint (NEEDKEYHERE) son değiştirilme tarihli Adaptive Job Server glf dosyasında aranır. (Veya kolay yöntem olarak Notepad++ gibi bir aracın klasörde ara [find in files] özelliği ile log klasörünün tamamında NEEDKEYHERE sahte fingerprint aranabilir.) Örnek log satırları aşağıdaki gibidir. Aranacak anahtar kelime olarak “Mis match in fingerprint” kullanılabilir. Mis match in fingerprint satırında beklenen ve gönderilen fingerprint değerleri yer alır.

|b3d9f00b-a005-6604-a9de-090aac54ed29|2015 06 22 11:54:55:844|-0700|Information| |==| | |jobserver_BIPW08R2.AdaptiveJobServer_WebIJavaSchedulingService_CHILD0|10992|10528|| |40|1|6|1|BIlaunchpad.WebApp|BIPW08R2:1220:50.3839:1
|.request|BIPW08R2:10992:25.5:1|DestinationWrapper.deliverFilesToDestination|localhost:10992:10528.2:1|CoOYy9dZCEPGkqtSymzBmvsefd||||||||||
|(.\destination_sftp.cpp:837) destination_sftp: exception caught while connecting to sftp server [10.160.202.74]. Details: [8a:1a:38:65:03:bd:d8:29:d2:aa:2d:55:94:c5:e2:9b:d9:8f:4c:81 is admin input.Mis match in fingerprint. i.e hashing server fingerPrint obtained from serverNEEDKEYHERE].

* Yukarıdaki örnekte istenen fingerprint 8a:1a:38:65:03:bd:d8:29:d2:aa:2d:55:94:c5:e2:9b:d9:8f:4c:81 elde edilmiş olur. Bu fingerprint ile rapor çıktıları sftp hedefine güvenli bir şekilde iletilmiş olur.

Not:

BO da kullanılan Fingerprint değeri Putty veya WinSCP istemcilerinde kullanılmaz.

Sap Business Objects (BO) ortamında sftp hedefine rapor çıktısı gönderimi 4.1 SP7 de gelmiştir.

Kaynak:

Sap Note 2183131 – How do you Schedule or Send a document to SSH File Transfer Protocol (SFTP) destination on SAP BusinessObjects BI Platform 4.1?