Regrouper les éléments
Créez une hiérarchie à partir d'un fichier plat, à l'aide des clauses GROUP BY et GROUP AS.
Avant de commencer
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.
{
"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"
}
]
}{
"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"
}
]
}
]
}
]
}