SAP Fonctions SQL HANA : types et exemples

โšก Rรฉsumรฉ intelligent

SAP Les fonctions SQL de HANA transforment les valeurs d'une requรชte sans dรฉplacer les donnรฉes vers la couche applicative. Sept catรฉgories couvrent la conversion de types de donnรฉes, les dates et heures, la recherche plein texte, les nombres, les chaรฎnes de caractรจres, les fenรชtres et diverses autres opรฉrations.

  • (I.e. Fonctions de conversion : Les fonctions CAST, TO_BIGINT, TO_ALPHANUM et TO_BINARY permettent de convertir une valeur d'un type de donnรฉes ร  un autre.
  • ๐Ÿ“… Fonctions de date et d'heure : Les fonctions ADD_DAYS, ADD_MONTHS et ADD_SECONDS permettent de dรฉcaler ou de reformater les valeurs de date et d'heure.
  • ๐Ÿ” Fonctions de texte intรฉgral : SCORE et les fonctions associรฉes classent les rรฉsultats renvoyรฉs par une recherche textuelle.
  • (I.e. Fonctions numรฉriques : Les fonctions ABS, ROUND et POWER acceptent une entrรฉe numรฉrique et renvoient un rรฉsultat numรฉrique.
  • ๐Ÿ”ค Fonctions de chaรฎnes de caractรจres : Les fonctions ASCII, CHAR et CONCAT traitent les entrรฉes de caractรจres et renvoient une valeur dรฉrivรฉe.
  • ๐ŸชŸ Fonctions de la fenรชtre : RANK, DENSE_RANK et ROW_NUMBER divisent un ensemble de rรฉsultats en partitions de fenรชtre.
  • ๐Ÿงฐ Divers: CONVERT_CURRENCY et CURRENT_SCHEMA gรจrent des tรขches qui ne se dรฉroulent pas dans les six autres groupes.

SAP Fonctions SQL HANA

SAP Fonctions SQL HANA

SAP HANA fournit les รฉlรฉments suivants SAP Fonctions HANA-

  1. Fonction de conversion de type de donnรฉes โ€“ La fonction de conversion de type de donnรฉes est utilisรฉe pour convertir un type de donnรฉes en un autre. Vous trouverez ci-dessous la liste des fonctions de conversion de type de donnรฉes, par exemple CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY, etc.
  2. Fonctions date et heure โ€“ Les fonctions de date et d'heure permettent de convertir une date ou une heure dans un format diffรฉrent. Par exemple : ADD_DAYS, ADD_MONTHS, ADD_SECOND, etc.
  3. Fonctions de texte intรฉgral โ€“ La fonction de recherche plein texte est utilisรฉe pour la recherche textuelle. Par exemple : SCORE, etc.
  4. Fonctions numรฉriques โ€“ Les fonctions numรฉriques prennent en entrรฉe une valeur numรฉrique ou une chaรฎne de caractรจres numรฉriques et renvoient des valeurs numรฉriques. Ex. : ABS, ROUND, POWER, etc.
  5. Fonctions de chaรฎne โ€“ Les fonctions de traitement de chaรฎnes de caractรจres prennent une chaรฎne en entrรฉe, la traitent et renvoient une valeur en fonction de la fonction (par exemple : ASCII, CHAR, CONCAT, etc.).
  6. Fonctions de la fenรชtre โ€“ Les fonctions de fenรชtrage permettent ร  l'utilisateur de diviser le rรฉsultat d'une requรชte en groupes de lignes appelรฉs partitions de fenรชtre. Par exemple : RANK(), DENSE_RANK(), ROW_NUMBER(), etc.
  7. Fonction Diverse- Il existe d'autres fonctions qui sont utilisรฉes pour diverses tรขches. Par exemple โ€“ CONVERT_CURRENCY, CURRENT_SCHEMA, etc.

Chaque fonction ci-dessus est รฉvaluรฉe au sein du moteur de base de donnรฉes. C'est pourquoi l'exรฉcution de la logique dans une fonction est presque toujours plus rapide que l'extraction et le traitement des lignes dans une application. Les exemples ci-dessous utilisent la table DUMMY, une table systรจme ร  une seule ligne qui sert uniquement ร  tester une expression sans accรฉder aux donnรฉes rรฉelles.

Fonctions scalaires, d'agrรฉgation et de fenรชtre

Avant de passer aux exemples, une distinction dรฉtermine le comportement d'une fonction dans une requรชte : le nombre de lignes en entrรฉe et le nombre de lignes en sortie.

Catรฉgories Lignes entrantes : lignes sortantes Besoin de GROUP BY ? Exemples
Scalaire Une rangรฉe ร  une rangรฉe Non SUPร‰RIEUR, RONDE, ร€_DATE, DISTRIBUTION
Total Plusieurs rangรฉes pour une seule rangรฉe Oui, sauf si l'ensemble entier constitue un seul groupe. SOMME, AVG, NOMBRE, MIN, MAX
Vitrine Plusieurs rangรฉes ร  plusieurs rangรฉes Non, il utilise OVER ร  la place RANG, RANG_DENSE, NUMร‰RO_DE_LIGNE, RETARD
lampe de table Renvoie un ensemble de rรฉsultats Utilisรฉ dans la clause FROM DATE DE Gร‰Nร‰RATION DE LA Sร‰RIE

Concrรจtement, une fonction d'agrรฉgation masque les dรฉtails, tandis qu'une fonction de fenรชtre les prรฉserve. Demander la moyenne de chaque employรฉ et de son dรฉpartement nรฉcessite une fonction de fenรชtre, car un GROUP BY supprimerait complรจtement les lignes individuelles.

Commun SAP Fonctions HANA avec exemples

Les instructions ci-dessous peuvent รชtre collรฉes directement dans la console SQL. Chacune illustre une catรฉgorie de la liste ci-dessus.

1) Fonctions de chaรฎnes de caractรจres. Ces fonctions prennent en entrรฉe des caractรจres et renvoient une valeur dรฉrivรฉe.

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) Fonctions numรฉriques. Il est intรฉressant de tester le comportement d'arrondi, car ROUND utilise un arrondi commercial tandis que FLOOR et CEIL se dรฉplacent toujours dans une seule direction.

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) Fonctions de date et d'heure. Ce sont celles qui sont le plus souvent nรฉcessaires pour les rapports pรฉriodiques.

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) Fonctions de conversion. La conversion explicite empรชche la conversion de type silencieuse qui ralentit une clause 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;

Le comportement des types et les limites de chaque type cible sont abordรฉs dans SAP Types de donnรฉes HANA.

Explication des fonctions de fenรชtrage

Une fonction de fenรชtre effectue un calcul sur un ensemble de lignes liรฉes ร  la ligne courante, sans les fusionner. La clause OVER dรฉfinit cet ensemble et comporte deux parties optionnelles : PARTITION BY divise les donnรฉes en groupes, et ORDER BY fixe lโ€™ordre au sein de chaque groupe.

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;

Les trois fonctions de classement diffรจrent uniquement en cas d'รฉgalitรฉ :

  • NUMร‰RO_DE_LIGNE Il n'y a jamais d'รฉgalitรฉ. Deux salaires identiques reรงoivent tout de mรชme 1 et 2, choisis arbitrairement.
  • RANG Les lignes ร  รฉgalitรฉ se voient attribuer le mรชme numรฉro, puis on passe ร  la suivante. Deux lignes de numรฉro 1 sont suivies de lignes de numรฉro 3.
  • DENSE_RANK Attribue le mรชme numรฉro aux lignes ร  รฉgalitรฉ et ne saute aucune ligne. Deux lignes de numรฉro 1 sont suivies d'une ligne de numรฉro 2.

Utilisez ROW_NUMBER pour la dรฉduplication, RANK pour un classement de type compรฉtition et DENSE_RANK lorsque la sรฉquence doit rester continue. Les symboles de comparaison et logiques utilisรฉs avec ces fonctions sont traitรฉs dans [rรฉfรฉrence manquante]. SAP opรฉrateurs HANAet la structure des instructions dans SAP HANASQL.

FAQ

DUMMY est une table systรจme contenant une seule ligne. Elle permet d'รฉvaluer une expression ou une fonction dans une instruction SELECT sans faire rรฉfรฉrence ร  une table rรฉelle.

Les deux mรฉthodes attribuent le mรชme numรฉro aux lignes ex รฆquo. RANK ignore ensuite les valeurs suivantes : deux premiรจres sont suivies d'une troisiรจme. DENSE_RANK ne procรจde ร  aucun saut : deux premiรจres sont suivies d'une deuxiรจme.

Oui. Dรฉcrire la transformation en langage clair permet de retrouver la fonction et la syntaxe correspondantes, ce qui est plus rapide que de parcourir une liste de rรฉfรฉrence de plusieurs centaines d'entrรฉes.

Souvent. Une fonction appliquรฉe ร  une colonne filtrรฉe empรชche un filtrage efficace, et l'IA peut restructurer le prรฉdicat pour que la colonne reste intacte. Vรฉrifiez auprรจs du plan d'exรฉcution.

Oui, mais l'appliquer ร  la colonne oblige ร  l'รฉvaluer sur chaque ligne. Dans la mesure du possible, transformez plutรดt la constante afin que la colonne puisse toujours รชtre filtrรฉe efficacement.

Rรฉsumez cet article avec :