CDS’de Kullanılabilen Fonksiyonlar

SAP CDS (Core Data Services) içinde kullanılabilen fonksiyonlar String, Numeric, Date/Time ve Dönüştürme (Conversion) fonksiyonları olarak gruplandırılabilir. İşte bunların bazıları:

  1. Numeric (Sayısal) Fonksiyonlar
    Matematiksel işlemler yapmak için kullanılır.
  • ROUND( number, decimals ) → Sayıyı belirtilen basamağa yuvarlar.
  • CEIL( number ) → Sayıyı yukarı yuvarlar.
  • FLOOR( number ) → Sayıyı aşağı yuvarlar.
  • Div( number1, number2 ) → Yanındaki sayıya bölümü
  • Division( number1, number2, number3 ) → Yanındaki sayıya bölümü ve virgülden sonra kaç sayı geleceği
  • ABS( number ) → Sayının mutlak değerini döndürür.
  • MOD( number1, number2 ) → Bir sayının diğerine bölümünden kalanı verir.
  • SQRT( number ) → Sayının karekökünü hesaplar.
  • POWER( number, exponent ) → Bir sayının üssünü alır.

Aşağıdaki CDS örneği, ROUND, CEIL, FLOOR, ABS, MOD, SQRT gibi sayısal fonksiyonları kullanarak SFLIGHT tablosunun fiyat sütunu üzerinde çeşitli matematiksel işlemler yapar.

@AbapCatalog.sqlViewName: 'ZNUMERIC_FUNCS'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZCDS_NUMERIC_FUNCS as 
  select from sflight
{
    key carrid,
    key connid,
    key fldate,
    price,                          -- Orijinal fiyat
    round( price, 2 ) as rounded_price,  -- 2 basamaklı yuvarlama
    ceil( price ) as ceiled_price,       -- Yukarı yuvarlama
    floor( price ) as floored_price,     -- Aşağı yuvarlama
    abs( price - 1000 ) as abs_difference, -- Mutlak değer örneği
    mod( price, 500 ) as remainder,       -- Kalan hesaplama
    sqrt( price ) as sqrt_price           -- Karekök hesaplama
    price + 100 as add_price              -- Toplama işlemi
    price - 50 as sub_price               -- Çıkarma işlemi
    price * 2 as mul_price                -- Çarpma işlemi
}

  1. String (Metin) Fonksiyonları
    Metin işlemleri yapmak için kullanılır.

CONCAT( string1, string2 ) → İki string’i birleştirir.
CONCAT_WITH_SPACE( string1, string2 ) → İki string’i boşluklu birleştirir.
SUBSTRING( string, start, length ) → Metnin belirli bir bölümünü alır.
LENGTH( string ) → String uzunluğunu döndürür.
LOWER( string ) → String’i küçük harfe çevirir.
UPPER( string ) → String’i büyük harfe çevirir.
TRIM( string ) → Boşlukları kaldırır.
LEFT(string)→ Soldan karekter al.
RIGHT(string)→ Sağdan karekter al.
LPAD( string, length, pad_string ) → String’in solunu belirli bir karakterle tamamlar.
RPAD( string, length, pad_string ) → String’in sağına belirli bir karakter ekler.
LTRIM( string ) → Soldan eşleşen karekterleri sil. (Genellikle boşluk.)
RTRIM( string ) → Sağdan eşleşen karekterleri sil. (Genellikle boşluk.)

CONCAT, SUBSTRING, UPPER, LOWER, LENGTH, TRIM, LPAD, RPAD gibi string işlemleri içeren aşağıdaki örneği inceleyebilirsiniz.

@AbapCatalog.sqlViewName: 'ZCDS_STRING_FUNCS'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZCDS_STRING_FUNCS as 
  select from scarr
{
    key carrid,                      -- Havayolu ID'si
    carrname,                        -- Havayolu Adı
    concat( carrid, ' - ', carrname ) as full_name,  -- String birleştirme
    substring( carrname, 1, 5 ) as short_name,       -- İlk 5 karakteri al
    upper( carrname ) as uppercase_name,            -- Büyük harfe çevir
    lower( carrname ) as lowercase_name,            -- Küçük harfe çevir
    length( carrname ) as name_length,              -- Uzunluğu hesapla
    trim( carrname ) as trimmed_name,               -- Boşlukları kaldır
    lpad( carrid, 5, '0' ) as padded_carrid,        -- Soldan '0' ekleyerek 5 karakter yap
    rpad( carrid, 5, 'X' ) as rpad_carrid           -- Sağdan 'X' ekleyerek 5 karakter yap
}
  1. Date/Time (Tarih ve Zaman) Fonksiyonları
    Tarih ve saat işlemleri yapmak için kullanılır.

CURRENT_DATE → Geçerli tarihi döndürür.
CURRENT_TIME → Geçerli saati döndürür.
CURRENT_TIMESTAMP → Geçerli tarih ve saat bilgisini döndürür.
DAYS_BETWEEN( date1, date2 ) → İki tarih arasındaki gün sayısını hesaplar.
ADD_DAYS( date, days ) → Belirtilen gün kadar ekleme yapar.
ADD_YEARS( date, years ) → Belirtilen yıl kadar ekleme yapar.
EXTRACT( part FROM date ) → Yıl, ay, gün gibi bilgileri ayıklar (örneğin, EXTRACT( YEAR FROM fldate )).

CURRENT_DATE, CURRENT_TIME, DAYS_BETWEEN, ADD_DAYS, ADD_YEARS, EXTRACT gibi tarih işlemlerini inceleyen aşağıdaki örneği inceleyebilirsiniz.

@AbapCatalog.sqlViewName: 'ZCDS_DATE_FUNCS'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZCDS_DATE_FUNCS as 
  select from sflight
{
    key carrid,                          -- Havayolu ID'si
    key connid,                          -- Uçuş Numarası
    key fldate,                          -- Uçuş Tarihi
    current_date as today_date,          -- Bugünün tarihi
    current_time as now_time,            -- Şu anki saat
    days_between( fldate, current_date ) as days_until_flight,  -- Uçuşa kalan gün sayısı
    add_days( fldate, 30 ) as next_month_flight,   -- 30 gün ekleyerek yeni tarih oluşturma
    add_years( fldate, 1 ) as next_year_flight,    -- 1 yıl ekleyerek yeni tarih oluşturma
    extract( year from fldate ) as flight_year,    -- Uçuşun yılı
    extract( month from fldate ) as flight_month,  -- Uçuşun ayı
    extract( day from fldate ) as flight_day       -- Uçuşun günü
}
  1. Conversion (Dönüştürme) Fonksiyonları
    Veri türleri arasında dönüşüm yapmak için kullanılır.

CAST( value AS target_type ) → Değerin veri tipini değiştirir (örneğin, CAST( price AS STRING )).
TO_DECIMAL( value, precision, scale ) → Değeri ondalık sayıya çevirir.
TO_INTEGER( value ) → Değeri tamsayıya çevirir.
TO_VARCHAR( value ) → Değeri string (metin) türüne çevirir.

CAST, TO_INTEGER, TO_DECIMAL, TO_VARCHAR gibi veri türleri arasında dönüşüm yapan fonksiyon örneklerini aşağıdaki örnekten inceleyebilirsiniz.

@AbapCatalog.sqlViewName: 'ZCDS_CONV_FUNCS'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZCDS_CONV_FUNCS as 
  select from sflight
{
    key carrid,                                -- Havayolu ID'si
    key connid,                                -- Uçuş Numarası
    key fldate,                                -- Uçuş Tarihi
    price,                                     -- Orijinal fiyat (Decimal)

    cast( price as varchar(10) ) as price_text,  -- Fiyatı metne çevir (String)
    to_integer( price ) as price_integer,        -- Fiyatı tam sayıya çevir
    to_decimal( price, 10, 2 ) as price_decimal, -- Fiyatı 10 basamaklı 2 ondalıklı decimal değere çevir
    to_varchar( fldate ) as flight_date_text,    -- Tarihi metne çevir
    cast( '20240224' as abap.dats ) as fixed_date  -- Sabit tarih string’ini gerçek tarih formatına çevir
}

5.Aggregate Fonksiyonları
Aggregate fonksiyonları, bir grup veri üzerinde hesaplamalar yaparak tek bir değer döndüren fonksiyonlardır. Genellikle SUM, AVG, MIN, MAX, COUNT gibi fonksiyonlar kullanılır. CDS içinde GROUP BY ifadesiyle birlikte kullanılarak, belirli bir gruba göre toplama işlemleri yapılabilir.

SUM( column ) → Toplamı hesaplar.
AVG( column ) → Ortalama hesaplar.
MIN( column ) → En küçük değeri döndürür.
MAX( column ) → En büyük değeri döndürür.
COUNT( column ) → Belirli bir sütundaki kayıt sayısını döndürür.
COUNT(*) → Tüm kayıtları sayar.

@AbapCatalog.sqlViewName: 'ZCDS_AGG_FUNCS'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view ZCDS_AGG_FUNCS as 
  select from sflight
{
    key carrid,                             -- Havayolu ID'si
    count(*) as total_flights,              -- Toplam uçuş sayısı
    count(distinct price) as total_flights, -- Kaç farklı bilet fiyatı varsa onun sayısı
    avg( price ) as avg_price,              -- Ortalama bilet fiyatı
    sum( price ) as total_revenue,          -- Toplam bilet geliri
    min( price ) as min_price,              -- En düşük bilet fiyatı
    max( price ) as max_price               -- En yüksek bilet fiyatı
}
group by carrid

Bu fonksiyonlar, CDS View’ler içinde sorgular oluştururken veri manipülasyonu için oldukça faydalıdır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir