Todos los productos
Search
Centro de documentos

Hologres:Presto functions

Última actualización: Sep 05, 2026

A partir de la versión V3.1, Hologres es compatible con las funciones de Presto mediante la extensión hg_presto_funcs. Todas las funciones de este tema se ejecutan en el motor de ejecución Velox.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Una instancia de Hologres que ejecute la versión V3.1 o posterior.

  • Acceso de Superuser a la base de datos de destino.

Instalar la extensión

Ejecute la siguiente instrucción como Superuser. Ejecútela una vez por cada base de datos; si crea una base de datos nueva, vuelva a ejecutarla.

CREATE EXTENSION hg_presto_funcs;
Nota

La extensión se instala únicamente en el esquema hg_presto_funcs. No es posible especificar un esquema distinto.

Llamar funciones de Presto

Todas las funciones de Presto residen en el esquema hg_presto_funcs. Para llamarlas, agregue el prefijo al nombre de cada función o establezca la ruta de búsqueda una vez por sesión:

-- Option 1: prefix each call
SELECT hg_presto_funcs.array_cum_sum(b) FROM public.presto_test;

-- Option 2: set search path for the session
SET search_path = hg_presto_funcs;
SELECT array_cum_sum(b) FROM public.presto_test;
Importante

Estas funciones no admiten parámetros de entrada constantes. Todos los ejemplos de este tema usan referencias a columnas de la tabla de muestra que se muestra a continuación.

Tabla de muestra

Los ejemplos de este tema utilizan la siguiente tabla:

CREATE TABLE public.presto_test(
  a INT, b INT[], c TEXT, d TEXT, e TEXT, f TEXT, g TEXT,
  h TEXT, i TEXT, j TEXT, k TEXT, l TEXT, m TEXT, n TEXT,
  o TEXT, p TEXT, r TEXT, s TEXT, t FLOAT, u TEXT
);

INSERT INTO public.presto_test
  VALUES (
    3, ARRAY[1, 2, 3, 2], 'A', '10010', 'SGVsbG8gV29ybGQh',
    '\x00000001', '\x0000000000000001', '48656C6C6F',
    '\x40490FD0', '\x400921FB54442D18', '\x48656C6C6F',
    '"dwdw"', '[1,2,3,4,5,6]', '{"x": {"a": 1, "b": 2}}',
    'café', 'apple,banana,cherry', 'ABCDA', 'running',
    3.1415926, '[1.0,2.0]'
  );

Funciones compatibles

Las siguientes tablas enlistan todas las funciones compatibles, agrupadas por categoría. Cada entrada muestra la firma de la función junto con los tipos de parámetro y de retorno.

Funciones de arreglo

Firma de la función

Descripción

Ejemplo

Resultado

array_cum_sum(array(bigint)) → array(bigint)

Devuelve un arreglo donde la posición n contiene la suma de los primeros n elementos. Devuelve null en la posición n si alguno de los primeros n elementos es null.

SELECT array_cum_sum(b) FROM public.presto_test;

{1,3,6,8}

array_has_duplicates(array(T)) → boolean

Devuelve true si el arreglo contiene elementos duplicados.

SELECT array_has_duplicates(b) FROM public.presto_test;

t

array_join(array(T), varchar) → varchar

Concatena los elementos del arreglo en una cadena mediante el separador indicado.

SELECT array_join(b, ';') FROM public.presto_test;

1;2;3;2

remove_nulls(array(T)) → array(T)

Elimina los valores NULL de un arreglo.

SELECT remove_nulls(b) FROM public.presto_test;

{1,2,3,2}

trim_array(array(T), bigint) → array(T)

Elimina n elementos del final de un arreglo.

SELECT trim_array(b, 2) FROM public.presto_test;

{1,2}

Funciones bit a bit

Firma de la función

Descripción

Ejemplo

Resultado

bit_count(bigint, bigint) → bigint

Cuenta los bits activos (peso de Hamming) del valor dentro del ancho de bits especificado.

SELECT bit_count(a, 32) FROM public.presto_test;

2

bitwise_and(bigint, bigint) → bigint

Devuelve la operación AND bit a bit de dos enteros.

SELECT bitwise_and(a, 2) FROM public.presto_test;

2

bitwise_or(bigint, bigint) → bigint

Devuelve la operación OR bit a bit de dos enteros.

SELECT bitwise_or(a, 2) FROM public.presto_test;

3

bitwise_xor(bigint, bigint) → bigint

Devuelve la operación XOR bit a bit de dos enteros.

SELECT bitwise_xor(a, 2) FROM public.presto_test;

1

bitwise_not(bigint) → bigint

Devuelve la operación NOT bit a bit de un entero.

SELECT bitwise_not(a) FROM public.presto_test;

-4

bitwise_left_shift(bigint, bigint) → bigint

Desplaza el valor n bits hacia la izquierda.

SELECT bitwise_left_shift(a, 1) FROM public.presto_test;

6

bitwise_shift_left(bigint, bigint, bigint) → bigint

Desplaza el valor n bits hacia la izquierda dentro del ancho de bits especificado.

SELECT bitwise_shift_left(a, 1, 32) FROM public.presto_test;

6

bitwise_right_shift(bigint, bigint) → bigint

Desplaza el valor n bits hacia la derecha (desplazamiento lógico con relleno de ceros).

SELECT bitwise_right_shift(a, 1) FROM public.presto_test;

1

bitwise_logical_shift_right(bigint, bigint, bigint) → bigint

Desplaza el valor n bits hacia la derecha (lógico, con relleno de ceros) dentro del ancho de bits especificado.

SELECT bitwise_logical_shift_right(a, 1, 32) FROM public.presto_test;

1

bitwise_arithmetic_shift_right(bigint, bigint) → bigint

Desplaza el valor n bits hacia la derecha y conserva el bit de signo (desplazamiento aritmético a la derecha).

SELECT bitwise_arithmetic_shift_right(a, 1) FROM public.presto_test;

1

bitwise_right_shift_arithmetic(bigint, bigint) → bigint

Alias de bitwise_arithmetic_shift_right. Desplaza el valor n bits hacia la derecha y conserva el bit de signo.

SELECT bitwise_right_shift_arithmetic(a, 1) FROM public.presto_test;

1

Las funciones bitwise_right_shift y bitwise_logical_shift_right rellenan con ceros los bits liberados. Por su parte, bitwise_arithmetic_shift_right y bitwise_right_shift_arithmetic los rellenan con el bit de signo, por lo que resultan equivalentes para enteros negativos.

Funciones binarias y de hash

Para generar hashes de uso general, utilice xxhash64, ya que es mucho más rápida que crc32 y spooky_hash_v2_*, además de producir hashes de mejor calidad. Use las funciones hmac_* cuando necesite códigos de autenticación con clave. Limite el uso de crc32 a los casos donde requiera compatibilidad con sistemas que ya dependen de ella.

Firma de la función

Descripción

Ejemplo

Resultado

crc32(varbinary) → bigint

Calcula la suma de comprobación CRC32 de datos binarios.

SELECT crc32(bin(a)::bytea) FROM public.presto_test;

3596227959

xxhash64(varbinary) → varbinary

Calcula el hash xxHash64 de datos binarios y devuelve un resultado binario de 64 bits.

SELECT xxhash64(r::BYTEA) FROM public.presto_test;

\x616f621d4581935f

spooky_hash_v2_32(varbinary) → varbinary

Calcula el hash SpookyHashV2 de 32 bits de datos binarios.

SELECT spooky_hash_v2_32(r::BYTEA) FROM public.presto_test;

\x4a6ed4f7

spooky_hash_v2_64(varbinary) → varbinary

Calcula el hash SpookyHashV2 de 64 bits de datos binarios.

SELECT spooky_hash_v2_64(r::BYTEA) FROM public.presto_test;

\x2d89595e4a6ed4f7

hmac_md5(varbinary, varchar) → varbinary

Calcula un HMAC con MD5 y la clave indicada.

SELECT hmac_md5(k::BYTEA, 'secret_key') FROM public.presto_test;

\x52460d22ec7e402dc8c62aeda51ec920

hmac_sha1(varbinary, varchar) → varbinary

Calcula un HMAC con SHA-1 y la clave indicada.

SELECT hmac_sha1(k::BYTEA, 'secret_key') FROM public.presto_test;

\xf8b6b3ee753fe1d8052cf317b0b4606089c85b19

hmac_sha256(varbinary, varchar) → varbinary

Calcula un HMAC con SHA-256 y la clave indicada.

SELECT hmac_sha256(k::BYTEA, 'secret_key') FROM public.presto_test;

\x0f0d2e10ec2bdf21bbdf490fd103820089879277261e9aa53ce3f8ecfd46b687

hmac_sha512(varbinary, varchar) → varbinary

Calcula un HMAC con SHA-512 y la clave indicada.

SELECT hmac_sha512(k::BYTEA, 'secret_key') FROM public.presto_test;

\x99376d305f3c2e729e60eb1e096fc364b8564452c4089b509c5d0d6e63608a43f14643a82880f156bf7df5ce32ba6bc35e36980772f9199b1cf43793e9bbd545

sha1(varbinary) → varchar

Calcula el hash SHA-1 de datos binarios y lo devuelve como una cadena hexadecimal.

SELECT sha1(a::text::bytea) FROM public.presto_test;

77de68daecd823babbb58edb1c8e14d7106e83bb

from_base64(varchar) → varbinary

Decodifica una cadena codificada en Base64 estándar a formato binario.

SELECT from_base64(e) FROM public.presto_test;

\x48656c6c6f20576f726c6421

to_base64(varbinary) → varchar

Codifica datos binarios como una cadena Base64 estándar.

SELECT to_base64(r::BYTEA) FROM public.presto_test;

QUJDREE=

from_base64url(varchar) → varbinary

Decodifica una cadena codificada en Base64 segura para URL a formato binario.

SELECT from_base64url(e) FROM public.presto_test;

\x48656c6c6f20576f726c6421

to_base64url(varbinary) → varchar

Codifica datos binarios como una cadena Base64 segura para URL.

SELECT to_base64url(r::BYTEA) FROM public.presto_test;

QUJDREE=

from_hex(varchar) → varbinary

Decodifica una cadena hexadecimal a formato binario.

SELECT from_hex(h) FROM public.presto_test;

\x48656c6c6f

from_big_endian_32(varbinary) → bigint

Decodifica un valor binario big-endian de 32 bits en complemento a dos y lo convierte a bigint.

SELECT from_big_endian_32(f::BYTEA) FROM public.presto_test;

1

to_big_endian_32(bigint) → varbinary

Codifica un entero como un valor binario big-endian de 32 bits en complemento a dos.

SELECT to_big_endian_32(a) FROM public.presto_test;

\x00000003

from_big_endian_64(varbinary) → bigint

Decodifica un valor binario big-endian de 64 bits en complemento a dos y lo convierte a bigint.

SELECT from_big_endian_64(g::BYTEA) FROM public.presto_test;

1

to_big_endian_64(bigint) → varbinary

Codifica un entero como un valor binario big-endian de 64 bits en complemento a dos.

SELECT to_big_endian_64(a) FROM public.presto_test;

\x0000000000000003

from_ieee754_32(varbinary) → real

Decodifica un valor binario IEEE 754 big-endian de 32 bits a un número de punto flotante de precisión simple.

SELECT from_ieee754_32(i::BYTEA) FROM public.presto_test;

3.14159012

to_ieee754_32(real) → varbinary

Codifica un número de punto flotante de precisión simple como un valor binario IEEE 754 big-endian de 32 bits.

SELECT to_ieee754_32(a::REAL) FROM public.presto_test;

\x40400000

from_ieee754_64(varbinary) → double

Decodifica un valor binario IEEE 754 big-endian de 64 bits a un número de punto flotante de precisión doble.

SELECT from_ieee754_64(j::BYTEA) FROM public.presto_test;

3.141592653589793

to_ieee754_64(double) → varbinary

Codifica un número de punto flotante de precisión doble como un valor binario IEEE 754 big-endian de 64 bits.

SELECT to_ieee754_64(a::FLOAT) FROM public.presto_test;

\x4008000000000000

from_base(varchar, bigint) → bigint

Interpreta una cadena como un número en la base indicada y devuelve su valor decimal.

SELECT from_base(d, 2) FROM public.presto_test;

18

to_base(bigint, bigint) → varchar

Convierte un entero a su representación de cadena en la base indicada.

SELECT to_base(a, 2) FROM public.presto_test;

11

Funciones matemáticas y estadísticas

Matemáticas generales

Firma de la función

Descripción

Ejemplo

Resultado

clamp(double, double, double) → double

Limita un valor al rango [min, max]. Devuelve el valor si está dentro del rango o el límite más cercano en caso contrario.

SELECT clamp(a, 2, 9) FROM public.presto_test;

3

cosh(double) → double

Devuelve el coseno hiperbólico del valor.

SELECT cosh(a) FROM public.presto_test;

10.067661995777765

tanh(double) → double

Devuelve la tangente hiperbólica del valor.

SELECT tanh(a) FROM public.presto_test;

0.9950547536867305

log2(double) → double

Devuelve el logaritmo en base 2 del valor.

SELECT log2(a) FROM public.presto_test;

1.584962500721156

log10(double) → double

Devuelve el logaritmo en base 10 del valor.

SELECT log10(a) FROM public.presto_test;

0.47712125471966244

minus(double, double) → double

Devuelve la diferencia entre dos números (x − y).

SELECT minus(a, 1) FROM public.presto_test;

2

negate(double) → double

Devuelve la negación del valor.

SELECT negate(a) FROM public.presto_test;

-3

truncate(double, integer) → double

Trunca el valor a n decimales.

SELECT truncate(t, 2) FROM public.presto_test;

3.14

is_finite(double) → boolean

Devuelve true si el valor es finito.

SELECT is_finite(a) FROM public.presto_test;

t

is_infinite(double) → boolean

Devuelve true si el valor es infinito.

SELECT is_infinite(a) FROM public.presto_test;

f

is_nan(double) → boolean

Devuelve true si el valor no es un número (NaN).

SELECT is_nan(a) FROM public.presto_test;

f

secure_rand() → double

Devuelve un número aleatorio de tipo double criptográficamente seguro en el intervalo [0, 1).

SELECT secure_rand() FROM public.presto_test;

0.22077085443234523

secure_random() → double

Alias de secure_rand. Devuelve un número aleatorio de tipo double criptográficamente seguro en el intervalo [0, 1).

SELECT secure_random() FROM public.presto_test;

0.3414298654539425

Funciones de distribución acumulada (CDF)

Firma de la función

Descripción

Ejemplo

Resultado

beta_cdf(double, double, double) → double

Devuelve la función de distribución acumulada (CDF) de la distribución beta con los parámetros de forma indicados.

SELECT beta_cdf(2, a, 0.5) FROM public.presto_test;

0.6875

binomial_cdf(bigint, double, bigint) → double

Devuelve la CDF de la distribución binomial.

SELECT binomial_cdf(6, 0.5, a) FROM public.presto_test;

0.65625

cauchy_cdf(double, double, double) → double

Devuelve la CDF de la distribución de Cauchy.

SELECT cauchy_cdf(2, a, 0.5) FROM public.presto_test;

0.6024163823495667

chi_squared_cdf(double, double) → double

Devuelve la CDF de la distribución ji cuadrado.

SELECT chi_squared_cdf(a, 4) FROM public.presto_test;

0.7385358700508894

f_cdf(double, double, double) → double

Devuelve la CDF de la distribución F.

SELECT f_cdf(2, a, 0.5) FROM public.presto_test;

0.350480947161671

gamma_cdf(double, double, double) → double

Devuelve la CDF de la distribución gamma.

SELECT gamma_cdf(2, a, 0.5) FROM public.presto_test;

0.012437987627616913

laplace_cdf(double, double, double) → double

Devuelve la CDF de la distribución de Laplace.

SELECT laplace_cdf(0, 1, a) FROM public.presto_test;

0.9751064658160681

normal_cdf(double, double, double) → double

Devuelve la CDF de la distribución normal con la media y la desviación estándar indicadas.

SELECT normal_cdf(0, 1, a) FROM public.presto_test;

0.9986501019683699

poisson_cdf(double, bigint) → double

Devuelve la CDF de la distribución de Poisson.

SELECT poisson_cdf(1, a) FROM public.presto_test;

0.9810118431238462

weibull_cdf(double, double, double) → double

Devuelve la CDF de la distribución de Weibull.

SELECT weibull_cdf(2, a, 1.5) FROM public.presto_test;

0.22119921692859512

inverse_beta_cdf(double, double, double) → double

Devuelve la CDF inversa de la distribución beta.

SELECT inverse_beta_cdf(2, a, 0.6875) FROM public.presto_test;

0.5

inverse_cauchy_cdf(double, double, double) → double

Devuelve la CDF inversa de la distribución de Cauchy.

SELECT inverse_cauchy_cdf(2, a, 0.5) FROM public.presto_test;

2

inverse_laplace_cdf(double, double, double) → double

Devuelve la CDF inversa de la distribución de Laplace.

SELECT inverse_laplace_cdf(a, 1, 0.5) FROM public.presto_test;

3

inverse_normal_cdf(double, double, double) → double

Devuelve la CDF inversa de la distribución normal con la media y la desviación estándar indicadas.

SELECT inverse_normal_cdf(a, 1, 0.5) FROM public.presto_test;

3

inverse_weibull_cdf(double, double, double) → double

Devuelve la CDF inversa de la distribución de Weibull.

SELECT inverse_weibull_cdf(2, a, 0.5) FROM public.presto_test;

2.497663833473093

wilson_interval_lower(bigint, bigint, double) → double

Devuelve el límite inferior del intervalo de confianza de Wilson para un ensayo de Bernoulli con el nivel de confianza z indicado.

SELECT wilson_interval_lower(a, 20, 1.96) FROM public.presto_test;

0.05236779195949585

wilson_interval_upper(bigint, bigint, double) → double

Devuelve el límite superior del intervalo de confianza de Wilson para un ensayo de Bernoulli con el nivel de confianza z indicado.

SELECT wilson_interval_upper(a, 20, 1.96) FROM public.presto_test;

0.3604232958869574

Funciones de cadenas y Unicode

Estas funciones operan sobre puntos de código Unicode, no sobre caracteres visibles para el usuario (clústeres de grafemas). Las cadenas de entrada deben tener una codificación UTF-8 válida.

Firma de la función

Descripción

Ejemplo

Resultado

codepoint(varchar) → integer

Devuelve el punto de código Unicode de un solo carácter.

SELECT codepoint(c) FROM public.presto_test;

65

ends_with(varchar, varchar) → boolean

Devuelve true si la cadena termina con el sufijo indicado.

SELECT ends_with(concat(a, 'hologres'), 'gres') FROM public.presto_test;

t

hamming_distance(varchar, varchar) → bigint

Devuelve la distancia de Hamming entre dos cadenas, es decir, la cantidad de posiciones donde difieren los caracteres.

SELECT hamming_distance(e, 'SGVsBG7gV39ybGQh') FROM public.presto_test;

3

levenshtein_distance(varchar, varchar) → bigint

Devuelve la distancia de Levenshtein (distancia de edición) entre dos cadenas.

SELECT levenshtein(a::text, 'hologres') FROM public.presto_test;

8

normalize(varchar) → varchar

Transforma una cadena a su forma normalizada NFC.

SELECT normalize(o) FROM public.presto_test;

café

regexp_split(varchar, varchar) → array(varchar)

Divide una cadena mediante una expresión regular y devuelve las partes como un arreglo.

SELECT regexp_split(p, ',') FROM public.presto_test;

{"apple","banana","cherry"}

strrpos(varchar, varchar) → bigint

Devuelve la posición de la última aparición de una subcadena dentro de una cadena.

SELECT STRRPOS(r, 'A') FROM public.presto_test;

5

trim(varchar, varchar) → varchar

Elimina las apariciones de los caracteres especificados en ambos extremos de la cadena.

SELECT trim(r, 'A') FROM public.presto_test;

BCD

word_stem(varchar, varchar) → varchar

Devuelve la raíz de una palabra en el idioma especificado. Pase 'en' para inglés o 'zn' para chino.

SELECT word_stem(s, 'en') FROM public.presto_test;

run

Funciones de comparación

Firma de la función

Descripción

Ejemplo

Resultado

eq(T, T) → boolean

Devuelve true si los dos valores son iguales.

SELECT eq(c, 'A') FROM public.presto_test;

t

neq(T, T) → boolean

Devuelve true si los dos valores no son iguales.

SELECT neq('A', c) FROM public.presto_test;

f

gt(varchar, varchar) → boolean

Devuelve true si x > y.

SELECT gt('B', c) FROM public.presto_test;

t

gte(varchar, varchar) → boolean

Devuelve true si x ≥ y.

SELECT gte('A', c) FROM public.presto_test;

t

lt(varchar, varchar) → boolean

Devuelve true si x < y.

SELECT lt('ABCDA', c) FROM public.presto_test;

f

lte(varchar, varchar) → boolean

Devuelve true si x ≤ y.

SELECT lte('A', c) FROM public.presto_test;

t

Funciones JSON

Firma de la función

Descripción

Ejemplo

Resultado

is_json_scalar(varchar) → boolean

Devuelve true si el valor es un escalar JSON (no un objeto ni un arreglo).

SELECT is_json_scalar(l) FROM public.presto_test;

t

json_array_contains(varchar, T) → boolean

Devuelve true si el arreglo JSON contiene el valor indicado.

SELECT json_array_contains(u, 2) FROM public.presto_test;

t

json_extract_scalar(varchar, varchar) → varchar

Extrae un valor escalar de una cadena JSON en la ruta JSONPath indicada.

SELECT json_extract_scalar(m, '$[1]') FROM public.presto_test;

2

json_size(varchar, varchar) → bigint

Devuelve la cantidad de elementos del objeto o arreglo JSON ubicado en la ruta JSONPath indicada.

SELECT json_size(n, '$.x') FROM public.presto_test;

2

Funciones de URL

La extracción de URL sigue la sintaxis URI definida en la RFC 2396:

[protocol:][//host[:port]][path][?query][#fragment]

Los componentes extraídos no incluyen los separadores de la sintaxis URI, como : o ?.

Firma de la función

Descripción

Ejemplo

Resultado

url_decode(varchar) → varchar

Decodifica una cadena codificada para URL.

SELECT url_decode(url_encode(concat('www.', '中文', a, '.com'))) FROM public.presto_test;

www.中文3.com

url_encode(varchar) → varchar

Codifica una cadena para URL mediante el escape de caracteres especiales.

SELECT url_encode(concat('www.', '中文', a, '.com')) FROM public.presto_test;

www.%E4%B8%AD%E6%96%873.com

url_extract_fragment(varchar) → varchar

Extrae el identificador de fragmento de una URL.

SELECT url_extract_fragment(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

discount-section

url_extract_host(varchar) → varchar

Extrae el host de una URL.

SELECT url_extract_host(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

www.example.com

url_extract_parameter(varchar, varchar) → varchar

Extrae el valor del primer parámetro de consulta con el nombre indicado.

SELECT url_extract_parameter(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section'), 'color') FROM public.presto_test;

red

url_extract_path(varchar) → varchar

Extrae la ruta de una URL.

SELECT url_extract_path(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

/products/shirt

url_extract_port(varchar) → bigint

Extrae el número de puerto de una URL.

SELECT url_extract_port(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

3088

url_extract_protocol(varchar) → varchar

Extrae el protocolo de una URL.

SELECT url_extract_protocol(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

https

url_extract_query(varchar) → varchar

Extrae la cadena de consulta de una URL.

SELECT url_extract_query(concat('https://www.example.com:', a, '080/products/shirt?color=red&size=XL#discount-section')) FROM public.presto_test;

color=red&size=XL

Pasos siguientes