2012-08-09 45 views
1

我在查询BigQuery上的github公共数据集。目前,我所需要的最佳查询如下所示。如何从BigQuery中获取多个列?

SELECT type, created_at, repository_name FROM [githubarchive:github.timeline] 
WHERE 
    (created_at CONTAINS '2012-') 
AND repository_owner="twitter" 
ORDER BY created_at, repository_name; 

这给了我所有的事件为所有存储库,这个用户拥有从repository_owner的twitter(或任何其他用户)(“类型”)(“repository_name”),但在一列。

不过,我真正想要的是让所有的事件在列(“类型”),为每个库(“repository_name”)一列,或多或少是这样的:

bootstrap  commons twui 
WatchEvent PushEvent PushEvent 
WatchEvent WatchEvent PushEvent 

时间戳(“created_at”)只作为一个排序机制。这些列不一定需要等长,并且单行上的事件不需要同时发生。

我会用这个把事件放到R包的TraMineR中来做序列分析。

我该如何做到这一点?

回答

0

能完成这项工作?

SELECT type, created_at, repository_name 
FROM [githubarchive:github.timeline] 
WHERE 
    (created_at CONTAINS '2012-') 
AND repository_owner="twitter" 
GROUP BY type,created_at, repository_name; 
+0

没有,它仍然只创建一个列。另外,出于我的目的,数据按“created_at”排序以便表示时间轴至关重要。 – histelheim 2012-08-09 11:42:11

0

我不知道我理解你希望完成什么,但可以通过一些事来报复列如下:

SELECT type, bootstrap, commons, twui 
FROM (
     SELECT type, 
       SUM(IF(repository_name = 'bootstrap', 1, 0)) AS bootstrap, 
       SUM(IF(repository_name = 'commons', 1, 0)) AS commons, 
       SUM(IF(repository_name = 'twui', 1, 0)) AS twui 
     FROM [githubarchive:github.timeline] 
     WHERE created_at CONTAINS '2012-' 
     AND repository_owner = "twitter" 
     GROUP BY type 
     ) 
ORDER BY type 
+0

谢谢!这很接近,但并不完全。我需要列中的所有事件(“类型”)。我打算把它传递给traminer(一个R包)进行序列分析,所以我真正想要的是事件列表。总结他们在这一点上失败了我的目的,我想要的原始数据。基本上我只想找到一种自动重复大量存储库原始查询(“repository_name”)的方法,而无需手动完成。 – histelheim 2012-08-10 00:41:11

相关问题