将每个记录的多个字段转换为多个记录和一个字段

时间:2016-05-11 18:13:52

标签: google-bigquery

我正在尝试将每个记录的多个字段(在本例中为三个字段)转换为多个记录中的单个字段。例如,如果架构是

 userId, timestamp, field1, field2, field3

我想将其转换为

 userId, timestamp, field

e.g。

 abc123, 12:00:00, dog, dog, bird
 abc789, 12:00:01, wolf, sheep, horse

会变成

 abc123, 12:00:00, dog
 abc123, 12:00:00, dog
 abc123, 12:00:00, bird
 abc789, 12:00:00, wolf
 abc789, 12:00:00, sheep
 abc789, 12:00:00, horse

排序无关紧要

这是因为这些字段的数据是并行捕获的,但我希望能够计算这些字段中特定值的显示次数,无论它们是在field1,field2还是field3中。具体来说,我希望能够计算出2只狗,1只,1只,1只,1只,1只,1只,1只羊和1匹马。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

为了完整起见,您可以使用standard SQL(取消选中"使用传统SQL"框"显示选项")和数组文字来实现此目的;无需连接然后拆分。例如,

SELECT
  userId,
  timestamp,
  [field1, field2, field3] AS field 
FROM YourTable;

答案 1 :(得分:2)

for BigQuery Legacy SQL:

SELECT 
  userId, 
  timestamp, 
  SPLIT(CONCAT(field1, ',', field2, ',', field3)) AS field 
FROM YourTable