Comment transformer des données d'une structure pivotée en une structure non pivotée dans BigQuery
Dans BigQuery, vous êtes confronté au défi de transformer une tableau croisé dynamique dans un format non pivoté. Cela implique de transposer les données dans une représentation plus tabulaire. Pour y parvenir, envisagez les étapes suivantes :
Utilisation de l'opérateur UNPIVOT (recommandé)
BigQuery propose désormais un opérateur UNPIVOT dédié qui simplifie cette transformation. Cet opérateur vous permet de spécifier les colonnes pivot à faire pivoter (par exemple, Q1, Q2, Q3, Q4) et les colonnes résultantes (par exemple, ventes, trimestre).
Syntaxe SQL :
SELECT product, UNPIVOT(value FOR quarter IN (Q1, Q2, Q3, Q4)) AS sales_quarter FROM pivoted_table
Utilisation d'un Requête
Avant l'introduction de l'opérateur UNPIVOT, les utilisateurs de BigQuery pouvaient obtenir un pivotement à l'aide d'une requête imbriquée :
Syntaxe SQL :
SELECT product, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q1 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q1, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q2 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q2, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q3 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q3, (SELECT value FROM UNNEST(SAFE_CAST(STRUCT(NULL AS name, Q4 AS "value") AS STRUCT<name STRING, value STRING>))) AS Q4 FROM pivoted_table
Exemple de conversion de données
L'exemple suivant convertir le tableau croisé dynamique :
product | Q1 | Q2 | Q3 | Q4 ------------------------------- Kale | 51 | 23 | 45 | 3 Apple | 77 | 0 | 25 | 2
En tableau non pivoté :
product | sales | quarter ------------------------------- Kale | 51 | Q1 Kale | 23 | Q2 Kale | 45 | Q3 Kale | 3 | Q4 Apple | 77 | Q1 Apple | 0 | Q2 Apple | 25 | Q3 Apple | 2 | Q4
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!