SAP Funciones SQL de HANA: Tipos y ejemplos

โšก Resumen inteligente

SAP Las funciones SQL de HANA transforman valores dentro de una consulta sin transferir los datos a la capa de aplicaciรณn. Siete categorรญas abarcan la conversiรณn de tipos de datos, fechas y horas, bรบsqueda de texto completo, nรบmeros, cadenas, ventanas y operaciones diversas.

  • ๐Ÿ”„ Funciones de conversiรณn: Las funciones CAST, TO_BIGINT, TO_ALPHANUM y TO_BINARY cambian un valor de un tipo de dato a otro.
  • ???? Funciones de fecha y hora: Las funciones ADD_DAYS, ADD_MONTHS y ADD_SECONDS modifican o reformatean los valores de fecha y hora.
  • ๐Ÿ” Funciones de texto completo: La funciรณn SCORE y otras funciones relacionadas clasifican los resultados devueltos por una bรบsqueda de texto.
  • ๐Ÿ”ข Funciones numรฉricas: Las funciones ABS, ROUND y POWER aceptan datos numรฉricos y devuelven un resultado numรฉrico.
  • ๐Ÿ”ค Funciones de cadena: Las funciones ASCII, CHAR y CONCAT procesan la entrada de caracteres y devuelven un valor derivado.
  • ๐ŸชŸ Funciones de la ventana: RANK, DENSE_RANK y ROW_NUMBER dividen un conjunto de resultados en particiones de ventana.
  • ๐Ÿงฐ Varios: CONVERT_CURRENCY y CURRENT_SCHEMA gestionan tareas que quedan fuera de los otros seis grupos.

SAP Funciones SQL de HANA

SAP Funciones SQL de HANA

SAP HANA ofrece lo siguiente: SAP Funciones de HANA

  1. Funciรณn de conversiรณn de tipo de datos โ€“ La funciรณn de conversiรณn de tipo de datos se utiliza para convertir un tipo de datos a otro. A continuaciรณn se muestra una lista de la funciรณn de conversiรณn de tipos de datos, p. CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY, etc.
  2. Funciones de fecha y hora โ€“ Las funciones de fecha y hora se utilizan para convertir fechas y horas a diferentes formatos. Por ejemplo: ADD_DAYS, ADD_MONTHS, ADD_SECOND, etc.
  3. Funciones de texto completo โ€“ La funciรณn de texto completo se utiliza para la bรบsqueda de texto. Por ejemplo: SCORE, etc.
  4. Funciones numรฉricas โ€“ Las funciones numรฉricas toman como entrada un valor numรฉrico o una cadena con caracteres numรฉricos y devuelven valores numรฉricos. Por ejemplo: ABS, REDONDEAR, POTENCIA, etc.
  5. Funciones de cadena โ€“ Las funciones de cadena toman una cadena como entrada, la procesan y devuelven un valor segรบn la funciรณn. Por ejemplo: (ASCII, CHAR, CONCAT, etc.).
  6. Funciones de ventana โ€“ Las funciones de ventana permiten al usuario dividir el conjunto de resultados de una consulta en grupos de filas denominados particiones de ventana. Por ejemplo: RANK(), DENSE_RANK(), ROW_NUMBER(), etc.
  7. Funciรณn Miscelรกnea- Existen algunas funciones mรกs que se utilizan para tareas diversas, como por ejemplo: CONVERT_CURRENCY, CURRENT_SCHEMA, etc.

Cada funciรณn anterior se evalรบa dentro del motor de la base de datos, por lo que insertar lรณgica en una funciรณn es casi siempre mรกs rรกpido que recuperar filas y procesarlas en una aplicaciรณn. Los ejemplos siguientes utilizan la tabla DUMMY, una tabla del sistema de una sola fila que existe รบnicamente para probar una expresiรณn sin acceder a datos reales.

Funciones escalares, agregadas y de ventana

Antes de los ejemplos, cabe destacar una distinciรณn que determina cรณmo se comporta una funciรณn en una consulta: cuรกntas filas se introducen y cuรกntas se obtienen como resultado.

Categorรญa Filas de entrada: filas de salida ยฟNecesita AGRUPAR POR? Ejemplos
Escalar Una fila a una fila No MAYรšSCULAS, REDONDAS, HASTA_LA_FECHA, CAST
Agregados Muchas filas en una sola fila Sรญ, a menos que todo el conjunto sea un solo grupo. SUMA, AVG, CONTEO, MรNIMO, MรXIMO
Ventana Muchas filas a muchas filas No, utiliza OVER en su lugar. RANGO, RANGO_DENSO, NรšMERO_DE_FILA, RETRASO
Tabla Devuelve un conjunto de resultados Utilizado en la clรกusula FROM FECHA_DE_GENERACIร“N_DE_LA_SERIE

La consecuencia prรกctica es que una agregaciรณn reduce los detalles, mientras que una funciรณn de ventana los conserva. Para consultar a cada empleado junto con el promedio de su departamento, se necesita una funciรณn de ventana, ya que una agrupaciรณn eliminarรญa por completo las filas individuales.

Preguntas frecuentes sobre bancarrota SAP Funciones de HANA con ejemplos

Las siguientes instrucciones se pueden pegar directamente en la consola SQL. Cada una ilustra una categorรญa de la lista anterior.

1) Funciones de cadena. Estas funciones toman como entrada un carรกcter y devuelven un valor derivado.

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) Funciones numรฉricas. Vale la pena probar el comportamiento de redondeo, ya que ROUND utiliza un redondeo comercial, mientras que FLOOR y CEIL siempre se mueven en una direcciรณn.

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) Funciones de fecha y hora. Estos son los que se necesitan con mayor frecuencia para la elaboraciรณn de informes periรณdicos.

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) Funciones de conversiรณn. La conversiรณn explรญcita evita la coerciรณn de tipos silenciosa que ralentiza una clรกusula 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;

El comportamiento de los tipos y los lรญmites de cada tipo objetivo se tratan en SAP Tipos de datos de HANA.

Explicaciรณn de las funciones de ventana

Una funciรณn de ventana realiza un cรกlculo sobre un conjunto de filas relacionadas con la fila actual, sin agruparlas. La clรกusula OVER define dicho conjunto y tiene dos partes opcionales: PARTITION BY divide los datos en grupos y ORDER BY fija el orden dentro de cada grupo.

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;

Las tres funciones de clasificaciรณn solo difieren cuando los valores empatan:

  • NUMERO DE FILA Nunca hay empate. Dos salarios idรฉnticos siguen recibiendo 1 y 2, elegidos arbitrariamente.
  • RANK A las filas empatadas se les asigna el mismo nรบmero y luego se saltan una. Dos filas en el nรบmero 1 van seguidas de 3.
  • RANGO_DENSO A las filas empatadas se les asigna el mismo nรบmero y no se saltan ninguna. Dos filas en el nรบmero 1 van seguidas de dos en el nรบmero 2.

Utilice ROW_NUMBER para eliminar duplicados, RANK para la clasificaciรณn al estilo de competiciรณn y DENSE_RANK cuando la secuencia deba permanecer ininterrumpida. Los sรญmbolos de comparaciรณn y lรณgicos utilizados junto con estas funciones se tratan en SAP Operadores de HANAy la estructura de la declaraciรณn en SAP HANA-SQL.

Preguntas Frecuentes

DUMMY es una tabla del sistema que contiene exactamente una fila. Permite evaluar una expresiรณn o funciรณn en una instrucciรณn SELECT sin hacer referencia a ninguna tabla real.

Ambos asignan el mismo nรบmero a las filas empatadas. RANK omite los siguientes valores, por lo que a dos primeros les sigue el tercero. DENSE_RANK no omite, por lo que a dos primeros les sigue el segundo.

Sรญ. Describir la transformaciรณn en lenguaje sencillo devuelve la funciรณn y la sintaxis correspondientes, lo cual es mรกs rรกpido que examinar una lista de referencias de varios cientos de entradas.

Con frecuencia, una funciรณn que envuelve una columna filtrada impide un filtrado eficiente, y la IA puede reestructurar el predicado para que la columna permanezca intacta. Confirme con el plan de ejecuciรณn.

Sรญ, pero aplicarlo a la columna obliga a evaluar cada fila. Siempre que sea posible, transforme la constante para que la columna pueda filtrarse de forma eficiente.

Resumir este post con: