将行转置为列(也称为透视),允许您将键值对转换为新表其中键成为列名称,值放置在相应的单元格中。虽然 BigQuery 本身不支持旋转函数,但您仍然可以使用简单的方法来实现此目的。
首先,请确保您的输入表具有以下列:
此外,您将需要一个列来将应合并为单个行的行分组输出中的行。
中第 1 步,我们将创建一个查询字符串,执行时将生成转置查询。执行以下查询:
SELECT 'SELECT id, ' + GROUP_CONCAT_UNQUOTED( 'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']' ) + ' FROM yourTable GROUP BY id ORDER BY id' FROM ( SELECT key FROM yourTable GROUP BY key ORDER BY key )
复制步骤 1 的结果并将其作为常规查询执行。这将生成一个包含转置数据的表:
SELECT id, MAX(IF(key = "channel_id", value, NULL)) AS [channel_id], MAX(IF(key = "channel_title", value, NULL)) AS [channel_title], MAX(IF(key = "examId", value, NULL)) AS [examId], MAX(IF(key = "postId", value, NULL)) AS [postId], MAX(IF(key = "youtube_id", value, NULL)) AS [youtube_id] FROM yourTable GROUP BY id ORDER BY id
生成的表将具有以下结构:
id | channel_id | channel_title | examId | postId | youtube_id |
---|---|---|---|---|---|
1 | UCiDKcjKocimAO1tV | Mahendra Guru | 72975611-4a5e-11e5 | 1189e340-b08f | ugEGMG4-MdA |
2 | UCODeKM_D6JLf8jJt | Ab Live | 72975611-4a5e-11e5 | 0c3e6590-afeb | 3TNbtTwLY0U |
如果您的表有一个很大的列数,您可以通过手动构建转置查询来跳过步骤 1。然而,第 1 步提供了一种快速便捷的方法来动态生成查询。
以上是如何在 BigQuery 中将行转置为列?的详细内容。更多信息请关注PHP中文网其他相关文章!