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