When I query BQ with ROLLUP by potentially large set of grouping criteria field (in this case campaign_group_id
)
for example:
SELECT
campaign_group_id AS campaign_group_id,
DATE(DATE_ADD(TIME, 3, 'HOUR')) AS DAY,
SUM(impressions) AS imps
FROM
[browser_traffic.2016_05_28],
[browser_traffic.2016_05_29]
WHERE
( DATE_ADD( TIME, 3, "HOUR") >= '2016-05-28 00:00:00'
AND DATE_ADD( TIME, 3, "HOUR") < '2016-05-30 00:00:00' )
GROUP EACH BY ROLLUP (campaign_group_id, DAY)
ORDER BY DAY ASC, campaign_group_id ASC
LIMIT 500
BQ returns many rows with subtotals which is not applicable in my use case:
+-------------------+------+-----------+
| campaign_group_id | day | imps |
+-------------------+------+-----------+
| NULL | NULL | 158423933 |
| 61 | NULL | 0 |
| 496 | NULL | 79870 |
| 497 | NULL | 10492 |
| 809 | NULL | 0 |
| 936 | NULL | 2451 |
| 937 | NULL | 0 |
| 940 | NULL | 6844 |
| 942 | NULL | 207685 |
| 946 | NULL | 0 |
| 961 | NULL | 0 |
| 975 | NULL | 16167 |
| 976 | NULL | 15767 |
| 1018 | NULL | 0 |
| 1020 | NULL | 0 |
| 1022 | NULL | 766875 |
| 1039 | NULL | 355765 |
...
I need to somehow reduce subtotal rows from result but leave intact grand total row (which is first row in above result)
Is it possible that BQ returns only grand total row for selected fields?
You can filter the result of the query with another SELECT statement:
SELECT campaign_group_id, day, imps
FROM (
... your rollup query with LIMIT removed ...
)
WHERE (day IS NOT NULL) OR (campaign_group_id IS NULL)
LIMIT 500