数据库
首页 > 数据库> > mysql – 如何将行转换为BigQuery / SQL中包含大量数据的列?

mysql – 如何将行转换为BigQuery / SQL中包含大量数据的列?

作者:互联网

我在将BigQuery(15亿行)中的大量数据表从行转换为列时遇到问题.我可以弄清楚如何在硬编码时使用少量数据来完成它,但这个数量很大.表的快照如下所示:

 ————————–
| CustomerID特征值|
 ————————–
| 1 A123 3 |
| 1 F213 7 |
| 1 F231 8 |
| 1 B789 9.1 |
| 2 A123 4 |
| 2 U123 4 |
| 2 B789 12 |
| .. .. .. |
| .. .. .. |
| 400000 A123 8 |
| 400000 U123 7 |
| 400000 R231 6 |
 ————————–

所以基本上大约有400,000个不同的customerID有3000个功能,并不是每个customerID都有相同的功能,所以有些customerID可能有2000个功能,而有些有3000个.我想得到的最终结果表是每行显示一个不同的customerID,并且有3000列显示所有功能.像这样:

CustomerID Feature1 Feature2 … Feature3000

因此,某些单元格可能缺少值.

任何人都知道如何在BigQuery或SQL中执行此操作?

提前致谢.

解决方法:

STEP #1

在下面的查询中,用表的真实名称替换yourTable并执行/运行它

SELECT 'SELECT CustomerID, ' + 
   GROUP_CONCAT_UNQUOTED(
      'MAX(IF(Feature = "' + STRING(Feature) + '", Value, NULL))'
   ) 
   + ' FROM yourTable GROUP BY CustomerID'
FROM (SELECT Feature FROM yourTable GROUP BY Feature) 

因此,您将获得一些将在下一步中使用的字符串!

STEP #2

从第1步获取字符串,然后将其作为查询执行
输出是您询问的Pivot

标签:transpose,sql,sql-server,google-bigquery,mysql
来源: https://codeday.me/bug/20190829/1760848.html