Maison > base de données > tutoriel mysql > Comment puis-je faire pivoter dynamiquement des données dans BigQuery lorsque les valeurs des colonnes pivotées sont inconnues ?

Comment puis-je faire pivoter dynamiquement des données dans BigQuery lorsque les valeurs des colonnes pivotées sont inconnues ?

Susan Sarandon
Libérer: 2024-12-23 07:05:03
original
808 Les gens l'ont consulté

How Can I Dynamically Pivot Data in BigQuery When Pivot Column Values Are Unknown?

Utilisation dynamique de la fonction PIVOT de BigQuery

Le dernier ajout de BigQuery, la fonction PIVOT, a suscité une attention considérable pour sa capacité à transformer les données dans un format semblable à celui d'un tableau croisé dynamique. . Cependant, face à des scénarios dans lesquels les valeurs des colonnes pivot ne sont pas connues à l'avance, les méthodes conventionnelles peuvent s'avérer inefficaces.

Dans de tels cas, une approche dynamique utilisant la concaténation de chaînes peut contourner cette limitation. En générant dynamiquement la requête pivot basée sur les valeurs distinctes de la colonne quart, nous pouvons gérer efficacement n'importe quel nombre de valeurs pivot inconnues.

Extrait de code

L'extrait de code suivant illustre cette approche dynamique :

execute immediate (             
select '''select * from (select * from `project.dataset.Produce`)
  pivot(sum(sales) for quarter in ("''' ||  string_agg(quarter, '", "')  || '''"))
'''
from (select distinct quarter from `project.dataset.Produce` order by quarter) 
);
Copier après la connexion

Comment ça marche

  1. EXECUTE IMMEDIATE : Cette instruction de manière dynamique exécute la chaîne de requête générée.
  2. Génération de requête :

    • select '''select * from (select * from project.dataset.Produce) : récupère les données du Produire une table en tant que sous-requête.
    • pivot(sum(sales) for quarter in ("''' : commencez l'opération PIVOT en spécifiant la somme des ventes pour la colonne du trimestre.
    • string_agg( quarter, '", "') : concatène dynamiquement les valeurs trimestrielles distinctes dans une chaîne séparée par des virgules entourée de guillemets doubles pour servir de liste de colonnes pivot.
    • "'''")) : Complétez le PIVOT clause.
  3. Sous-requête :

    • (sélectionnez un trimestre distinct dans project.dataset.Produce order by quarter) : récupérez les valeurs trimestrielles distinctes par ordre croissant afin de garantir une colonne pivotante appropriée commande.

Avantages

Cette approche dynamique offre plusieurs avantages :

  • Évolutivité : Elle est transparente gère un nombre arbitraire de valeurs de colonnes pivots, offrant flexibilité et facilité de utilisation.
  • Concision : la concaténation de chaînes permet la construction de la requête PIVOT en une seule instruction, améliorant ainsi la clarté du code.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal