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
FLATTEN
n'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:
Connexe : JSON - Interroger les données
Commentaires
Enregistrer un commentaire