Features and Capabilities
Databend is an open-source alternative to Snowflake, so we need a page to introduce the differences between Databend and Snowflake.
Feel free to contribute if you notice any omissions.
Databend and Snowflake Functions Comparison
Mathematical Functions
Databend Function
Snowflake Function
ABS(x)
ABS(x)
ACOS(x)
ACOS(x)
ASIN(x)
ASIN(x)
ATAN(x)
ATAN(x)
ATAN2(y, x)
ATAN2(y, x)
CEIL(x)
CEIL(x)
CEILING(x)
CEILING(x)
COS(x)
COS(x)
DEGREES(x)
DEGREES(x)
EXP(x)
EXP(x)
FLOOR(x)
FLOOR(x)
LN(x)
LN(x)
LOG(x)
LOG(x)
LOG10(x)
LOG10(x)
LOG2(x)
LOG2(x)
PI()
PI()
POW(x, y)
POW(x, y)
POWER(x, y)
POWER(x, y)
RADIANS(x)
RADIANS(x)
RAND()
RAND()
ROUND(x, d)
ROUND(x, d)
SIGN(x)
SIGN(x)
SIN(x)
SIN(x)
SQRT(x)
SQRT(x)
TAN(x)
TAN(x)
String Functions
Databend Function
Snowflake Function
ASCII(expr)
ASCII(expr)
CHAR(n, ...)
CHAR(n, ...)
CONCAT(expr1, ...)
CONCAT(expr1, ...)
CONCAT_WS(separator, expr1, ...)
CONCAT_WS(separator, expr1, ...)
INSTR(str, substr)
INSTR(str, substr)
LENGTH(str)
LENGTH(str)
LCASE(str)
LOWER(str)
LEFT(str, len)
LEFT(str, len)
LOWER(str)
LOWER(str)
LTRIM(str)
LTRIM(str)
POSITION(substr IN str)
POSITION(substr IN str)
REPEAT(str, count)
REPEAT(str, count)
REPLACE(str, from_str, to_str)
REPLACE(str, from_str, to_str)
REVERSE(str)
REVERSE(str)
RIGHT(str, len)
RIGHT(str, len)
RTRIM(str)
RTRIM(str)
SPACE(n)
SPACE(n)
SUBSTR(str, pos)
SUBSTR(str, pos)
SUBSTR(str, pos, len)
SUBSTR(str, pos, len)
SUBSTRING(str, pos)
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
SUBSTRING(str, pos, len)
`TRIM([{BOTH
LEADING
UCASE(str)
UPPER(str)
UPPER(str)
UPPER(str)
Date and Time Functions
Databend Function
Snowflake Function
ADD_DAYS(date, interval)
DATEADD(day, interval, date)
ADD_HOURS(date, interval)
DATEADD(hour, interval, date)
ADD_MINUTES(date, interval)
DATEADD(minute, interval, date)
ADD_MONTHS(date, interval)
DATEADD(month, interval, date)
ADD_SECONDS(date, interval)
DATEADD(second, interval, date)
ADD_YEARS(date, interval)
DATEADD(year, interval, date)
DATE(expr)
DATE(expr)
DAY(date)
DAY(date)
DAYNAME(date)
DAYNAME(date)
DAY_OF_MONTH(date)
DAYOFMONTH(date)
DAY_OF_WEEK(date)
DAYOFWEEK(date)
DAY_OF_YEAR(date)
DAYOFYEAR(date)
HOUR(date)
HOUR(date)
LAST_DAY(date)
LAST_DAY(date)
MINUTE(time)
MINUTE(time)
MONTH(date)
MONTH(date)
NOW()
CURRENT_TIMESTAMP()
SECOND(time)
SECOND(time)
TO_DATE(expr)
TO_DATE(expr)
TO_TIMESTAMP(expr)
TO_TIMESTAMP(expr)
WEEK(date)
WEEK(date)
YEAR(date)
YEAR(date)
YESTERDAY()
DATEADD(day, -1, CURRENT_DATE())
TOMORROW()
DATEADD(day, 1, CURRENT_DATE())
TO_START_OF_DAY(expr)
DATE_TRUNC('day', expr)
TO_START_OF_HOUR(expr)
DATE_TRUNC('hour', expr)
TO_START_OF_MINUTE(expr)
DATE_TRUNC('minute', expr)
TO_START_OF_MONTH(expr)
DATE_TRUNC('month', expr)
TO_START_OF_QUARTER(expr)
DATE_TRUNC('quarter', expr)
TO_START_OF_WEEK(expr)
DATE_TRUNC('week', expr)
TO_START_OF_YEAR(expr)
DATE_TRUNC('year', expr)
TO_UNIX_TIMESTAMP(expr)
TO_TIMESTAMP(expr)
TO_YEARMONTH(expr)
TO_CHAR(expr, 'YYYY-MM')
TO_YYYYMMDD(expr)
TO_CHAR(expr, 'YYYYMMDD')
TO_YYYYMMDDHH(expr)
TO_CHAR(expr, 'YYYYMMDDHH')
TO_YYYYMMDDHHMMSS(expr)
TO_CHAR(expr, 'YYYYMMDDHHMMSS')
Aggregate Functions
Databend Function
Snowflake Function
AVG(x)
AVG(x)
COUNT(x)
COUNT(x)
MAX(x)
MAX(x)
MIN(x)
MIN(x)
SUM(x)
SUM(x)
Conversion Functions
Databend Function
Snowflake Function
CAST(expr AS type)
CAST(expr AS type)
TO_BOOLEAN(expr)
CAST(expr AS BOOLEAN)
TO_STRING(expr)
CAST(expr AS STRING)
TO_INT32(expr)
CAST(expr AS INT)
TO_INT64(expr)
CAST(expr AS BIGINT)
TO_UINT32(expr)
CAST(expr AS NUMBER)
TO_UINT64(expr)
CAST(expr AS NUMBER)
TO_FLOAT32(expr)
CAST(expr AS FLOAT)
TO_FLOAT64(expr)
CAST(expr AS DOUBLE)
TO_DATE(expr)
CAST(expr AS DATE)
TO_TIMESTAMP(expr)
CAST(expr AS TIMESTAMP)
TRY_CAST(expr AS type)
TRY_CAST(expr AS type)
JSON Functions
Databend Function
Snowflake Function
JSON_OBJECT(key1, value1[, key2, value2[, ...]])
OBJECT_CONSTRUCT(key1, value1[, key2, value2[, ...]])
PARSE_JSON(expr)
PARSE_JSON(expr)
JSON_EXTRACT_PATH_TEXT(expr, path_name)
GET(expr, path_name)
JSON_PRETTY(json_string)
TO_JSON_STRING(json_string)
JSON_ARRAY(value1[, value2[, ...]])
ARRAY_CONSTRUCT(value1[, value2[, ...]])
JSON_PATH_QUERY(variant, path_name)
PATH(expr, path_name)
JSON_PATH_QUERY_FIRST(variant, path_name)
PATH(expr, path_name)
CHECK_JSON(expr)
IS_JSON(expr)
GET_PATH(variant, path_name)
GET_PATH(variant, path_name)
JSON_PATH_EXISTS(json_data, json_path_expression)
JSON_PATH_EXISTS(json_data, json_path_expression)
JSON_OBJECT_KEEP_NULL(key1, value1[, key2, value2[, ...]])
OBJECT_CONSTRUCT_KEEP_NULL(key1, value1[, key2, value2[, ...]])
IS_INTEGER(expr)
IS_INTEGER(expr)
IS_NULL_VALUE(expr)
IS_NULL_VALUE(expr)
IS_STRING(expr)
IS_STRING(expr)
IS_BOOLEAN(expr)
IS_BOOLEAN(expr)
`FLATTEN(INPUT => expr [, PATH => expr ] [ , OUTER => TRUE
FALSE ] [ , RECURSIVE => TRUE
IS_ARRAY(expr)
IS_ARRAY(expr)
GET(variant, index)
GET(variant, index)
JSON_PATH_QUERY_ARRAY(variant, path_name)
PATH_ARRAY(variant, path_name)
GET_IGNORE_CASE(variant, field_name)
GET_IGNORE_CASE(variant, field_name)
JSON_ARRAY_ELEMENTS(json_string)
ARRAY_ELEMENTS(json_string)
JSON_STRIP_NULLS(json_string)
REMOVE_NULLS(json_string)
AS_BOOLEAN(variant)
CAST(variant AS BOOLEAN)
AS_INTEGER(variant)
CAST(variant AS INTEGER)
AS_FLOAT(variant)
CAST(variant AS FLOAT)
AS_STRING(variant)
CAST(variant AS STRING)
AS_ARRAY(variant)
CAST(variant AS ARRAY)
AS_OBJECT(variant)
CAST(variant AS OBJECT)
Bitmap Functions
Databend Function
Snowflake Function
BUILD_BITMAP(expr)
N/A
TO_BITMAP(expr)
N/A
BITMAP_AND(expr1, expr2)
N/A
BITMAP_OR(expr1, expr2)
N/A
BITMAP_XOR(expr1, expr2)
N/A
BITMAP_HAS_ALL(expr1, expr2)
N/A
BITMAP_HAS_ANY(expr1, expr2)
N/A
BITMAP_TO_STRING(expr)
N/A
Conditional Functions
Databend Function
Snowflake Function
IF(cond, expr1, expr2)
IFF(cond, expr1, expr2)
NULLIF(expr1, expr2)
NULLIF(expr1, expr2)
IFNULL(expr1, expr2)
IFNULL(expr1, expr2)
COALESCE(expr1, expr2[, ...])
COALESCE(expr1, expr2[, ...])
Encryption and Hash Functions
Databend Function
Snowflake Function
MD5(expr)
MD5(expr)
SHA(expr)
SHA(expr)
SHA2(expr, x)
SHA2(expr, x)
CRC32(expr)
CRC32(expr)
XXHASH32(expr)
N/A
XXHASH64(expr)
N/A
BLAKE3(expr)
N/A
SIPHASH64(expr)
N/A
CITY64WITHSEED(expr1, expr2)
N/A
Window Functions
Databend Function
Snowflake Function
ROW_NUMBER()
ROW_NUMBER()
RANK()
RANK()
DENSE_RANK()
DENSE_RANK()
PERCENT_RANK()
PERCENT_RANK()
CUME_DIST()
CUME_DIST()
NTILE(n)
NTILE(n)
LAG(expr, n, default)
LAG(expr, n, default)
LEAD(expr, n, default)
LEAD(expr, n, default)
FIRST_VALUE(expr)
FIRST_VALUE(expr)
LAST_VALUE(expr)
LAST_VALUE(expr)
NTH_VALUE(expr, n)
NTH_VALUE(expr, n)
Array Functions
Databend Function
Snowflake Function
ARRAY_REDUCE(array, lambda)
N/A
ARRAY_FLATTEN(array)
ARRAY_FLATTEN( <array> )
SLICE(array, start[, end])
SLICE(array, start[, end])
ARRAY_TO_STRING(array, '<separator>')
ARRAY_TO_STRING(array, '<separator>')
CONTAINS(array, element)
ARRAY_CONTAINS(array, element)
ARRAY_FILTER(array, lambda)
N/A
ARRAY_SORT(array[, order[, nullposition]])
ARRAY_SORT(array[, order[, nullposition]])
UNNEST(array)
UNNEST(array)
ARRAY_CONCAT(array1, array2)
ARRAY_CAT(array1, array2)
GET(array, index)
GET(array, index)
ARRAY_INDEX_OF(array, element)
ARRAY_INDEX_OF(array, element)
ARRAY_UNIQUE(array)
ARRAY_UNIQUE(array)
ARRAY_REMOVE_FIRST(array)
N/A
ARRAY_TRANSFORM(array, lambda)
TRANSFORM( <array> , <lambda_expression> )
ARRAY_DISTINCT(array)
ARRAY_DISTINCT(array)
ARRAY_APPEND(array, element)
ARRAY_APPEND(array, element)
ARRAY_PREPEND(element, array)
ARRAY_PREPEND(element, array)
ARRAY_LENGTH(array)
ARRAY_LENGTH(array)
ARRAY_APPLY(array, lambda)
N/A
Geospatial Functions
Databend Function
Snowflake Function
H3_EXACT_EDGE_LENGTH_KM(h3)
H3_EXACT_EDGE_LENGTH_KM(h3)
H3_EDGE_LENGTH_M(1)
H3_EDGE_LENGTH_M(1)
H3_LINE(h3, a_h3)
H3_LINE(h3, a_h3)
H3_EDGE_LENGTH_KM(res)
H3_EDGE_LENGTH_KM(res)
H3_EXACT_EDGE_LENGTH_M(h3)
H3_EXACT_EDGE_LENGTH_M(h3)
GEOHASH_DECODE('<geohashed-string>')
GEOHASH_DECODE('<geohashed-string>')
H3_HEX_AREA_M2(res)
H3_HEX_AREA_M2(res)
H3_TO_GEO_BOUNDARY(h3)
H3_TO_GEO_BOUNDARY(h3)
H3_GET_UNIDIRECTIONAL_EDGES_FROM_HEXAGON(h3)
H3_GET_UNIDIRECTIONAL_EDGES_FROM_HEXAGON(h3)
H3_HEX_AREA_KM2(res)
H3_HEX_AREA_KM2(res)
H3_IS_VALID(h3)
H3_IS_VALID(h3)
H3_TO_GEO(h3)
H3_TO_GEO(h3)
H3_UNIDIRECTIONAL_EDGE_IS_VALID(h3)
H3_UNIDIRECTIONAL_EDGE_IS_VALID(h3)
GEO_TO_H3(lon, lat, res)
GEO_TO_H3(lon, lat, res)
GEOHASH_ENCODE(lon, lat)
GEOHASH_ENCODE(lon, lat)
POINT_IN_POLYGON((x,y), [(a,b), (c,d), (e,f) ... ])
POINT_IN_POLYGON((x,y), [(a,b), (c,d), (e,f) ... ])
H3_DISTANCE(h3, a_h3)
H3_DISTANCE(h3, a_h3)
H3_CELL_AREA_RADS2(h3)
H3_CELL_AREA_RADS2(h3)
H3_TO_CENTER_CHILD(h3, res)
H3_TO_CENTER_CHILD(h3, res)
H3_CELL_AREA_M2(h3)
H3_CELL_AREA_M2(h3)
H3_GET_FACES(h3)
H3_GET_FACES(h3)
H3_IS_PENTAGON(h3)
H3_IS_PENTAGON(h3)
STRING_TO_H3(h3)
STRING_TO_H3(h3)
H3_GET_UNIDIRECTIONAL_EDGE(h3, a_h3)
H3_GET_UNIDIRECTIONAL_EDGE(h3, a_h3)
H3_GET_BASE_CELL(h3)
H3_GET_BASE_CELL(h3)
H3_GET_UNIDIRECTIONAL_EDGE_BOUNDARY(h3)
H3_GET_UNIDIRECTIONAL_EDGE_BOUNDARY(h3)
H3_GET_DESTINATION_INDEX_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_GET_DESTINATION_INDEX_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_TO_PARENT(h3, parent_res)
H3_TO_PARENT(h3, parent_res)
H3_NUM_HEXAGONS(res)
H3_NUM_HEXAGONS(res)
H3_TO_CHILDREN(h3, child_res)
H3_TO_CHILDREN(h3, child_res)
H3_GET_INDEXES_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_GET_INDEXES_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_TO_STRING(h3)
H3_TO_STRING(h3)
H3_K_RING(h3, k)
H3_K_RING(h3, k)
H3_IS_RES_CLASS_III(h3)
H3_IS_RES_CLASS_III(h3)
H3_INDEXES_ARE_NEIGHBORS(h3, a_h3)
H3_INDEXES_ARE_NEIGHBORS(h3, a_h3)
H3_GET_ORIGIN_INDEX_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_GET_ORIGIN_INDEX_FROM_UNIDIRECTIONAL_EDGE(h3)
H3_GET_RESOLUTION(h3)
H3_GET_RESOLUTION(h3)
Other Functions
Databend Function
Snowflake Function
NEXTVAL(seq_name)
NEXTVAL(seq_name)
QUOTE(str)
QUOTE(str)
👍 React with 👍 9ZhiHanZ, b41sh, xudong963, hantmac, ben1009 and 4 more