SAP HANA SQL Fonksiyonları: Türleri ve Örnekleri

⚡ Akıllı Özet

SAP HANA SQL Fonksiyonları, verileri uygulama katmanına taşımadan sorgu içindeki değerleri dönüştürür. Yedi kategori veri türü dönüştürme, tarih ve saat, tam metin, sayı, dize, pencere ve çeşitli işlemleri kapsar.

  • 🔄 Dönüştürme Fonksiyonları: CAST, TO_BIGINT, TO_ALPHANUM ve TO_BINARY, bir değeri bir veri türünden diğerine dönüştürür.
  • 📅 Tarih Saat Fonksiyonları: ADD_DAYS, ADD_MONTHS ve ADD_SECONDS komutları tarih ve saat değerlerini kaydırır veya yeniden biçimlendirir.
  • 🔍 Tam Metin İşlevleri: SCORE ve ilgili fonksiyonlar, metin araması sonucunda elde edilen sonuçları sıralar.
  • 🔢 Sayısal Fonksiyonlar: ABS, ROUND ve POWER fonksiyonları sayısal giriş kabul eder ve sayısal sonuç döndürür.
  • 🔤 Dize Fonksiyonları: ASCII, CHAR ve CONCAT fonksiyonları karakter girişini işler ve türetilmiş bir değer döndürür.
  • 🪟 Pencere Fonksiyonları: RANK, DENSE_RANK ve ROW_NUMBER, sonuç kümesini pencere bölümlerine ayırır.
  • 🧰 Çeşitli: CONVERT_CURRENCY ve CURRENT_SCHEMA, diğer altı grubun dışında kalan görevleri ele alır.

SAP HANA SQL fonksiyonları

SAP HANA SQL Fonksiyonları

SAP HANA aşağıdakileri sağlar SAP HANA İşlevleri-

  1. Veri Türü Dönüştürme İşlevi – Veri Türü dönüştürme işlevi, bir veri türünü diğerine dönüştürmek için kullanılır. Aşağıda Veri Türü Dönüştürme işlevinin listesi bulunmaktadır; örneğin CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY vb.
  2. Tarih Saat İşlevleri – Tarih ve saat fonksiyonları, tarih/saati farklı bir biçime dönüştürmek için kullanılır. Örnek: ADD_DAYS, ADD_MONTHS, ADD_SECOND, vb.
  3. Tam Metin İşlevleri – Tam metin arama fonksiyonları metin arama için kullanılır. Örnek: SCORE vb.
  4. Sayı İşlevleri – Sayı fonksiyonları, girdi olarak sayısal bir değer veya sayısal karakterler içeren bir dize alır ve sayısal değerler döndürür. Örnek: ABS, ROUND, POWER, vb.
  5. Dize İşlevleri – Dize fonksiyonları, girdi olarak bir dize alır, onu işler ve fonksiyona göre bir değer döndürür. Örnek: (ASCII, CHAR, CONCAT, vb.)
  6. Pencere İşlevleri – Pencere fonksiyonları, kullanıcının bir sorgunun sonuç kümesini pencere bölümü adı verilen satır gruplarına ayırmasına olanak tanır. Örnek: RANK(), DENSE_RANK(), ROW_NUMBER(), vb.
  7. Çeşitli Fonksiyon- Çeşitli işler için kullanılan birkaç fonksiyon daha var. Örn – CONVERT_CURRENCY, CURRENT_SCHEMA, vb.

Yukarıdaki her fonksiyon veritabanı motoru içinde değerlendirilir; bu nedenle mantığı bir fonksiyona yerleştirmek, satırları çekip uygulamada işlemekten neredeyse her zaman daha hızlıdır. Aşağıdaki örnekler, gerçek verilere dokunmadan bir ifadenin test edilebilmesi için var olan tek satırlı bir sistem tablosu olan DUMMY tablosunu kullanır.

Skalar, Toplu ve Pencere Fonksiyonları

Örneklerden önce, bir fonksiyonun sorguda nasıl davrandığını belirleyen bir ayrım vardır: kaç satır girer ve kaç satır çıkar.

Kategoriler Gelen satır sayısı : Giden satır sayısı GROUP BY gerekli mi? Örnekler
sayısal Bir sıra bir sıraya Yok hayır ÜST, YUVARLAK, BUGÜNE KADAR, DÖKÜM
toplam Birden çok satırı tek satıra Evet, eğer tüm set tek bir grup değilse. TOPLA, AVG, SAYI, MİN, MAKS
Pencere Birçok satırdan birçok satıra Hayır, onun yerine OVER kullanıyor. SIRALAMA, YOĞUN SIRALAMA, SATIR NUMARASI, GECİKME
tablo Sonuç kümesini döndürür. FROM yan tümcesinde kullanılır SERİ_OLUŞTURMA_TARİHİ

Pratik sonuç olarak, toplama işlemi ayrıntıları ortadan kaldırırken, pencere fonksiyonu ayrıntıları korur. Her çalışanı departman ortalamasıyla birlikte istemek için pencere fonksiyonuna ihtiyaç vardır, çünkü GROUP BY işlemi tek tek satırları tamamen kaldıracaktır.

ortak SAP Örneklerle HANA Fonksiyonları

Aşağıdaki ifadeler doğrudan SQL konsoluna yapıştırılabilir. Her biri yukarıdaki listeden bir kategoriyi göstermektedir.

1) Dize fonksiyonları. Bunlar karakter girdisi alır ve türetilmiş bir değer döndürür.

SELECT
  UPPER('sap hana')               AS UPPER_TEXT,
  LENGTH('SAP HANA')              AS TEXT_LENGTH,
  CONCAT('SAP ', 'HANA')         AS JOINED,
  SUBSTRING('SAP HANA', 5, 4)   AS PART,
  REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED,
  TRIM('  padded  ')             AS CLEANED
FROM DUMMY;

2) Sayı fonksiyonları. Yuvarlama davranışını test etmekte fayda var, çünkü ROUND ticari yuvarlama yöntemini kullanırken FLOOR ve CEIL her zaman tek yönde hareket eder.

SELECT
  ABS(-45.7)          AS ABSOLUTE_VALUE,
  ROUND(123.4567, 2) AS ROUNDED,
  FLOOR(9.9)          AS ROUNDED_DOWN,
  CEIL(9.1)           AS ROUNDED_UP,
  POWER(2, 10)       AS RAISED,
  MOD(17, 5)         AS REMAINDER
FROM DUMMY;

3) Tarih ve saat fonksiyonları. Bunlar, dönem raporlaması için en sık ihtiyaç duyulanlardır.

SELECT
  CURRENT_DATE                              AS TODAY,
  ADD_DAYS(CURRENT_DATE, 30)                AS IN_30_DAYS,
  ADD_MONTHS(CURRENT_DATE, -1)              AS LAST_MONTH,
  DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED,
  LAST_DAY(CURRENT_DATE)                    AS MONTH_END,
  WEEKDAY(CURRENT_DATE)                     AS DAY_INDEX
FROM DUMMY;

4) Dönüştürme fonksiyonları. Açık dönüştürme, WHERE yan tümcesini yavaşlatan sessiz tür dönüştürmeyi önler.

SELECT
  CAST('1234' AS INTEGER)               AS AS_NUMBER,
  TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT,
  TO_DECIMAL(1234.5678, 10, 2)         AS AS_DECIMAL
FROM DUMMY;

Tür davranışları ve her hedef türünün sınırları şu bölümde ele alınmıştır: SAP HANA veri tipleri.

Pencere Fonksiyonları Açıklaması

Pencere fonksiyonu, mevcut satırla ilgili bir dizi satır üzerinde, bunları birleştirmeden bir hesaplama gerçekleştirir. OVER yan tümcesi bu kümeyi tanımlar ve iki isteğe bağlı bölümü vardır: PARTITION BY verileri gruplara ayırır ve ORDER BY her grup içindeki sırayı sabitler.

SELECT
  DEPARTMENT,
  EMP_NAME,
  SALARY,
  ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM,
  RANK()       OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING,
  DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING,
  SUM(SALARY)  OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL
FROM DHK_SCHEMA.EMPLOYEE;

Üç sıralama fonksiyonu yalnızca değerler eşit olduğunda farklılık gösterir:

  • SATIR NUMARASI Beraberlik asla olmaz. İki özdeş maaş yine de keyfi olarak seçilen 1 ve 2 puanlarını alır.
  • RANK Eşit sayıda satıra aynı numara verilir ve ardından atlanır. 1 numaralı iki satırdan sonra 3 numaralı satır gelir.
  • DENSE_RANK Eşit sayıdaki satırlara aynı numarayı verir ve atlamaz. 1 numaralı iki satırın ardından 2 numaralı satır gelir.

ROW_NUMBER'ı tekrarlanan kayıtları kaldırmak için, RANK'ı rekabetçi sıralama için ve DENSE_RANK'ı dizinin kesintisiz kalması gerektiğinde kullanın. Bu işlevlerle birlikte kullanılan karşılaştırma ve mantıksal semboller aşağıdaki bölümde ele alınmıştır. SAP HANA operatörlerive ifade yapısı SAP HANA SQL'i.

SSS

DUMMY, yalnızca bir satır içeren bir sistem tablosudur. Bir SELECT sorgusunda herhangi bir gerçek tabloya referans vermeden bir ifadenin veya fonksiyonun değerlendirilmesine olanak tanır.

Her ikisi de eşit sayıdaki satırlara aynı numarayı verir. RANK daha sonra sonraki değerleri atlar, bu nedenle iki birinciden sonra üçüncü gelir. DENSE_RANK atlama yapmaz, bu nedenle iki birinciden sonra ikinci gelir.

Evet. Dönüşümü sade bir dille açıklamak, eşleşen fonksiyonu ve sözdizimini döndürür; bu da yüzlerce girdiden oluşan bir referans listesini taramaktan daha hızlıdır.

Genellikle. Filtrelenmiş bir sütunun etrafına sarılmış bir fonksiyon, verimli filtrelemeyi engeller ve yapay zeka, sütunun dokunulmadan kalması için koşulu yeniden yapılandırabilir. Yürütme planıyla doğrulayın.

Evet, ancak bunu sütuna uygulamak her satırda değerlendirme yapılmasını zorunlu kılar. Mümkün olan her yerde bunun yerine sabiti dönüştürün, böylece sütun yine de verimli bir şekilde filtrelenebilir.

Bu yazıyı şu şekilde özetleyin: