Google bigquery 如何生成包含今日';谁的日期? 我尝试了什么,但没有成功

Google bigquery 如何生成包含今日';谁的日期? 我尝试了什么,但没有成功,google-bigquery,Google Bigquery,CONCAT-in-FROM不工作: SELECT * FROM CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo')) create temporary function getTableName() as (CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))); 错误: 未找到表

CONCAT-in-FROM
不工作:

SELECT
  *
FROM
  CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
create temporary function getTableName() as (CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo')));
错误:

未找到表值函数:CONCAT at[4:3]

创建函数
不起作用:

SELECT
  *
FROM
  CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo'))
create temporary function getTableName() as (CONCAT('foo_', FORMAT_TIMESTAMP('%Y%m%d', CURRENT_TIMESTAMP(), 'Asia/Tokyo')));
错误:

创建临时函数语句后必须跟一个实际查询

问题
如何生成包含今天日期的表名?

您的第一个查询应如下所示:

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()

“创建临时函数语句后必须跟一个实际查询”错误是因为一旦定义了临时函数,您就必须使用实际查询来使用该函数,然后函数的有效性就会消失。要定义持久性UDF并在多个查询中使用它们,请通过定义永久函数。您可以在多个查询中重用持久性UDF,而只能在单个查询中使用临时UDF。

在这种情况下,我建议您使用,它允许您在标准SQL中使用某些功能

对于野生表,您可以使用\u TABLE\u SUFFIX,它使您能够筛选/扫描包含此参数的表。语法如下:

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

希望有帮助。

我试试这个。获取错误
无效值:表名“tableName”缺少数据集,而请求中未设置默认数据集。在[4:1]
@shingo.nakanishi,我刚刚用一个有效的解决方案更新了我的答案。你能试试吗?我为我以前的错误感到抱歉。