Как создать имя таблицы, содержащей сегодняшнюю дату? - PullRequest
0 голосов
/ 07 января 2020

CONCAT в FROM не работает

SELECT
  *
FROM
  CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))

Ошибка

Табличная функция не найдена: CONCAT в [4: 3]

функция создания не работает

create temporary function getTableName() as (CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo')));

Ошибка

После операторов CREATE TEMPORARY FUNCTION должен следовать фактический запрос.

Вопрос

Как мне сгенерировать имя таблицы с сегодняшней датой?

Ответы [ 2 ]

1 голос
/ 07 января 2020

В этом случае я бы порекомендовал вам использовать Wild-таблицы в BigQuery , что позволяет использовать некоторые функции в Standard SQL.

С Wild Tables вы можете использовать _TABLE_SUFFIX , это дает вам возможность фильтровать / сканировать таблицы, содержащие этот параметр. Синтаксис будет следующим:

SELECT *
FROM `test-proj-261014.sample.test_*` 
where _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE)

Надеюсь, это поможет.

0 голосов
/ 07 января 2020

Ваш первый запрос должен go примерно так:

select CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))

Для создания временной функции используйте следующий код:

create temp function getTableName() as
((select CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
));
select getTableName()

Ошибка "CREATE TEMPORARY FUNCTION инструкции должны быть с последующим реальным запросом. " потому что, как только временные функции определены, вы должны использовать фактический запрос, чтобы использовать эту функцию, и тогда валидность функции исчезнет. Чтобы определить постоянные пользовательские функции и использовать их в нескольких запросах, пожалуйста, go через ссылку для определения постоянных функций. Вы можете повторно использовать постоянные пользовательские функции в нескольких запросах, тогда как вы можете использовать временные пользовательские функции только в одном запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...