Использовать одну и ту же таблицу в запросе, но с разными датами - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь создать отчет с данными за эти годы и данные за прошлые годы.В настоящее время я изменяю даты в этом запросе:

SELECT TransactionDate, Source, Medium, Campaign, AdContent,
       Keyword, Country, Device, Region,
       ROUND(SUM (Revenue),2) AS Equity_Revenue,
       ROUND(SUM (Sales),2) Equity_Sales,
FROM (TABLE_DATE_RANGE([analytics.order_attribution_], TIMESTAMP('2018-02-26'), TIMESTAMP('2018-03-04')))

WHERE ReportType = 'Daily Equity Report' AND Channel = 'Email'
GROUP BY TransactionDate, Source, Medium, Campaign, AdContent,
         Keyword, Country, Device, Region,

ORDER BY Equity_Revenue DESC;

и меняю даты.Можно ли добавить тот же запрос внизу, чтобы я мог изменить даты и выполнить запрос один раз

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете использовать динамические диапазоны дат вместо фиксированных дат с помощью TABLE_DATE_RANGE, поэтому вам не нужно редактировать запрос, чтобы в отчете отображалась актуальная информация.Вот пример в LegacySQL, который показывает данные за последние 7 дней:

FROM (TABLE_DATE_RANGE([analytics.order_attribution_], 
DATE_ADD(CURRENT_TIMESTAMP(), -7, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))

Вы также можете связать два вместе, чтобы получить только те недели, которые вам нужны, по сравнению с прошлым годом.

Есливы бы хотели изменить свой квест на StandardSQL, вы могли бы сделать это следующим образом: я потяну две недели, одну с прошлой недели, а другую за прошлый год:

SELECT * 
FROM `analytics.order_attribution_*`
WHERE parse_DATE('%y%m%d', _table_suffix) 
   BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND 
   DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) OR   parse_DATE('%y%m%d', _table_suffix)
   BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 372 DAY) AND DATE_SUB(CURRENT_DATE(), INTERVAL 366 DAY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...