'How to parse json data in a column with Druid SQL?

I'm trying to parse json data in a column with Druid SQL in Superset SQL lab. My table looks like this:

id json_scores
0 {"foo": 20, "bar": 10}
1 {"foo": 30, "bar": 10}

I'm looking for something similar to json_extract in MySQL e.g.

SELECT *
FROM my_table 
WHERE json_extract(json_scores, '$.foo') > 10;


Solution 1:[1]

Druid doesn't support json_extract function. Druid supports only ANSI SQL 92, which does not understand JSON as a data type.

Supported data type are listed in this page: https://docs.imply.io/latest/druid/querying/sql-data-types/

You can use any expressions that are listed here: https://druid.apache.org/docs/latest/misc/math-expr.html#string-functions

In your case consider using regexp_extract:

regexp_extract(json_scprs, '(?<=\"foo\":\s)(\d+)(?=,)', 0) AS foo,

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Praytic