BigQuery嵌套查询无法创建自定义列问题求助
BigQuery嵌套查询计算列报错/不显示的解决方法
你的问题出在嵌套查询的语法错误:你把concat、DATETIME_TRUNC这些计算语句放在了外部查询的SELECT子句外面,BigQuery根本不会识别这些语句作为查询的一部分——要么因为语法错误报错,要么就算侥幸运行,也不会把这些计算列加入结果集。
另外注意:BigQuery中引用表必须用**反引号()**,不是单引号('),单引号是用来定义字符串的,之前脚本里的FROM 'my_table'`本身就是错误的,会导致表无法被识别。
下面是两种正确的写法:
写法一:嵌套子查询
select *, -- 先获取子查询中所有重命名后的列 concat(a_understandable_name, b_understandable_name) as extended_name, DATETIME_TRUNC(start_time, DAY) as Day from ( Select a_random_name as a_understandable_name, b_random_name as b_understandable_name, start_time FROM `my_table` -- 用反引号包裹表名 ) renamed_temp_table -- 给子查询起临时表名(可选,提升可读性)
写法二:WITH子句(CTE,推荐)
如果后续还有更多查询逻辑,用CTE会更清晰,可读性更强:
WITH renamed_columns AS ( Select a_random_name as a_understandable_name, b_random_name as b_understandable_name, start_time FROM `my_table` ) select *, concat(a_understandable_name, b_understandable_name) as extended_name, DATETIME_TRUNC(start_time, DAY) as Day from renamed_columns
这两种写法都会先完成列的重命名,再基于重命名后的列做计算,同时正确生成你需要的extended_name和Day列。
内容的提问来源于stack exchange,提问作者littlequery
相关产品推荐
相关产品推荐

