Snowflake's New Higher-Order Functions
Karthikeyan Shanthakumar
Senior Cloud Data Engineer/Architect, Snowflake Cloud, Databricks, dbt Cloud, Microsoft Azure Data Platform, Google Cloud Data Platform||2K plus LI connections on Data
Snowflake’s New Higher-Order Functions
In a competitive data analytics industry, it's necessary for efficiency and clarity. Snowflake cloud has introduced the Higher-order functions, a powerful feature to its already growing list of SQL capabilities to stand atop on the modern data warehouses platform to effectively process the arrays and semi-structure data.
Higher-Order functions?—?So, what are?they?
These are a new set of functions which accepts another function, mostly a Lambda expression as an argument. These are extremely valuable while working on semi-structured datasets making it easier to work on arrays and apply specific operations on its elements.
Key Higher-Order Functions in Snowflake
Currently Snowflake offers three core higher-order functions:
FILTER- As name implies, it filters the array elements on a given condition
TRANSFORM: Transforms array elements into a desired format or values.
REDUCE: Aggregates the array elements into single value through iterative processing.
What benefits do they?bring?
Traditionally, Snowflake Lateral Flatten is used to flatten semi structured data like JSON, XML formats.
Improved Efficiency
These higher-order functions often outperform the Lateral Flatten or UDF’s
Better Readability
These new functions bring more readability making the queries compact and expressive in nature
Enhanced Flexibility
Provides flexibility to manipulate the structure and semi-structure data
Reduced need for UDF
Overall, it eliminates the need for user-defined functions on many scenarios
Few Examples
Let's create a table named Orders and load few sample data.
CREATE OR REPLACE TABLE orders AS
SELECT 1 AS order_id, '2025-01-01' AS order_date, [
{'item':'Bose Soundbar', 'quantity':3, 'subtotal':1500},
{'item':'Brother Printer', 'quantity':1, 'subtotal':1200}
] AS order_detail
UNION SELECT 2 AS order_id, '2025-01-02' AS order_date, [
{'item':'Lenovo Laptop', 'quantity':5, 'subtotal':7500},
{'item':'Airpod Noise-canceling Headphones', 'quantity':5, 'subtotal':1000},
{'item':'Samsung Noise-canceling EarBuds-3', 'quantity':4, 'subtotal':1505}
] AS order_detail;
领英推荐
SELECT * FROM orders;
Filter Function
Now I want to filter the data using higher-order function FILTER. Where i create the lambda function to check the subtotal greater than or equals to $1500 and Quantity greater than or equals to 4. I can do that all in one single function.
select order_id, order_date,
filter(order_detail, i->i:subtotal>=1500 and i:quantity >=4) as Order_Qty_gte_1500_4
from orders;
Reduce
Let's try the second one on the list, the Reduce function. I am building a lambda function that calculates the subtotal and uses the acc variable to add subtotal calling a GrandTotal_sum. Note that, I am also initializing the acc variable to 0 to begin with.
SELECT order_id,
order_date,
REDUCE(order_detail,
0,
(acc, val) -> acc + val:subtotal) AS GrandTotal_sum
FROM orders;
Transform
Final one on the current list is the TRANSFORM higher-order functions. As the name implies, we can perform transformation using this function. I want to write a simple conver the characters to upper case function on the order detail column.
select order_id, order_date,
transform(order_detail,x->upper(x)) as upper_nm
from orders;
Finally, putting them all together in one single query
SELECT order_id,
order_date,
REDUCE(o.order_detail,
0,
(acc, val) -> acc + val:subtotal) AS GrandTotal_sum ,
transform(order_detail,x->upper(x)) as Product_Details,
filter(order_detail, y->y:subtotal>=1500 and y:quantity >=4) as Trans_OrdertotalQty_gte_1500_4
FROM orders o;
Implementation Timeline
Transforming Data Analytics to a new?high
The introduction of higher-order functions has reshaped how data professionals handle complex transformations, array manipulations, and advanced analytics. By integrating functional programming into SQL, Snowflake offers a modern, streamlined approach to data processing.
With these set of tools, users can perform sophisticated operations on arrays and semi-structured data, reducing reliance on inefficient workarounds.? The result is more efficient, readable, and performant workflows.
As data analytics evolves, Snowflake’s higher-order functions represent a pivotal innovation, empowering professionals to process complex data structures with greater ease and precision.