2012-08-09 97 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

相關問題