Meilleure configuration de tableau JSON pour aplatir en SQL

J'ai besoin d'écrire un tableau simple d'utilisateur, de groupe et de classe qui sera éventuellement analysé en SQL et aplati afin que l'utilisateur, le groupe et la classe soient chacun des colonnes. Je me demande quel est le meilleur tableau JSON et la meilleure syntaxe SQL pour obtenir ce résultat ?

Actuellement, pour le tableau, j'ai:

 { "user": "1", 
"class": "a",
"group": "a1"
}

Pour le SQL (Snowflake) j'ai

 with tab as (select parse_json(column1) as json
from values(
'{ "user": "1",
"class": "a",
"group": "a1" }'))
select * from tab,
lateral flatten(input => json) f

Cependant, cela me donne un tableau comme:

| JSON | KEY | PATH | VALUE | THIS |
|------|-----|------|-------|------|
| {...}| class|class|"a" | {...} |
| {...}| group|group|"a1" | {...} |
| {...}| user |user |"1" | {...} |

En fin de compte, ce que je voudrais, c'est

| JSON | user | class | group |
|------|------|-------|-------|
| {...}| 1 | a | a1|

Quelle est la meilleure configuration de tableau JSON et la meilleure syntaxe SQL pour obtenir ce résultat ?


Solution du problème

FLATTENn'est pas requis. Pour accéder à une clé/valeur spécifique: :

with tab as (
select parse_json(column1) as json
from values(
'{ "user": "1",
"class": "a",
"group": "a1" }')
)
select json
,json:"user"::STRING AS "user"
,json:class::STRING AS class
,json:"group"::STRING AS "group"
from tab;

Production:

entrez la description de l'image ici

Connexe : JSON - Interroger les données

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"