INTEGRITY Dokumentace

Skalární funkce

Skalární funkce transformují jednotlivé hodnoty a lze je použít v SELECT, WHERE, GROUP BY, HAVING, a ORDER BY klauzulí.


Základní funkce

arrow_cast

Přetypuje výraz na konkrétní datový typ Arrow podle názvu zadaného řetězcem.

SELECT arrow_cast(total_amount, 'Float32') AS amount_f32
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 1

arrow_typeof

Vrací název datového typu Arrow daného výrazu.

SELECT arrow_typeof(total_amount) AS amount_type,
       arrow_typeof(customer_id) AS id_type
FROM my_namespace.sales_data
LIMIT 1

coalesce

Vrací první argument, který není NULL.

SELECT coalesce(department, region, 'unknown') AS first_val
FROM my_namespace.sales_data
LIMIT 5

get_field

Extrahuje pole ze struktury struct podle názvu.

SELECT get_field(named_struct('customer', customer_id, 'amount', total_amount), 'amount') AS amt
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 1

greatest

Vrací největší hodnotu ze seznamu argumentů.

SELECT greatest(total_amount, unit_price, quantity) AS max_val
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

least

Vrací nejmenší hodnotu ze seznamu argumentů.

SELECT least(total_amount, unit_price, quantity) AS min_val
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

named_struct

Vytvoří strukturu s pojmenovanými poli z dvojic klíč-hodnota.

SELECT named_struct('customer', customer_id, 'amount', total_amount) AS info
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 1

nullif

Vrátí NULL, pokud jsou oba argumenty stejné, jinak vrátí první argument.

SELECT nullif(department, 'Unknown') AS dept
FROM my_namespace.sales_data
LIMIT 5

nvl

Vrací druhý argument, pokud je první NULL. Alias: ifnull.

SELECT nvl(department, 'N/A') AS dept
FROM my_namespace.sales_data
LIMIT 5

nvl2

Vrací druhý argument, pokud první není NULL, jinak vrací třetí.

SELECT nvl2(department, 'has_dept', 'no_dept') AS dept_status
FROM my_namespace.sales_data
LIMIT 5

overlay

Nahradí podřetězec na zadané pozici.

SELECT customer_id,
       overlay(customer_id PLACING 'XX' FROM 1 FOR 2) AS masked
FROM my_namespace.sales_data
LIMIT 3

struct

Vytvoří strukturu s pozičními poli. Alias: row.

SELECT struct(customer_id, total_amount, region) AS info
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 1

Kryptografické funkce

digest

Vrátí hash řetězce pomocí zadaného algoritmu. Podporované algoritmy: md5, sha224, sha256, sha384, sha512.

SELECT customer_id, digest(customer_id, 'sha256') AS hash
FROM my_namespace.sales_data
LIMIT 1

md5

Vrací MD5 hash řetězce.

SELECT customer_id, md5(customer_id) AS hash
FROM my_namespace.sales_data
LIMIT 1

sha224

Vrací SHA-224 hash řetězce.

SELECT sha224(customer_id) AS hash
FROM my_namespace.sales_data
LIMIT 1

sha256

Vrací SHA-256 hash řetězce.

SELECT customer_id, sha256(customer_id) AS hash
FROM my_namespace.sales_data
LIMIT 1

sha384

Vrací SHA-384 hash řetězce.

SELECT sha384(customer_id) AS hash
FROM my_namespace.sales_data
LIMIT 1

sha512

Vrací SHA-512 hash řetězce.

SELECT sha512(customer_id) AS hash
FROM my_namespace.sales_data
LIMIT 1

Funkce pro datum a čas

current_date

Vrací dnešní datum. Alias: today.

SELECT current_date() AS today_date
FROM my_namespace.sales_data
LIMIT 1

current_time

Vrací aktuální čas. Přesnost je zaokrouhlena na intervaly 10 ms.

SELECT current_time() AS now_time
FROM my_namespace.sales_data
LIMIT 1

date_bin

Rozdělí časové razítko do intervalů pevné velikosti zarovnaných k počátku.

SELECT date_bin(INTERVAL '1 hour', timestamp, '2025-01-01T00:00:00Z') AS hour_bin,
       COUNT(*) AS cnt
FROM my_namespace.sales_data
GROUP BY date_bin(INTERVAL '1 hour', timestamp, '2025-01-01T00:00:00Z')
ORDER BY hour_bin
LIMIT 5

date_part

Extrahuje část z časového razítka. Alias: datepart.

Podporovaná pole: year, month, day, hour, minute, second, millisecond, microsecond, week, dow, doy, quarter, epoch.

SELECT date_part('hour', timestamp) AS hr,
       date_part('minute', timestamp) AS mn
FROM my_namespace.sales_data
LIMIT 1

date_trunc

Zkrátí časové razítko na zadanou jednotku. Alias: datetrunc.

Podporované jednotky: year, month, week, day, hour, minute, second.

SELECT date_trunc('day', timestamp) AS day_trunc, COUNT(*) AS cnt
FROM my_namespace.sales_data
GROUP BY date_trunc('day', timestamp)
ORDER BY day_trunc
LIMIT 5

from_unixtime

Převede Unix epochu (v sekundách) na časové razítko.

SELECT from_unixtime(1770000000) AS ts
FROM my_namespace.sales_data
LIMIT 1

make_date

Vytvoří datum ze složek rok, měsíc a den.

SELECT make_date(2026, 3, 1) AS d
FROM my_namespace.sales_data
LIMIT 1

make_time

Vytvoří čas ze složek hodina, minuta a sekunda.

SELECT make_time(14, 30, 0) AS t
FROM my_namespace.sales_data
LIMIT 1

now

Vrací aktuální časové razítko. Aliasy: current_timestamp.

Přesnost je kvantována na hranice 10 ms.

SELECT now() AS current_ts
FROM my_namespace.sales_data
LIMIT 1

to_char

Formátuje časové razítko jako řetězec pomocí formátu strftime. Alias: date_format.

SELECT to_char(timestamp, '%Y-%m-%d %H:%M') AS formatted
FROM my_namespace.sales_data
LIMIT 1

to_date

Převede řetězec na datum podle zadaného formátu.

SELECT to_date('2026-03-01', '%Y-%m-%d') AS d
FROM my_namespace.sales_data
LIMIT 1

to_local_time

Odstraní informace o časovém pásmu z časového razítka.

SELECT to_local_time(timestamp) AS local_ts
FROM my_namespace.sales_data
LIMIT 1

to_time

Převede řetězec na čas podle zadaného formátu.

SELECT to_time('14:30:00', '%H:%M:%S') AS t
FROM my_namespace.sales_data
LIMIT 1

to_timestamp

Převede řetězec na časové razítko podle zadaného formátu.

SELECT to_timestamp('2026-03-01 12:00:00', '%Y-%m-%d %H:%M:%S') AS ts
FROM my_namespace.sales_data
LIMIT 1

to_timestamp_micros

Převede mikrosekundy od Unix epochy na časové razítko.

SELECT to_timestamp_micros(1770000000000000) AS ts
FROM my_namespace.sales_data
LIMIT 1

to_timestamp_millis

Převede milisekundy od Unix epochy na časové razítko.

SELECT to_timestamp_millis(1770000000000) AS ts
FROM my_namespace.sales_data
LIMIT 1

to_timestamp_nanos

Převede nanosekundy od Unix epochy na časové razítko. U velkých hodnot může dojít k přetečení.

SELECT to_timestamp_nanos(1770000000000000000) AS ts
FROM my_namespace.sales_data
LIMIT 1

to_timestamp_seconds

Převede sekundy od Unix epochy na časové razítko.

SELECT to_timestamp_seconds(1770000000) AS ts
FROM my_namespace.sales_data
LIMIT 1

to_unixtime

Převede časové razítko na Unix epochu (v sekundách).

SELECT to_unixtime(timestamp) AS epoch
FROM my_namespace.sales_data
LIMIT 1

Kódovací funkce

decode

Dekóduje řetězec na binární data. Podporované kódování: base64.

SELECT decode('aGVsbG8=', 'base64') AS raw
FROM my_namespace.sales_data
LIMIT 1

encode

Zakóduje binární data do řetězce. Podporované kódování: base64.

SELECT encode(CAST('hello' AS BYTEA), 'base64') AS b64
FROM my_namespace.sales_data
LIMIT 1

Funkce JSON

json_as_text

Vrátí libovolnou hodnotu JSON jako text bez uvozovek.

SELECT json_as_text(doc, 'description') AS description
FROM my_namespace.sales_data
LIMIT 5

json_contains

Vrací true, pokud v datech JSON existuje zadaná cesta klíče.

SELECT customer_id, json_contains(doc, 'email') AS has_email
FROM my_namespace.sales_data
LIMIT 5

json_get

Extrahuje hodnotu podle cesty klíče. Vrací typ union, použijte typované varianty (json_get_str, json_get_int, atd.) pro předvídatelné výsledky.

SELECT json_get(doc, 'name') AS name
FROM my_namespace.sales_data
LIMIT 5

json_get_array

Vrátí pole JSON jako seznam řetězců.

SELECT json_get_array(doc, 'tags') AS tags
FROM my_namespace.sales_data
LIMIT 5

json_get_bool

Vrátí booleovskou hodnotu ze sloupce JSON podle cesty klíče.

SELECT json_get_bool(doc, 'active') AS is_active
FROM my_namespace.sales_data
LIMIT 5

json_get_float

Vrátí hodnotu typu float ze sloupce JSON podle cesty klíče.

SELECT json_get_float(doc, 'price') AS price
FROM my_namespace.sales_data
LIMIT 5

json_get_int

Vrátí celočíselnou hodnotu ze sloupce JSON podle cesty klíče.

SELECT json_get_int(doc, 'age') AS age
FROM my_namespace.sales_data
LIMIT 5

json_get_json

Vrátí vnořený JSON jako surový řetězec JSON.

SELECT json_get_json(doc, 'metadata') AS metadata
FROM my_namespace.sales_data
LIMIT 5

json_get_str

Vrátí řetězcovou hodnotu ze sloupce JSON podle cesty klíče.

SELECT json_get_str(doc, 'name') AS name
FROM my_namespace.sales_data
LIMIT 5

json_length

Vrací délku pole nebo objektu JSON.

SELECT json_length(doc, 'items') AS item_count
FROM my_namespace.sales_data
LIMIT 5

Matematické funkce

abs

Vrátí absolutní hodnotu čísla.

SELECT abs(total_amount - 500) AS distance_from_500
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

cbrt

Vrátí třetí odmocninu čísla.

SELECT cbrt(CAST(quantity AS DOUBLE)) AS cbrt_qty
FROM my_namespace.sales_data
WHERE quantity IS NOT NULL
LIMIT 5

ceil

Vrací nejmenší celé číslo větší nebo rovné danému číslu.

SELECT ceil(total_amount) AS rounded_up
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

degrees

Převede radiány na stupně.

SELECT degrees(pi()) AS full_circle
FROM my_namespace.sales_data
LIMIT 1

exp

Vrátí e umocněné na danou hodnotu.

SELECT exp(total_amount / 1000.0) AS exp_val
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

factorial

Vrací faktoriál nezáporného celého čísla.

SELECT factorial(5) AS fact5
FROM my_namespace.sales_data
LIMIT 1

floor

Vrací největší celé číslo menší nebo rovné danému číslu.

SELECT floor(total_amount) AS rounded_down
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

gcd

Vrací největšího společného dělitele dvou celých čísel.

SELECT gcd(12, 8) AS gcd_val
FROM my_namespace.sales_data
LIMIT 1

Hyperbolické funkce

sinh, cosh, tanh, asinh, acosh, atanh

SELECT sinh(1.0) AS sh, cosh(1.0) AS ch, tanh(1.0) AS th
FROM my_namespace.sales_data
LIMIT 1

isnan

Vrací true, pokud je hodnota NaN.

SELECT isnan(0.0 / 0.0) AS is_nan
FROM my_namespace.sales_data
LIMIT 1

iszero

Vrací true, pokud je hodnota nulová.

SELECT iszero(0.0) AS is_zero
FROM my_namespace.sales_data
LIMIT 1

lcm

Vrací nejmenší společný násobek dvou celých čísel.

SELECT lcm(4, 6) AS lcm_val
FROM my_namespace.sales_data
LIMIT 1

ln

Vrací přirozený logaritmus.

SELECT ln(total_amount) AS ln_val
FROM my_namespace.sales_data
WHERE total_amount > 0
LIMIT 5

protokol

Vrací logaritmus hodnoty při daném základu.

SELECT log(10.0, total_amount) AS log10_val
FROM my_namespace.sales_data
WHERE total_amount > 0
LIMIT 5

log2

Vrací logaritmus o základu 2.

SELECT log2(total_amount) AS log2_val
FROM my_namespace.sales_data
WHERE total_amount > 0
LIMIT 5

log10

Vrací logaritmus o základu 10.

SELECT log10(total_amount) AS log10_val
FROM my_namespace.sales_data
WHERE total_amount > 0
LIMIT 5

nanvl

Vrací první argument, pokud není NaN, jinak vrací druhý.

SELECT nanvl(0.0 / 0.0, -1.0) AS safe_val
FROM my_namespace.sales_data
LIMIT 1

pi

Vrací hodnotu čísla pí.

SELECT pi() AS pi_val
FROM my_namespace.sales_data
LIMIT 1

power

Umocní číslo na zadanou mocninu. Alias: pow.

SELECT power(total_amount, 2.0) AS amount_squared
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

radians

Převede stupně na radiány.

SELECT radians(180.0) AS pi_val
FROM my_namespace.sales_data
LIMIT 1

random

Vrátí náhodné číslo typu float mezi 0 a 1.

SELECT random() AS rnd
FROM my_namespace.sales_data
LIMIT 1

round

Zaokrouhlí číslo na zadaný počet desetinných míst.

SELECT round(total_amount, 2) AS rounded
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

signum

Vrací znaménko čísla: -1, 0 nebo 1.

SELECT signum(total_amount - 500) AS sign_val
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

sqrt

Vrátí druhou odmocninu čísla.

SELECT sqrt(CAST(quantity AS DOUBLE)) AS sqrt_qty
FROM my_namespace.sales_data
WHERE quantity IS NOT NULL
LIMIT 5

Goniometrické funkce

sin, cos, tan, asin, acos, atan, atan2, cot

SELECT sin(1.0) AS s, cos(1.0) AS c, tan(1.0) AS t,
       asin(0.5) AS as_val, acos(0.5) AS ac_val, atan(1.0) AS at_val
FROM my_namespace.sales_data
LIMIT 1

trunc

Zkrátí číslo na zadaný počet desetinných míst.

SELECT trunc(total_amount, 0) AS truncated
FROM my_namespace.sales_data
WHERE total_amount IS NOT NULL
LIMIT 5

Funkce pro regulární výrazy

regexp_count

Vrací počet shod vzoru v řetězci.

SELECT department, regexp_count(department, '[aeiou]') AS vowels
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

regexp_instr

Vrací pozici první shody vzoru.

SELECT department, regexp_instr(department, '[0-9]') AS digit_pos
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

regexp_like

Vrací true, pokud řetězec odpovídá vzoru regulárního výrazu.

SELECT department, regexp_like(department, '^[A-Z]{2}') AS starts_two_caps
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

regexp_match

Vrací první shodu vzoru jako pole.

SELECT department, regexp_match(department, '([A-Z][a-z]+)') AS first_word
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 3

regexp_replace

Nahradí shody se vzorem náhradním řetězcem.

SELECT department, regexp_replace(department, '[0-9]', '#') AS no_digits
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

Řetězcové funkce

ascii

Vrací ASCII kód prvního znaku.

SELECT customer_id, ascii(customer_id) AS first_code
FROM my_namespace.sales_data
LIMIT 3

bit_length

Vrací délku řetězce v bitech.

SELECT customer_id, bit_length(customer_id) AS bits
FROM my_namespace.sales_data
LIMIT 3

btrim

Odstraní znaky z obou stran řetězce. Alias: trim.

SELECT btrim('  hello  ') AS trimmed
FROM my_namespace.sales_data
LIMIT 1

chr

Vrací znak odpovídající danému kódu ASCII.

SELECT chr(65) AS letter
FROM my_namespace.sales_data
LIMIT 1

concat

Zřetězí dva nebo více řetězců.

SELECT concat(department, ' - ', region) AS label
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

concat_ws

Zřetězí řetězce pomocí oddělovače.

SELECT concat_ws('/', region, department) AS path
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

contains

Vrací true, pokud řetězec obsahuje podřetězec.

SELECT customer_id, contains(department, 'Sales') AS is_sales
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

ends_with

Vrací true, pokud řetězec končí danou příponou.

SELECT customer_id, ends_with(department, 'ing') AS ends_ing
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

levenshtein

Vrací Levenshteinovu editační vzdálenost mezi dvěma řetězci.

SELECT department, levenshtein(department, 'Engineering') AS dist
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

lower

Převede řetězec na malá písmena.

SELECT lower(department) AS dept_lower
FROM my_namespace.sales_data
LIMIT 5

ltrim

Odstraní znaky z levé strany řetězce.

SELECT ltrim('  hello') AS trimmed
FROM my_namespace.sales_data
LIMIT 1

octet_length

Vrátí délku řetězce v bajtech.

SELECT customer_id, octet_length(customer_id) AS bytes
FROM my_namespace.sales_data
LIMIT 3

repeat

Opakuje řetězec o zadaný počet opakování.

SELECT repeat(region, 2) AS doubled
FROM my_namespace.sales_data
LIMIT 3

nahradit

Nahradí všechny výskyty podřetězce.

SELECT department, replace(department, ' ', '_') AS underscored
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

rtrim

Odstraní znaky z pravé strany řetězce.

SELECT rtrim('hello  ') AS trimmed
FROM my_namespace.sales_data
LIMIT 1

split_part

Rozdělí řetězec podle oddělovače a vrátí zadanou část (číslováno od 1).

SELECT customer_id, split_part(customer_id, '-', 1) AS first_part
FROM my_namespace.sales_data
WHERE customer_id IS NOT NULL
LIMIT 5

starts_with

Vrací true, pokud řetězec začíná danou předponou.

SELECT customer_id, starts_with(department, 'Eng') AS is_eng
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

to_hex

Převede celé číslo na šestnáctkový řetězec.

SELECT to_hex(255) AS hex_ff
FROM my_namespace.sales_data
LIMIT 1

upper

Převede řetězec na velká písmena.

SELECT upper(region) AS region_upper
FROM my_namespace.sales_data
LIMIT 5

uuid

Vygeneruje náhodné UUID.

SELECT uuid() AS new_id
FROM my_namespace.sales_data
LIMIT 1

Funkce pro Unicode

character_length

Vrací počet znaků v řetězci. Aliasy: length, char_length.

SELECT department, character_length(department) AS len
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

find_in_set

Vrací pozici řetězce v seznamu hodnot oddělených čárkou.

SELECT find_in_set('North', 'South,North,East,West') AS pos
FROM my_namespace.sales_data
LIMIT 1

initcap

Převede první písmeno každého slova na velké.

SELECT initcap('hello world') AS capped
FROM my_namespace.sales_data
LIMIT 1

left

Vrací nejlevější n znaků řetězce.

SELECT department, left(department, 5) AS prefix
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

lpad

Zleva doplní řetězec na zadanou délku.

SELECT region, lpad(region, 15, '.') AS padded
FROM my_namespace.sales_data
LIMIT 5

reverse

Obrátí pořadí znaků v řetězci.

SELECT department, reverse(department) AS rev
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

Vrací nejpravější n znaků řetězce.

SELECT department, right(department, 3) AS suffix
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

rpad

Doplní řetězec zprava na zadanou délku.

SELECT region, rpad(region, 15, '.') AS padded
FROM my_namespace.sales_data
LIMIT 5

strpos

Vrací pozici podřetězce (indexováno od 1). Aliasy: instr, position.

SELECT department, strpos(department, 'a') AS a_pos
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

substr

Vrátí podřetězec začínající na zadané pozici o zadané délce. Alias: substring.

SELECT department, substr(department, 1, 8) AS first_eight
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5

substr_index

Vrací podřetězec před n-tý výskyt oddělovače. Alias: substring_index.

SELECT customer_id, substr_index(customer_id, '-', 1) AS first_segment
FROM my_namespace.sales_data
WHERE customer_id IS NOT NULL
LIMIT 5

translate

Nahradí znaky v řetězci na základě mapování.

SELECT department, translate(department, 'aeiou', '12345') AS coded
FROM my_namespace.sales_data
WHERE department IS NOT NULL
LIMIT 5