拼接字符串作为表名执行SELECT查询失败如何解决?
解决方案
你当前的写法是将表名存为了字符串变量,BigQuery的静态SQL无法直接将字符串变量识别为查询表,需要使用动态SQL语法EXECUTE IMMEDIATE执行拼接完成的完整查询语句,修改后可用的代码如下:
DECLARE target_table STRING; DECLARE full_query STRING; -- 拼接目标表完整路径 SET target_table = CONCAT("report-viewer.analytics_278375497.events_", FORMAT_DATE("%Y%m%d", CURRENT_DATE())); -- 拼接完整查询逻辑 SET full_query = CONCAT(" SELECT -- 此处填写你需要的查询字段 * FROM `", target_table, "` LIMIT 1000 "); -- 执行动态SQL返回结果 EXECUTE IMMEDIATE full_query;
更简化的替代方案
针对Firebase导出到BigQuery的按日期分表的events表,你可以直接使用BigQuery原生的通配符表查询语法,不需要拼接动态SQL,写法更简洁:
SELECT -- 此处填写你需要的查询字段 * FROM `report-viewer.analytics_278375497.events_*` -- 用_TABLE_SUFFIX过滤对应日期的表 WHERE _TABLE_SUFFIX = FORMAT_DATE("%Y%m%d", CURRENT_DATE()) LIMIT 1000
内容的提问来源于stack exchange,提问作者Nathan Colosimo
相关产品推荐
相关产品推荐

