Maison >base de données >tutoriel mysql >Comment transposer des lignes en colonnes dans BigQuery ?
La transposition de lignes en colonnes, également appelée pivotement, vous permet de convertir des paires clé-valeur en une nouvelle table où les clés deviennent des noms de colonnes et les valeurs sont placées dans les cellules correspondantes. Même si BigQuery ne prend pas en charge de manière native les fonctions de pivotement, vous pouvez toujours y parvenir en utilisant une approche simple.
Pour commencer, assurez-vous que votre table d'entrée comporte les colonnes suivantes :
De plus, vous aurez besoin d'une colonne qui regroupe les lignes qui doivent être combinées en une seule ligne dans la sortie.
À l'étape 1, nous allons créer une chaîne de requête qui, une fois exécutée, générera la requête transposée. Exécutez la requête suivante :
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 )
Copiez le résultat de l'étape 1 et exécutez-le comme une requête normale. Cela produira un tableau avec les données transposées :
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
Le tableau résultant aura la structure suivante :
id | channel_id | channel_title | examId | postId | youtube_id |
---|---|---|---|---|---|
1 | UCiDKcjKocimAO1tV | Mahendra Guru | 72975611-4a5e-11e5 | 1189e340-b08f | ugEGMG4-MdA |
2 | UCODeKM_D6JLf8jJt | Ab Live | 72975611-4a5e-11e5 | 0c3e6590-afeb | 3TNbtTwLY0U |
Si votre tableau a un grand nombre de colonnes, vous pouvez ignorer l'étape 1 en construisant manuellement la requête transposée. Cependant, l'étape 1 fournit un moyen rapide et pratique de générer la requête de manière dynamique.
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!