Regrouper les éléments
Créez une hiérarchie à partir d'un fichier plat, à l'aide des clauses Data Shaping Query Language GROUP BY et GROUP AS.
Avant de commencer
- Vous avez créé des structures d'entrée et de sortie. Vous pouvez utiliser les échantillons JSON ci-dessous pour créer vos structures.
Pourquoi et quand exécuter cette tâche
Dans cet exemple, vous allez créer une map DSQL pour extraire des données relatives à un magasin, à partir d'un fichier plat JSON et écrire ces données dans une structure hiérarchique.
Dans le fichier JSON échantillon ci-dessous, chaque objet du tableau items contient des données concernant un élément, notamment son magasin et son rayon. Dans la sortie, au lieu d'un enregistrement par élément, vous souhaitez d'abord avoir un enregistrement par magasin, puis un enregistrement par rayon, puis finalement un enregistrement par objet de chaque rayon.
Les données d'entrée ressemblent à ceci :
{
"items": [
{
"store_name": "plusstore",
"store_location": "saint louis",
"department_name": "sports",
"salesperson_id": "25",
"item_name": "MBIKE"
},
{
"store_name": "plusstore",
"store_location": "saint louis",
"department_name": "sports",
"salesperson_id": "25",
"item_name": "ESCOOT"
},
{
"store_name": "plusstore",
"store_location": "saint louis",
"department_name": "electronics",
"salesperson_id": "32",
"item_name": "Portable SSD T5"
},
{
"store_name": "plusstore",
"store_location": "saint louis",
"department_name": "electronics",
"salesperson_id": "32",
"item_name": "Extreme Portable SSD"
},
{
"store_name": "goodstore",
"store_location": "nashville",
"department_name": "electronics",
"salesperson_id": "47",
"item_name": "Toshiba P300"
},
{
"store_name": "goodstore",
"store_location": "nashville",
"department_name": "fresh",
"salesperson_id": "47",
"item_name": "Italian tomatoes"
}
]
}
La structure de sortie ressemble à ceci :
{
"stores": [
{
"name": "",
"location": "",
"departments": [
{
"name": "",
"salesperson_id": "",
"items": [
{
"name": ""
}
]
}
]
}
]
}
Procédure
Résultats
{
"stores":[
{
"name":"plusstore",
"location":"saint louis",
"departments":[
{
"name":"electronics",
"salesperson_id":"32",
"items":[
{
"name":"Portable SSD T5"
},
{
"name":"Extreme Portable SSD"
}
]
},
{
"name":"sports",
"salesperson_id":"25",
"items":[
{
"name":"MBIKE"
},
{
"name":"ESCOOT"
}
]
}
]
},
{
"name":"goodstore",
"location":"nashville",
"departments":[
{
"name":"electronics",
"salesperson_id":"47",
"items":[
{
"name":"Toshiba P300"
}
]
},
{
"name":"fresh",
"salesperson_id":"47",
"items":[
{
"name":"Italian tomatoes"
}
]
}
]
}
]
}