Transformation pivot dans BigQuery : transposer des lignes en colonnes
Problème :
L'objectif est pour transformer les données des lignes en colonnes dans BigQuery, où les clés deviennent des noms de colonnes et les valeurs deviennent la colonne correspondante valeurs.
Exemple :
Avant :
Key | Value |
---|---|
channel_title | Mahendra Guru |
youtube_id | ugEGMG4-MdA |
examId | 72975611-4a5e-11e5 |
channel_id | UCiDKcjKocimAO1tV |
postId | 1189e340-b08f |
Après :
channel_title | youtube_id | channel_id | examId | postId |
---|---|---|---|---|
Mahendra Guru | ugEGMG4-MdA | UCiDKcjKocimAO1tV | 72975611-4a5e-11e5 | 1189e340-b08f |
Solution :
BigQuery manque actuellement de fonctions de pivotement natives. Cependant, l'approche suivante peut obtenir le même résultat :
Étape 1 : Générer une structure de requête
SELECT 'SELECT id, ' + GROUP_CONCAT_UNQUOTED( 'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']' ) + ' FROM yourTable GROUP BY id ORDER BY id' FROM ( SELECT key FROM yourTable GROUP BY key ORDER BY key )
Étape 2 : Exécuter une requête et transformer
SELECT id, MAX(IF(key = "channel_id", value, NULL)) AS [channel_id], MAX(IF(key = "channel_title", value, NULL)) AS [channel_title], MAX(IF(key = "examId", value, NULL)) AS [examId], MAX(IF(key = "postId", value, NULL)) AS [postId], MAX(IF(key = "youtube_id", value, NULL)) AS [youtube_id] FROM yourTable GROUP BY id ORDER BY id
Considérations :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!