在BigQuery中,可以使用UNPIVOT运算符将行转换为列。以下是一个示例解决方案,包含代码示例:
假设我们有以下示例数据集:
+----+------+------+------+
| id | col1 | col2 | col3 |
+----+------+------+------+
| 1 | A | B | C |
| 2 | D | E | F |
+----+------+------+------+
我们希望将列(col1, col2, col3)转换为行,并在结果中保留id列。可以使用UNPIVOT运算符实现这一点。
以下是一个使用BigQuery SQL的示例解决方案:
SELECT id, col, value
FROM (
SELECT id, col1, col2, col3
FROM your_table
) UNPIVOT (value FOR col IN (col1, col2, col3))
这将产生以下结果:
+----+-----+-------+
| id | col | value |
+----+-----+-------+
| 1 | col1| A |
| 1 | col2| B |
| 1 | col3| C |
| 2 | col1| D |
| 2 | col2| E |
| 2 | col3| F |
+----+-----+-------+
在上述示例中,首先使用子查询从原始表中选择id和列(col1, col2, col3)。然后,使用UNPIVOT运算符将列转换为行。在UNPIVOT子句中,我们指定了要转换的列(col1, col2, col3),并为这些列创建了一个新的列名(col)。生成的结果包含id、col和值(value)列。
注意:UNPIVOT运算符在BigQuery中是实验性功能,可能会有一些限制和注意事项。在实际使用中,请参考BigQuery文档以获得更多详细信息。