Открыть рамку даты для BigQuery View (StandardSQL)

Я пытаюсь создать представление с помощью StandardSQL, которое будет автоматически иметь самые обновленные данные каждый раз, когда вы его открываете (BigQuery создает файл с данными трафика за день с датой в расширении имени).

Я использую что-то вроде

FROM `whatever.ga_sessions_201*` as GA WHERE _TABLE_SUFFIX BETWEEN '70101' AND '81231'

Несмотря на то, что это работает, когда я хочу выполнить запрос в обычном режиме, этого не происходит, когда я пытаюсь создать с его помощью представление. Думаю, я мог бы использовать запланированный запрос, но мне было интересно, есть ли способ создать представление с открытым фреймом даты (точно так же, как представления работают в Athena, если файлы правильно загружены в ведро S3, на которое вы указываете).

Заранее спасибо!


person Marc    schedule 18.09.2018    source источник
comment
этого не происходит, когда я пытаюсь создать представление с его помощью - в чем ошибка? Также посмотрите на это: stackoverflow.com/questions/28422504/   -  person Graham Polley    schedule 18.09.2018
comment
вот ошибка: не удалось сохранить представление. Плохая ссылка на таблицу независимо от того .ga_sessions_201 *; Для ссылок на таблицы в стандартных представлениях SQL требуются явные идентификаторы проекта.   -  person Marc    schedule 18.09.2018
comment
ссылка, которую вы мне дали, похоже, предназначена для таблиц, которые у меня нет проблем с созданием, как это, но не для представлений?   -  person Marc    schedule 18.09.2018
comment
Для просмотров, я думаю, вам тоже нужно название проекта. например. projectname.dataset.table   -  person Bobbylank    schedule 18.09.2018
comment
@Bobbylank Ага, работает. Благодарность!!   -  person Marc    schedule 18.09.2018


Ответы (1)


Вы можете сделать что-то вроде этого:

WITH CTE AS
(SELECT max(_TABLE_SUFFIX) tableSuffix
FROM `projectname.dataset.table_*`)

SELECT *
FROM `projectname.dataset.table_*`
join CTE ON _table_suffix = tableSuffix

Может быть, при большом количестве столов это будет дорого?

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

person Bobbylank    schedule 18.09.2018
comment
проблема не в том, что я жестко запрограммировал начало и конец периода времени с помощью _table_suffix, а в том, что FROM 'any.ga_sessions_201 *' имеет * в конце - person Marc; 18.09.2018