如何从BigQuery获取几个列?

时间:2012-08-09 02:24:25

标签: google-bigquery data-mining traminer

我正在查询BigQuery上的github公共数据集。目前,我对所需内容的最佳查询如下所示。

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_name”)的repository_owner twitter(或任何其他用户)的所有事件(“type”),但是在一个列中。

然而,我真正想要的是在列中包含所有事件(“类型”),每个存储库(“repository_name”)一列,或多或少像这样:

bootstrap     commons    twui
WatchEvent    PushEvent  PushEvent
WatchEvent    WatchEvent PushEvent

时间戳(“created_at”)仅作为排序机制相关。列不需要同样长,并且单行上的事件不需要同时发生。

我将使用它将事件放入R包TraMineR进行序列分析。

我该如何做到这一点?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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