Comment transposer des lignes en colonnes dans BigQuery ?
Jan 05, 2025 pm 06:33 PMTransposer des lignes en colonnes dans BigQuery : une implémentation pivotante
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.
Structure de la table d'entrée
Pour commencer, assurez-vous que votre table d'entrée comporte les colonnes suivantes :
- Clé : La colonne qui désigne la catégorie pour chacun row.
- Valeur : La valeur qui correspond à la clé.
De plus, vous aurez besoin d'une colonne qui regroupe les lignes qui doivent être combinées en une seule ligne dans la sortie.
Étape 1 : Conversion des données d'entrée en une chaîne de requête transposée
À 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 )
Étape 2 : Exécution de la requête transposée
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 |
Remarque
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
