首页 > 解决方案 > 在标准 sql GBQ 中使用创建表函数时在表名中添加今天日期

问题描述

我对 GBQ 很陌生,任何帮助都将不胜感激。

我在下面有一个查询:

#Standard SQL
create or replace table  `xxx.xxx.applications`
as select * from  `yyy.yyy.applications` 

我需要做的是在表名的末尾添加今天的日期,所以它xxx.xxx.applications_<todays date> 基本上是用 Application 创建一个文件名,但在名称 applications 的末尾添加日期。

我正在编写一个程序来在每次运行时创建一个表,但每次创建表时都需要添加日期以进行审计(作为备份)。我到处搜索,但无法得到确切的答案,这在查询编辑器中是否可行,因为我需要将其存储为 Proc。

提前致谢

标签: google-bigquery

解决方案


BigQuery目前不支持动态 SQL,这意味着这种构造是不可能的。当前BigQuery支持参数化查询,但不能使用参数来动态更改源表的名称,如您在提供的链接中所见。

BigQuery 支持查询参数,以在使用用户输入构建查询时帮助防止 SQL 注入。此功能仅适用于标准 SQL 语法。查询参数可以用作任意表达式的替代品。参数不能用作标识符、列名、表名或查询的其他部分的替代品。

如果您需要基于某个变量的值构建查询,我建议您使用 中的一些脚本SHELLPython任何其他编程语言来创建 SQL 语句,然后使用bq命令执行它。

另一种方法可能是使用某些受支持语言的BigQuery 客户端库而不是 bq 命令。


推荐阅读