在BigQuery中创建指定文件路径计算字段时遇语法错误,求正确实现方式
在BigQuery中创建指定文件路径计算字段时遇语法错误,求正确实现方式
嗨,我来帮你搞定这个问题!你遇到的报错主要是三个核心原因:SQL里的反斜杠需要转义、BigQuery的字符串拼接逻辑和Alteryx不一样,还有日期类型不能直接和字符串拼接。我给你拆解一下正确的实现方式:
首先先理清楚几个关键差异:
- 在SQL字符串里,单个
\是转义字符,如果要表示实际的路径分隔符\,必须写成\\;要是开头的网络路径是\\,那就要写成\\\\(相当于转义两次)。 - BigQuery里不能用
+拼接字符串,要么用CONCAT()函数(参数用逗号分隔),要么用||拼接操作符。 - BigQuery里的日期函数
CURRENT_DATE()返回的是DATE类型,必须转换成字符串才能和其他文本拼接,用FORMAT_DATE()可以自定义日期格式,更灵活。
下面是两种可行的写法,你可以选自己习惯的:
写法1:用CONCAT()函数
SELECT CONCAT( '\\\\system80025ust.localoffice.comp-any.com\\FileShares\\RegionDivisionServices\\Nick\\Process Case LOS ', FORMAT_DATE('%Y-%m-%d', CURRENT_DATE()), -- 这里可以改成你需要的日期格式,比如'%m/%d/%Y' '.xlsx|||Data' ) AS File_name
写法2:用||拼接操作符(更贴近Alteryx的写法)
SELECT '\\\\system80025ust.localoffice.comp-any.com\\FileShares\\RegionDivisionServices\\Nick\\Process Case LOS ' || FORMAT_DATE('%Y-%m-%d', CURRENT_DATE()) || '.xlsx|||Data' AS File_name
再补充几个细节:
- 开头的
\\\\对应你Alteryx里的\\,因为每个\都需要转义,所以两个\要写成四个才能被正确识别。 - 路径里的每个
\都换成\\,这样BigQuery就不会再报“Illegal escape sequence”的错误了。 - 如果不需要自定义日期格式,也可以用
CAST(CURRENT_DATE() AS STRING)代替FORMAT_DATE(),不过前者的格式是固定的YYYY-MM-DD。
备注:内容来源于stack exchange,提问作者Vegeta1
相关产品推荐
相关产品推荐

