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))
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) );
Cette requête effectue les étapes suivantes :
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!