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ı:
- 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
}
- 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
}
- 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ü
}
- 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.