Maison > base de données > tutoriel mysql > Comment puis-je faire pivoter dynamiquement des données dans BigQuery à l'aide de la fonction PIVOT ?

Comment puis-je faire pivoter dynamiquement des données dans BigQuery à l'aide de la fonction PIVOT ?

Patricia Arquette
Libérer: 2024-12-26 18:48:09
original
392 Les gens l'ont consulté

How Can I Dynamically Pivot Data in BigQuery Using the PIVOT Function?

Fonction PIVOT dans BigQuery : gestion des valeurs trimestrielles dynamiques

La fonction PIVOT récemment introduite par BigQuery offre un moyen pratique de transformer les données dans un format tabulaire, faire pivoter les lignes sur les colonnes spécifiées. Cependant, dans des scénarios réels, nous rencontrons souvent des situations dans lesquelles les valeurs des colonnes pivots (par exemple, les trimestres) sont inconnues à l'avance.

Pour relever ce défi, considérons la requête suivante :

SELECT * FROM
  (SELECT * FROM Produce)
  PIVOT(SUM(sales) FOR quarter in (select distinct quarter from Produce))
Copier après la connexion

Bien que cette requête tente de faire pivoter dynamiquement la table Produce sur la colonne du trimestre, elle ne parvient pas à produire les résultats souhaités. L'ingrédient manquant est la nécessité de créer dynamiquement la clause PIVOT.

La solution réside dans l'utilisation de la fonction d'exécution immédiate de SQL pour exécuter une requête générée dynamiquement. Voici une requête améliorée :

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

Cette requête effectue les étapes suivantes :

  1. Crée une chaîne contenant une requête PIVOT modifiée. Les valeurs trimestrielles sont générées dynamiquement à l'aide de string_agg.
  2. Exécute la requête modifiée pour récupérer le tableau croisé dynamique souhaité.
  3. Spécifie un ordre sur les valeurs trimestrielles distinctes pour garantir que les colonnes apparaissent dans un ordre cohérent.

En tirant parti de la flexibilité de SQL, nous pouvons surmonter les limitations des colonnes pivot statiques et gérer les valeurs dynamiques en toute transparence.

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