ich einige Tabellen mit Namen wie counts_20171220
in BigQuery mit Zeilen in diesem Format (es gibt nur eine Zeile pro contentId
pro Tag):Collecting pro-Tag-Ergebnisse für Abfragen über datum partioned Tabellen
| contentId | views |
+-----------+-------+
| cb32edc0 | 728324|
| 52cbb1ff | 643220|
...
ich möchte für eine gegebenes contentId
für einen bestimmten Zeitraum eine Liste der Ansicht Zählung erzeugen, ohne Lücken, zB:
| date | views |
+------------+--------+
| 2017-12-01 | NULL | -- or 0
| 2017-12-02 | NULL | -- or 0
| 2017-12-03 | 728314 |
| 2017-12-04 | 328774 |
| 2017-12-05 | 28242 |
...
| 2017-12-20 | NULL | -- or 0
um dies zu tun, ich denke, ich *
und _table_suffix
verwenden müssen, aber ich bin kein a ble, um herauszufinden, wie man die Daten einfügt, für die contentId
kein Eintrag ist. Der nächstgelegene ich bekam haben, ist diese Abfrage:
#standardSQL
SELECT
_table_suffix AS date,
ARRAY_AGG(views) AS views
FROM
`test.counts_*`
WHERE
_table_suffix BETWEEN '20171201' AND '20171220'
AND contentId = 'cb32edc0'
GROUP BY
_table_suffix,
contentId
ORDER BY
date
Das Problem bei dieser Abfrage ist
- es Zeilen enthält nicht für alle Termine, nur für Daten, deren Tabelle einen Eintrag für
contentId
‚cb32edc0‘ hatte - aufgrund der Art und Weise es strukturiert ist ich brauche eine (nutzlose hier) Aggregatfunktion zu verwenden, zu extrahieren
views
Wie soll ich eine quer strukturieren Gefällt dir das? Ich würde glücklich sein, sowohl spezifische Hilfe für diese Abfrage als auch allgemeine Hinweise darauf zu erhalten, wie man Dinge wie diese erreicht, wenn man über date-partioned Tabellen abfragt.
Danke! Das ist eigentlich ziemlich elegant! – beta