首页 > 数据库 > mysql教程 > 如何在 BigQuery 中将行转换为列?

如何在 BigQuery 中将行转换为列?

Mary-Kate Olsen
发布: 2025-01-03 22:16:40
原创
258 人浏览过

How to Pivot Rows into Columns in BigQuery?

BigQuery 中的透视转换:将行转置为列

问题:

目标是在 BigQuery 中将数据从行转换为列,其中键变为列名称和值成为对应的列值。

示例:

之前:

Key Value
channel_title Mahendra Guru
youtube_id ugEGMG4-MdA
examId 72975611-4a5e-11e5
channel_id UCiDKcjKocimAO1tV
postId 1189e340-b08f

之后:

channel_title youtube_id channel_id examId postId
Mahendra Guru ugEGMG4-MdA UCiDKcjKocimAO1tV 72975611-4a5e-11e5 1189e340-b08f

解决方案:

当前的 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
)
登录后复制

步骤 2:运行查询和转换

  • 运行步骤中生成的查询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
登录后复制
  • 运行转换后的结果

注意事项:

  • 如果您可以在步骤 2 中手动构造查询,则可以跳过步骤 1。
  • 每个表的列数限制为 10K,因此请考虑扩展更大的数据集。

以上是如何在 BigQuery 中将行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板