Ask Your Question
1

How can JSON objects with dynamic keys be extracted in Athena/Presto?

asked 2021-08-07 11:00:00 +0000

bukephalos gravatar image

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
3

answered 2023-02-10 05:00:00 +0000

devzero gravatar image

To extract JSON objects with dynamic keys in Athena/Presto, you can use the json_extract() function along with the map_keys() function.

For example, if you have a JSON object with dynamic keys as follows:

{
  "user1": {
    "name": "John",
    "age": 30
  },
  "user2": {
    "name": "Jane",
    "age": 25
  }
}

You can extract the keys dynamically using the following query:

SELECT map_keys(json_extract(your_json_column, '$')) AS keys
FROM your_table;

This will return a list of keys in the JSON object:

["user1", "user2"]

You can then use these keys to extract specific values from the JSON object using the json_extract() function again:

SELECT json_extract(your_json_column, '$.user1.name') AS name,
       json_extract(your_json_column, '$.user1.age') AS age
FROM your_table;

This will return the following results:

name | age
-----|----
John | 30
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss

Add Answer


Question Tools

Stats

Asked: 2021-08-07 11:00:00 +0000

Seen: 10 times

Last updated: Feb 10 '23