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

SAP Συναρτήσεις HANA SQL
SAP HANA Παρέχει παρακάτω SAP Λειτουργίες HANA-
- Συνάρτηση μετατροπής τύπου δεδομένων – Η συνάρτηση μετατροπής τύπου δεδομένων χρησιμοποιείται για τη μετατροπή ενός τύπου δεδομένων σε έναν άλλο. Ακολουθεί λίστα με τη συνάρτηση μετατροπής τύπου δεδομένων-π.χ. CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY κ.λπ.
- Λειτουργίες ημερομηνίας ώρας – Οι συναρτήσεις ημερομηνίας/ώρας χρησιμοποιούνται για τη μετατροπή ημερομηνίας/ώρας σε διαφορετική μορφή. Π.χ. – ADD_DAYS, ADD_MONTHS, ADD_SECOND, κ.λπ.
- Λειτουργίες πλήρους κειμένου – Οι συναρτήσεις πλήρους κειμένου χρησιμοποιούνται για αναζήτηση κειμένου. Π.χ. – SCORE κ.λπ.
- Λειτουργίες αριθμού - Οι αριθμητικές συναρτήσεις δέχονται μια αριθμητική τιμή ή μια συμβολοσειρά με αριθμητικούς χαρακτήρες ως είσοδο και επιστρέφουν αριθμητικές τιμές. Π.χ. – ABS, ROUND, POWER, κ.λπ.
- Λειτουργίες συμβολοσειράς - Οι συναρτήσεις συμβολοσειράς δέχονται μια συμβολοσειρά ως είσοδο, την επεξεργάζονται και επιστρέφουν τιμή ανάλογα με τη συνάρτηση. Π.χ. (ASCII, CHAR, CONCAT, κ.λπ.)
- Λειτουργίες παραθύρου - Οι συναρτήσεις παραθύρου επιτρέπουν στον χρήστη να διαιρέσει το σύνολο αποτελεσμάτων ενός ερωτήματος σε ομάδες γραμμών με το όνομα partition παραθύρου. Π.χ. RANK (), DENSE_RANK (), ROW_NUMBER (), κ.λπ.
- Διάφορες λειτουργίες- Υπάρχουν μερικές ακόμη λειτουργίες, οι οποίες χρησιμοποιούνται για διάφορες εργασίες. Π.χ. – 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.
