首页 >数据库 >mysql教程 >如何在 BigQuery 中逆透视数据?

如何在 BigQuery 中逆透视数据?

Susan Sarandon
Susan Sarandon原创
2024-12-23 03:19:09938浏览

How to Unpivot Data in BigQuery?

如何在 BigQuery 中将数据从透视结构转换为非透视结构

在 BigQuery 中,您面临着转换数据结构的挑战将透视表转换为未透视格式。这涉及将数据转换为更加表格化的表示形式。要实现此目标,请考虑以下步骤:

使用 UNPIVOT 运算符(推荐)

BigQuery 现在提供专用的 UNPIVOT 运算符来简化此转换。此运算符允许您指定要旋转的数据透视列(例如 Q1、Q2、Q3、Q4)以及结果列(例如销售额、季度)。

SQL 语法:

SELECT product, UNPIVOT(value FOR quarter IN (Q1, Q2, Q3, Q4)) AS sales_quarter
FROM pivoted_table

使用嵌套查询

在引入 UNPIVOT 运算符之前,BigQuery 用户可以使用嵌套查询实现逆透视:

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

示例数据转换

以下示例将转换透视表:

product | Q1 | Q2 | Q3 | Q4
-------------------------------
Kale    | 51 | 23 | 45 | 3
Apple   | 77 | 0  | 25 | 2

转换为未透视表:

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

以上是如何在 BigQuery 中逆透视数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn