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

我在将BigQuery(15亿行)中的大量数据表从行转换为列时遇到问题。我可以弄清楚在进行硬编码时如何处理少量数据,但处理量如此之大。该表的快照如下所示:

+--------------------------+ | CustomerID Feature Value |

+--------------------------+ | 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个具有3000个功能的不同的customerID,并且并非每个customerID都具有相同的功能,因此,某些customerID可能具有2000个功能,而有些具有3000个功能。并具有代表所有功能的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步获得的字符串作为查询执行它,

输出是您询问的数据透视表

以上是 如何在BigQuery / SQL中将行转换为包含大量数据的列? 的全部内容, 来源链接: utcz.com/qa/407287.html

回到顶部