2017-08-08 86 views
0

這個跟進 - Bigquery combining repeated fields from 2 different tables在單一的BigQuery多個UNNEST選擇

從@ElliottBrossard上述解決方案是什麼,我一直在尋找。謝謝!我需要UNNEST從上面的領域得到學生的聚合。說,有一個額外的成本領域(每門課程)例如,假設從上面的student_courses表中的輸出,我需要從上面做這樣的事情,

SELECT COUNT(DISTINCT phone.number), COUNT(DISTINCT courses.Id), 
SUM(courses.Cost) 
FROM student_courses, UNNEST(phone), UNNEST(courses) 

我預期的答案是一樣的東西,3,4,$ 800(假設4門課程的費用每次200 $) 。上面的查詢最終像交叉連接一樣工作。是否可以使用單個Select從多個巢中獲取聚合?

回答

0

這裏有一個想法,雖然這是一個有點冗長:

#standardSQL 
SELECT 
    (SELECT COUNT(DISTINCT number) 
    FROM UNNEST(numbers) AS number), 
    (SELECT COUNT(DISTINCT course_id) 
    FROM UNNEST(course_ids) AS course_id), 
    course_sum 
FROM (
    SELECT 
    ARRAY_CONCAT_AGG(
     ARRAY(SELECT number FROM UNNEST(phone)) 
    ) AS numbers, 
    ARRAY_CONCAT_AGG(
     ARRAY(SELECT id FROM UNNEST(courses)) 
    ) AS course_ids, 
    SUM((SELECT SUM(cost) FROM UNNEST(courses))) AS course_sum 
    FROM YourTable 
); 

我可能已經做出從我的手機一個錯字或兩個,但希望這有助於讓你開始。

+0

感謝您對@Elliott的快速反應,這有所幫助。我應該添加一些上下文。我們正在嘗試構建像上面這樣的數據結構以支持使用Tableau進行adhoc報告。鑑於使用嵌套結構的建議,我們試圖在不損害最終用戶立場的簡單性的情況下替換我們的非標準化/展平模型。由於我們有100多項措施,從實施的角度來看,以上可能是不可行的。 – Subah

+0

爲了澄清,你有幾百個獨立重複的字段,你想要執行不同的計數?我爲你問的問題寫了一個答案,而不是你沒有交流的問題。 –

+0

,因此從我的部分澄清:) – Subah