2017-02-15 5 views
0

Mein Ziel ist Beitritt nun beitreten sample_contents mit sample_commits von repo_name02 Tabellen auf BigQuery mit Github-Datensatz

1) Zuerst kam ich mit filessample_contents so dass Sie enthält repo_name

SELECT line,a.id,sample_path,sample_repo_name,repo_name 
FROM (
    SELECT * FROM (
     SELECT (SPLIT(content, '\n')) line , a.id,sample_path,sample_repo_name,repo_name 
      FROM (
       (SELECT * FROM [bigquery-public-data:github_repos.sample_contents] WHERE sample_path LIKE '%.java')    
       ) a JOIN (SELECT * FROM [bigquery-public-data:github_repos.files]) b ON a.id=b.id 
     ) WHERE REGEXP_MATCH(line, '^String|^private int|^public|[.]') 
) 

2) Nun, Ich habe folgendes query erwartet, um alle Zusagen für alle gegebenen Dateien durch repo_name zu erhalten:

SELECT (CASE WHEN line CONTAINS 'String' THEN 'String' ELSE '' END) AS column_1, 
(CASE WHEN line CONTAINS 'public' THEN 'public' ELSE '' END) AS column_2,line,a.id,sample_path,sample_repo_name,X.repo_name 
FROM (
    SELECT * FROM (
     SELECT (SPLIT(content, '\n')) line , a.id,sample_path,sample_repo_name,repo_name 
      FROM (
       (SELECT * FROM [bigquery-public-data:github_repos.sample_contents] WHERE sample_path LIKE '%.java')    
       ) a JOIN (SELECT * FROM [bigquery-public-data:github_repos.files]) b ON a.id=b.id 
     ) WHERE REGEXP_MATCH(line, '^String|^private int|^public|[.]') 
) 
    X JOIN (SELECT * FROM [bigquery-public-data:github_repos.sample_commits]) Y ON X.repo_name=Y.repo_name LIMIT 100 

enter image description here Aber es gibt 0 Ergebnis zurück! Können Sie mir helfen, dieses Problem zu lösen?

Danke,

+0

Ich bin ein wenig verloren. .. Was ist das Endziel dieser Abfragen? –

+0

Um "Status" von jedem Java-Code pro Repo pro Commit zu verfolgen –

+0

'Zustand'? nicht sicher noch ... –

Antwort

0

Ich bin nicht sicher, was Sie hier zu tun versuchen, aber ein guter Ort, um zu überprüfen ist die „Erklärung“ aus.

enter image description here

Beachten Sie, dass auf den Anfangsphasen der Abfrageverarbeitung ~ 2 Milliarden Zeilen in Stufe 2 und ~ 1,7 Milliarden Zeilen in Stufe 7. irgendwie das zu 10 Milliarden Zeilen in der Stufe 37 übersetzt wird (JOIN oder explodier TEILT()?).

Betrachten Sie, was 37 Stadium geschieht auf ... weil keine Zeile von denen 10 Milliarden geht die Filter (entweder die WHERE oder die Gleichheit JOIN):

enter image description here

Verwandte Themen