JSON_PATH_QUERY_FIRST

Learn how to use the JSON_PATH_QUERY_FIRST semi-structured data function in PlaidCloud Lakehouse. Get the first JSON item returned by JSON path for the...

Get the first JSON item returned by JSON path for the specified JSON value.

Analyze Syntax

func.json_path_query_first(<variant>, <path_name>)

Analyze Example

table.name, func.json_path_query_first(table.details, '$.features.*').alias('first_feature')

┌────────────┬───────────────┐
 name        first_feature 
├────────────┼───────────────┤
 Laptop      "16GB"        
 Laptop      "16GB"        
 Smartphone  "4GB"         
 Smartphone  "4GB"         
 Headphones  "20h"         
 Headphones  "20h"         
└────────────┴───────────────┘

SQL Syntax

JSON_PATH_QUERY_FIRST(<variant>, '<path_name>')

Return Type

VARIANT

SQL Examples

Create a Table and Insert Sample Data

CREATE TABLE products (
    name VARCHAR,
    details VARIANT
);

INSERT INTO products (name, details)
VALUES ('Laptop', '{"brand": "Dell", "colors": ["Black", "Silver"], "price": 1200, "features": {"ram": "16GB", "storage": "512GB"}}'),
       ('Smartphone', '{"brand": "Apple", "colors": ["White", "Black"], "price": 999, "features": {"ram": "4GB", "storage": "128GB"}}'),
       ('Headphones', '{"brand": "Sony", "colors": ["Black", "Blue", "Red"], "price": 150, "features": {"battery": "20h", "bluetooth": "5.0"}}');

Query Demo: Extracting the First Feature from Product Details

SELECT
    name,
    JSON_PATH_QUERY(details, '$.features.*') AS all_features,
    JSON_PATH_QUERY_FIRST(details, '$.features.*') AS first_feature
FROM
    products;

Result

┌────────────┬──────────────┬───────────────┐
 name        all_features  first_feature 
├────────────┼──────────────┼───────────────┤
 Laptop      "16GB"        "16GB"        
 Laptop      "512GB"       "16GB"        
 Smartphone  "4GB"         "4GB"         
 Smartphone  "128GB"       "4GB"         
 Headphones  "20h"         "20h"         
 Headphones  "5.0"         "20h"         
└────────────┴──────────────┴───────────────┘