通常需要将数据从表格结构重新组织为更灵活、更可用的格式。在 BigQuery 中,UNPIVOT 运算符为这种转换提供了强大的解决方案。
请考虑以下示例:
原始表结构:
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 |
使用 UNPIVOT 的 SQL 查询:
SELECT product, value AS sales, OFFSET AS quarter FROM UNNEST(FLATTEN( ARRAY( STRUCT('Q1' AS OFFSET, Q1 AS value), STRUCT('Q2' AS OFFSET, Q2 AS value), STRUCT('Q3' AS OFFSET, Q3 AS value), STRUCT('Q4' AS OFFSET, Q4 AS value) ) )) AS UNNESTED ORDER BY product, quarter;
此查询使用 ARRAY 和 STRUCT 函数创建临时结构数组原始表中的每一行。然后使用 FLATTEN 函数从数组中的每个结构中提取结构字段(销售额和季度)。最后,使用 UNNEST 运算符从 ARRAY 中提取各个值。
生成的表将采用所需的格式,其中包含产品、销售额和季度的列。
以上是BigQuery 的 UNPIVOT 运算符如何重组表格数据?的详细内容。更多信息请关注PHP中文网其他相关文章!