Aylık arşivler: Ekim 2016

sap bo webi raporlama tecrübesi

Örneğin:
M müşteri tablosu olsun ve 500 bin kayıt içersin,
I işlem tablosu olsun, toplamda 100 milyon kayıt içersin ve A işlem kodundan 2 milyon kayıt içersin,
U universe’ü de bu tabloları içersin ve 1 milyon satır sayısı limiti olsun,
amacımız da A işlemini yapan müşteri numarası listesini almak olsun.

Bu durumda rapor sorgu panelinde Müşteri No objesi sonuç kısmında, İşlem Kodu (=’A’) objesini de filtrede kullandığımızda aşağıdaki gibi bir sorgu oluşturulur.

select m.musterino
from musteri m,
islem i
where m.musterino = i.musterino
and i.islemkodu = 'A'

Bu sorgu sonucu 2 milyon satır dönmesi gerekir ama universe satır limiti aşıldığı için 1 milyon sonuç döner ve webi tarafından parçalı sonuç (partial results) uyarısı verilir.

Mantıksal olarak (teknik olmayan bir şekilde) bakıldığında maksimum 500 bin müşteri numarası gelebilir ve satır limiti aşılmaz bir durum beklenir. Basit bakış açısıyla bu durum bug (hata) olarak tanımlanır; fakat teknik bakış açısıyla ilgili objeler ile doğru sorgu üretilmiş olur.

Böyle bir sonuç ile karşılaşmamak için de rapor panelinin sonuç kısmına Müşteri Adedi gibi gruplamayı sağlayacak bir ölçüt (measure) sürüklemek çözüm olabilir. Aşağıdaki gibi bir sorgu oluşturulur, universe satır limiti aşılmaz ve teknik ve mantıksal açıdan hedefe ulaşılmış olur.

select m.musterino, count(distinct m.musterino)
from musteri m,
islem i
where m.musterino = i.musterino
and i.islemkodu = 'A'
group by m.musterino

oracle geçersiz tarihleri bulma fonksiyonu

Oracle veri tabanında kirli ya da tutarsız verilerle çalışıldığında ilgili tarih alanının geçerli bir tarih değeri olup olmadığını kontrol eden basit bir kontrol fonksiyonu.

create or replace function sample_schema.f_invalid_date
(date_field in varchar2,format_field in varchar2) return number as
  v_d date;
begin
  v_d := to_date(date_field, format_field);
  return 0;
exception
  when others then
    return 1;
end;
/

Aynı yöntemle karakter olarak saklanmış (stored) sayıların da geçersiz olup olmadığı kontrol edilebilir.


create or replace function sample_schema.f_is_valid_number(p_num varchar2) return number
as
  r number;
begin
  r := to_number(p_num);
  return 1;
exception
  when others then return 0;
end;
/