SnowConvert AI - PostgreSQL - Built-in functions¶
Applies to¶
- PostgreSQL
- Greenplum
- Netezza
Note
For more information about built-in functions and their Snowflake equivalents, also see Common built-in functions.
Aggregate Functions¶
Aggregate functions compute a single result value from a set of input values. (PostgreSQL Language Reference Aggregate Functions (https://www.postgresql.org/docs/12/functions-aggregate.html)).
Conditional expressions¶
| PostgreSQL | Snowflake |
|---|---|
| COALESCE (https://www.postgresql.org/docs/12/functions-conditional.html) ( value [, …] ) | COALESCE ( expression, expression, … ) |
| GREATEST (https://www.postgresql.org/docs/12/functions-conditional.html) ( value [, …] ) | GREATEST_IGNORE_NULLS ( <expr1> [, <expr2> … ] ) |
| LEAST (https://www.postgresql.org/docs/12/functions-conditional.html) ( value [, …] ) | LEAST_IGNORE_NULLS ( <expr1> [, <expr2> … ]) |
| NULLIF (https://www.postgresql.org/docs/12/functions-conditional.html) | NULLIF |
Data type formatting functions¶
Data type formatting functions provide an easy way to convert values from one data type to another. For each of these functions, the first argument is always the value to be formatted and the second argument contains the template for the new format. (PostgreSQL Language Reference Data type formatting functions (https://www.postgresql.org/docs/12/functions-formatting.html)).
| PostgreSQL | Snowflake |
|---|---|
| TO_CHAR (https://www.postgresql.org/docs/12/functions-formatting.html) | Notes: Snowflake’s support for this function is partial (see SSC-EWI-PG0005). |
| TO_DATE (https://www.postgresql.org/docs/12/functions-formatting.html) | Notes: Snowflake’s |
Date and time functions¶
Note
PostgreSQL timestamps default to microsecond precision (6 digits); Snowflake defaults to nanosecond precision (9 digits). Adjust precision as needed using ALTER SESSION (for example, ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF2';). Precision loss may occur depending on the data type used.
Since some formats are incompatible with Snowflake, adjusting the account parameters DATE_INPUT_FORMAT or TIME_INPUT_FORMAT might maintain functional equivalence between platforms.
JSON Functions¶
| PostgreSQL | Snowflake |
|---|---|
| JSON_EXTRACT_PATH_TEXT (https://www.postgresql.org/docs/9.3/functions-json.html) | Notes:
|
Math functions¶
Note
PostgreSQL and Snowflake results may differ in scale.
String functions¶
String functions process and manipulate character strings or expressions that evaluate to character strings. (PostgreSQL Language Reference String functions (https://www.postgresql.org/docs/12/functions-string.html)).
Sequence functions¶
Sequence manipulation functions provide methods to access and use sequence generators. (PostgreSQL Language Reference Sequence functions (https://www.postgresql.org/docs/12/functions-sequence.html)).
| PostgreSQL | Snowflake |
|---|---|
| NEXTVAL (https://www.postgresql.org/docs/12/functions-sequence.html) (‘sequence_name’) | sequence_name.NEXTVAL Notes: Both |
Window functions¶
| PostgreSQL | Snowflake |
|---|---|
| AVG (https://www.postgresql.org/docs/9.4/functions-aggregate.html) | Notes: AVG rounding/formatting can vary by data type between PostgreSQL and Snowflake. |
| COUNT (https://www.postgresql.org/docs/9.4/functions-aggregate.html) | COUNT |
| DENSE_RANK (https://www.postgresql.org/docs/current/functions-window.html) | Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
| FIRST_VALUE (https://www.postgresql.org/docs/current/functions-window.html) | Notes: Snowflake needs ORDER BY; missing clauses get |
| LAG (https://www.postgresql.org/docs/current/functions-window.html) | LAG |
| LAST_VALUE (https://www.postgresql.org/docs/current/functions-window.html) | Notes: Snowflake needs ORDER BY; missing clauses get |
| LEAD (https://www.postgresql.org/docs/current/functions-window.html) | Notes: PostgreSQL allows constant or expression offsets; Snowflake allows only constant offsets. |
| NTH_VALUE (https://www.postgresql.org/docs/current/functions-window.html) | Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
| NTILE (https://www.postgresql.org/docs/current/functions-window.html) | Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
| PERCENT_RANK (https://www.postgresql.org/docs/current/functions-window.html) | Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
| PERCENTILE_CONT (https://www.postgresql.org/docs/9.4/functions-aggregate.html) | Notes: Rounding varies between platforms. |
| PERCENTILE_DISC (https://www.postgresql.org/docs/9.4/functions-aggregate.html) | PERCENTILE_DISC |
| RANK (https://www.postgresql.org/docs/current/functions-window.html) | RANK |
| ROW_NUMBER (https://www.postgresql.org/docs/current/functions-window.html) | Notes: ORDER BY is mandatory in Snowflake; missing clauses are replaced with |
Related EWIs¶
- SSC-FDM-0032: Parameter is not a literal value, transformation could not be fully applied
- SSC-FDM-PG0013: Function syntactically supported by Snowflake but may have functional differences.
- SSC-EWI-0009: Regexp_Substr Function only supports POSIX regular expressions.
- SSC-FDM-PG0011: The use of the COLLATE column constraint has been disabled for this pattern-matching condition.