如何在 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中文网其他相关文章!