SAP Συναρτήσεις HANA SQL: Τύποι & Παραδείγματα

⚡ Έξυπνη Σύνοψη

SAP Οι συναρτήσεις HANA SQL μετασχηματίζουν τιμές μέσα σε ένα ερώτημα χωρίς να μετακινούν δεδομένα στο επίπεδο εφαρμογής. Επτά κατηγορίες καλύπτουν τη μετατροπή τύπων δεδομένων, την ημερομηνία και ώρα, το πλήρες κείμενο, τον αριθμό, τη συμβολοσειρά, το παράθυρο και διάφορες λειτουργίες.

  • 🔄 Συναρτήσεις μετατροπής: Οι συναρτήσεις CAST, TO_BIGINT, TO_ALPHANUM και TO_BINARY αλλάζουν μια τιμή από έναν τύπο δεδομένων σε έναν άλλο.
  • 📅 Συναρτήσεις ημερομηνίας και ώρας: Τα ADD_DAYS, ADD_MONTHS και ADD_SECONDS μετατοπίζουν ή αναδιαμορφώνουν τις τιμές ημερομηνίας και ώρας.
  • 🔍 Συναρτήσεις πλήρους κειμένου: Το SCORE και οι σχετικές συναρτήσεις κατατάσσουν τα αποτελέσματα που επιστρέφονται από μια αναζήτηση κειμένου.
  • 🔢 Αριθμητικές συναρτήσεις: Οι εντολές ABS, ROUND και POWER δέχονται αριθμητική εισαγωγή και επιστρέφουν ένα αριθμητικό αποτέλεσμα.
  • 🔤 Συναρτήσεις συμβολοσειράς: Τα ASCII, CHAR και CONCAT επεξεργάζονται την εισαγωγή χαρακτήρων και επιστρέφουν μια παράγωγη τιμή.
  • 🪟 Λειτουργίες παραθύρου: Οι τιμές RANK, DENSE_RANK και ROW_NUMBER διαιρούν ένα σύνολο αποτελεσμάτων σε διαμερίσματα παραθύρων.
  • 🧰 Διάφορα: Οι CONVERT_CURRENCY και CURRENT_SCHEMA χειρίζονται εργασίες εκτός των άλλων έξι ομάδων.

SAP Συναρτήσεις HANA SQL

SAP Συναρτήσεις HANA SQL

SAP HANA Παρέχει παρακάτω SAP Λειτουργίες HANA-

  1. Συνάρτηση μετατροπής τύπου δεδομένων – Η συνάρτηση μετατροπής τύπου δεδομένων χρησιμοποιείται για τη μετατροπή ενός τύπου δεδομένων σε έναν άλλο. Ακολουθεί λίστα με τη συνάρτηση μετατροπής τύπου δεδομένων-π.χ. CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY κ.λπ.
  2. Λειτουργίες ημερομηνίας ώρας – Οι συναρτήσεις ημερομηνίας/ώρας χρησιμοποιούνται για τη μετατροπή ημερομηνίας/ώρας σε διαφορετική μορφή. Π.χ. – ADD_DAYS, ADD_MONTHS, ADD_SECOND, κ.λπ.
  3. Λειτουργίες πλήρους κειμένου – Οι συναρτήσεις πλήρους κειμένου χρησιμοποιούνται για αναζήτηση κειμένου. Π.χ. – SCORE κ.λπ.
  4. Λειτουργίες αριθμού - Οι αριθμητικές συναρτήσεις δέχονται μια αριθμητική τιμή ή μια συμβολοσειρά με αριθμητικούς χαρακτήρες ως είσοδο και επιστρέφουν αριθμητικές τιμές. Π.χ. – ABS, ROUND, POWER, κ.λπ.
  5. Λειτουργίες συμβολοσειράς - Οι συναρτήσεις συμβολοσειράς δέχονται μια συμβολοσειρά ως είσοδο, την επεξεργάζονται και επιστρέφουν τιμή ανάλογα με τη συνάρτηση. Π.χ. (ASCII, CHAR, CONCAT, κ.λπ.)
  6. Λειτουργίες παραθύρου - Οι συναρτήσεις παραθύρου επιτρέπουν στον χρήστη να διαιρέσει το σύνολο αποτελεσμάτων ενός ερωτήματος σε ομάδες γραμμών με το όνομα partition παραθύρου. Π.χ. RANK (), DENSE_RANK (), ROW_NUMBER (), κ.λπ.
  7. Διάφορες λειτουργίες- Υπάρχουν μερικές ακόμη λειτουργίες, οι οποίες χρησιμοποιούνται για διάφορες εργασίες. Π.χ. – CONVERT_CURRENCY, CURRENT_SCHEMA, κ.λπ.

Κάθε παραπάνω συνάρτηση αξιολογείται μέσα στη μηχανή βάσης δεδομένων, γι' αυτό και η εισαγωγή λογικής σε μια συνάρτηση είναι σχεδόν πάντα ταχύτερη από την ανάκτηση γραμμών και την επεξεργασία τους σε μια εφαρμογή. Τα παρακάτω παραδείγματα χρησιμοποιούν τον πίνακα DUMMY, έναν πίνακα συστήματος μίας γραμμής που υπάρχει αποκλειστικά, ώστε μια έκφραση να μπορεί να δοκιμαστεί χωρίς να αγγίξει πραγματικά δεδομένα.

Βαθμωτές, Συνολικές και Παραθυρικές Συναρτήσεις

Πριν από τα παραδείγματα, μια διάκριση καθορίζει τον τρόπο συμπεριφοράς μιας συνάρτησης σε ένα ερώτημα: πόσες γραμμές μπαίνουν και πόσες βγαίνουν.

Κατηγορία Σειρές μέσα : σειρές έξω Χρειάζεται ΟΜΑΔΟΠΟΙΗΣΗ ΜΕ; Παραδείγματα
Βαθμωτό μέγεθος Μία σειρά προς μία σειρά Οχι ΑΝΩ, ΣΤΡΟΓΓΥΛΟ, ΜΕΧΡΙ_ΗΜΕΡΟΜΗΝΙΑ, ΚΑΣΤ
Σύνολο Πολλές σειρές σε μία σειρά Ναι, εκτός αν ολόκληρο το σετ είναι μία ομάδα ΑΘΡΟΙΣΜΑ, AVG, ΠΛΗΘΟΣ, ΕΛΑΧΙΣΤΟ, ΜΕΓΙΣΤΟ
Παράθυρο Πολλές γραμμές σε πολλές γραμμές Όχι, χρησιμοποιεί το OVER αντ' αυτού ΚΑΤΑΤΑΞΗ, DENSE_RANK, ROW_NUMBER, ΥΣΤΕΡΗΣΗ
Τραπέζι Επιστρέφει ένα σύνολο αποτελεσμάτων Χρησιμοποιείται στην πρόταση FROM ΗΜΕΡΟΜΗΝΙΑ_ΓΕΝΝΗΣΗΣ_ΣΕΡΙΩΝ

Η πρακτική συνέπεια είναι ότι ένα συγκεντρωτικό σύνολο συμπτύσσει τη λεπτομέρεια, ενώ μια συνάρτηση παραθύρου τη διατηρεί. Η αναζήτηση κάθε υπαλλήλου μαζί με τον μέσο όρο του τμήματός του απαιτεί μια συνάρτηση παραθύρου, επειδή μια GROUP BY θα αφαιρούσε εντελώς τις μεμονωμένες γραμμές.

Κοινός SAP Συναρτήσεις HANA με παραδείγματα

Οι παρακάτω δηλώσεις μπορούν να επικολληθούν απευθείας στην κονσόλα SQL. Κάθε μία παρουσιάζει μία κατηγορία από την παραπάνω λίστα.

1) Συναρτήσεις συμβολοσειρών. Αυτά δέχονται εισαγωγή χαρακτήρων και επιστρέφουν μια παράγωγη τιμή.

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) Αριθμητικές συναρτήσεις. Η συμπεριφορά στρογγυλοποίησης αξίζει να δοκιμαστεί, επειδή το ROUND χρησιμοποιεί εμπορική στρογγυλοποίηση, ενώ το FLOOR και το CEIL κινούνται πάντα προς μία κατεύθυνση.

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) Συναρτήσεις ημερομηνίας και ώρας. Αυτά είναι που χρειάζονται συχνότερα για την αναφορά περιόδου.

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) Συναρτήσεις μετατροπής. Η ρητή μετατροπή αποτρέπει τον εξαναγκασμό τύπου silent που επιβραδύνει μια ρήτρα WHERE.

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;

Η συμπεριφορά του τύπου και τα όρια κάθε τύπου-στόχου καλύπτονται στο SAP Τύποι δεδομένων HANA.

Επεξήγηση λειτουργιών παραθύρου

Μια συνάρτηση παραθύρου εκτελεί έναν υπολογισμό σε ένα σύνολο γραμμών που σχετίζονται με την τρέχουσα γραμμή, χωρίς να τις συμπτύξει. Η πρόταση OVER ορίζει αυτό το σύνολο και έχει δύο προαιρετικά μέρη: Η πρόταση PARTITION BY διαιρεί τα δεδομένα σε ομάδες και η πρόταση ORDER BY καθορίζει την ακολουθία μέσα σε κάθε ομάδα.

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;

Οι τρεις συναρτήσεις κατάταξης διαφέρουν μόνο όταν οι τιμές είναι ισόπαλες:

  • ΣΕΙΡΑ_NUMBER δεν ισοφαρίζει ποτέ. Δύο ίδιοι μισθοί εξακολουθούν να λαμβάνουν το 1 και το 2, που επιλέγονται αυθαίρετα.
  • ΤΑΞΗ δίνει στις ισοβαθμισμένες σειρές τον ίδιο αριθμό και μετά παραλείπει. Δύο σειρές στο 1 ακολουθούνται από 3.
  • DENSE_RANK Δίνει στις ισόπαλες σειρές τον ίδιο αριθμό και δεν παραλείπει. Δύο σειρές στο 1 ακολουθούνται από 2.

Χρησιμοποιήστε το ROW_NUMBER για την κατάργηση διπλότυπων, το RANK για την τοποθέτηση σε στυλ διαγωνισμού και το DENSE_RANK όταν η ακολουθία πρέπει να παραμείνει αδιάσπαστη. Τα σύμβολα σύγκρισης και λογικής που χρησιμοποιούνται παράλληλα με αυτές τις συναρτήσεις καλύπτονται στο SAP Χειριστές HANAκαι δομή δηλώσεων σε SAP HANA SQL.

Συχνές Ερωτήσεις

Το DUMMY είναι ένας πίνακας συστήματος που περιέχει ακριβώς μία γραμμή. Επιτρέπει την αξιολόγηση μιας έκφρασης ή συνάρτησης σε μια πρόταση SELECT χωρίς αναφορά σε κανέναν πραγματικό πίνακα.

Και οι δύο δίνουν στις συνδεδεμένες γραμμές τον ίδιο αριθμό. Η συνάρτηση RANK στη συνέχεια παραλείπει τις επόμενες τιμές, επομένως δύο πρώτες ακολουθούνται από τρίτες. Η συνάρτηση DENSE_RANK δεν παραλείπει, επομένως δύο πρώτες ακολουθούνται από δεύτερες.

Ναι. Η περιγραφή του μετασχηματισμού σε απλή γλώσσα επιστρέφει τη συνάρτηση και τη σύνταξη που ταιριάζουν, κάτι που είναι ταχύτερο από τη σάρωση μιας λίστας αναφοράς αρκετών εκατοντάδων καταχωρήσεων.

Συχνά. Μια συνάρτηση που περιβάλλεται από μια φιλτραρισμένη στήλη αποτρέπει το αποτελεσματικό φιλτράρισμα και η Τεχνητή Νοημοσύνη μπορεί να αναδιαρθρώσει το κατηγόρημα έτσι ώστε η στήλη να παραμένει ανέπαφη. Επιβεβαιώστε με το σχέδιο εκτέλεσης.

Ναι, αλλά η εφαρμογή του στη στήλη επιβάλλει την αξιολόγηση σε κάθε γραμμή. Όπου είναι δυνατόν, μετασχηματίστε τη σταθερά, ώστε η στήλη να μπορεί να φιλτραριστεί αποτελεσματικά.

Συνοψίστε αυτήν την ανάρτηση με: