2017-08-08 4 views
0

auf diesem Anknüpfend - Bigquery combining repeated fields from 2 different tablesBigQuery mehr UNNEST in einem einzigen wählen

Die obige Lösung von @ElliottBrossard war das, was ich suchte. Vielen Dank! Ich muss die Felder von oben UNNEST, um Aggregationen von Studenten zu bekommen. Sagen wir, es gibt ein zusätzliches Feld für Kosten (pro Kurs). die Ausgabe von der oben in einem student_courses Tabelle unter der Annahme, werde ich so etwas wie,

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

Meine erwartete Antwort von der oben tun muß, ist so etwas wie, 3, 4, $ 800 (vorausgesetzt, die 4 Gänge jeweils $ 200 kosten) . Die obige Abfrage verhält sich wie ein Cross-Join. Ist es möglich, Aggregate aus mehreren Nestern mit einem einzigen Select zu erhalten?

Antwort

0

Hier ist eine Idee, obwohl es ein wenig weitschweifig ist:

#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 
); 

ich einen Tippfehler oder zwei von meinem Handy gemacht haben, aber hoffentlich hilft das Ihnen den Einstieg.

+0

Danke für die schnelle Antwort @ Elliott, das hilft. Ich sollte wahrscheinlich etwas Kontext hinzufügen. Wir versuchen, Datenstrukturen wie oben zu erstellen, um die Ad-hoc-Berichterstellung mit Tableau zu unterstützen. Angesichts der Empfehlungen, verschachtelte Strukturen zu verwenden, versuchen wir, unser denormalisiertes/abgeflachtes Modell zu ersetzen, ohne die Einfachheit vom Standpunkt des Endbenutzers zu beeinträchtigen. Da wir Hunderte von Maßnahmen haben, ist das obige vom Standpunkt der Implementierung aus nicht machbar. – Subah

+0

Um zu verdeutlichen, haben Sie Hunderte von sich unabhängig wiederholenden Feldern, über die Sie verschiedene Zählungen durchführen möchten? Ich habe eine Antwort auf die Frage geschrieben, die du gestellt hast ... nicht die, die du nicht kommuniziert hast. –

+0

und damit die Klarstellung von meinem Teil :) – Subah

Verwandte Themen