CONCAT in FROM
不起作用:
SELECT
*
FROM
CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
错误:
找不到表值函数:CONCAT位于[4:3]
create function
不起作用:
create temporary function getTableName() as (CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo')));
错误:
CREATE TEMPORARY FUNCTION语句之后必须是实际查询。
如何生成包含今天日期的表名?
答案 0 :(得分:1)
在这种情况下,我建议您使用Wild tables in BigQuery,它允许您使用Standard SQL中的某些功能。
使用Wild Tables,您可以使用 _TABLE_SUFFIX ,它使您能够过滤/扫描包含此参数的表。语法如下:
SELECT *
FROM `test-proj-261014.sample.test_*`
where _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE)
我希望这会有所帮助。
答案 1 :(得分:0)
您的第一个查询应如下所示:
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语句后进行实际查询”。这是因为一旦定义了临时功能,则必须使用实际查询来使用该功能,然后该功能的有效性就会消失。要定义持久性UDF并在多个查询中使用它们,请浏览link来定义持久性函数。您可以在多个查询中重用持久性UDF,而只能在单个查询中使用临时UDF。