Obtention de la longueur et de la taille de tableaux JSON - Amazon Athena

Obtention de la longueur et de la taille de tableaux JSON

Vous pouvez utiliser les fonctions json_array_length et json_size pour obtenir la longueur et la taille de tableaux JSON.

Exemple : json_array_length

Pour obtenir la longueur d'un tableau codé en JSON, utilisez la fonction json_array_length.

WITH dataset AS ( SELECT * FROM (VALUES (JSON '{"name": "Bob Smith", "org": "legal", "projects": [{"name":"project1", "completed":false}]}'), (JSON '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project2", "completed":true}, {"name":"project3", "completed":true}]}'), (JSON '{"name": "Jane Smith", "org": "finance", "projects": [{"name":"project2", "completed":true}]}') ) AS t (users) ) SELECT json_extract_scalar(users, '$.name') as name, json_array_length(json_extract(users, '$.projects')) as count FROM dataset ORDER BY count DESC

Cette requête renvoie le résultat suivant :

+---------------------+ | name | count | +---------------------+ | Susan Smith | 2 | +---------------------+ | Bob Smith | 1 | +---------------------+ | Jane Smith | 1 | +---------------------+

Exemple : json_size

Pour obtenir la taille d'un tableau ou d'un objet codé en JSON, utilisez la fonction json_size, puis spécifiez la colonne contenant la chaîne JSON et l'expression JSONPath sur le tableau ou l'objet.

WITH dataset AS ( SELECT * FROM (VALUES (JSON '{"name": "Bob Smith", "org": "legal", "projects": [{"name":"project1", "completed":false}]}'), (JSON '{"name": "Susan Smith", "org": "engineering", "projects": [{"name":"project2", "completed":true},{"name":"project3", "completed":true}]}'), (JSON '{"name": "Jane Smith", "org": "finance", "projects": [{"name":"project2", "completed":true}]}') ) AS t (users) ) SELECT json_extract_scalar(users, '$.name') as name, json_size(users, '$.projects') as count FROM dataset ORDER BY count DESC

Cette requête renvoie le résultat suivant :

+---------------------+ | name | count | +---------------------+ | Susan Smith | 2 | +---------------------+ | Bob Smith | 1 | +---------------------+ | Jane Smith | 1 | +---------------------+