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

La fonction GCP Cloud pour écrire des données dans BigQuery s'exécute avec succès, mais les données n'apparaissent pas dans la table BigQuery

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

Le shell POSIX (sh) redirige stderr vers stdout et capture stderr et stdout dans des variables