谷歌大查询命令行执行复杂查询给出错误意外'('

Posted

技术标签:

【中文标题】谷歌大查询命令行执行复杂查询给出错误意外\'(\'【英文标题】:google big query command line executing complex query giving error unexpected '('谷歌大查询命令行执行复杂查询给出错误意外'(' 【发布时间】:2018-12-13 13:14:36 【问题描述】:

我有以下要在谷歌大查询控制台上执行的命令行查询。 它包含很多 REGEXP 它正在抛出错误

-bash: 意外标记 `(' 附近的语法错误

bq query --use_legacy_sql=false select s1.ID., REGEXP_REPLACE(REGEXP_REPLACE(UPPER(s1.d),r'(\|/|\?|\-|&)', ""),r'\s+',"_") D, CAST(s1.F as INT64) F FROM `myproject.mydataset.mytable` s1 where regexp_contains(s1.f,r'^[+-]?[[:digit:]]+$') and exists ( select xyz from `myproject.mydataset.mytable`  s2 where s1.d=s2.d)

我想在命令行中运行这个查询。

查询

select s1.ID., REGEXP_REPLACE(REGEXP_REPLACE(UPPER(s1.d),r'(\|/|\?|\-|&)', ""),r'\s+',"_") D, CAST(s1.F as INT64) F FROM `myproject.mydataset.mytable` s1 where regexp_contains(s1.f,r'^[+-]?[[:digit:]]+$') and exists ( select xyz from `myproject.mydataset.mytable`  s2 where s1.d=s2.d)

此查询在 GUI GBQ 中执行良好

如果能在命令行中执行此代码,我们将不胜感激。

【问题讨论】:

【参考方案1】:

在粘贴长而复杂的文本时,终端可能会弄乱一些字符,我建议将您的查询保存为 .sql 文件,然后运行:

bq query `cat /path-to-file/test.sql`

【讨论】:

感谢您的工作。实际上我想使用 os.system() 在 python 中运行这个命令你能建议怎么做吗?最终主要查询是 ('bq mk --use_legacy_sql=false --description "This is copy view" --view cat q_cmd.txt --project_id '+dest_project+" "+dest_dataset+"."+dest_view) 我想运行在python中你能建议我怎么做吗? 您尝试使用 python 运行 CLI 命令是否有特定原因?如果没有,您可以查看 google-cloud for python (gcloud-python.readthedocs.io/en/latest/bigquery/query.html)。这将使您可以非常轻松地使用 python 与 BigQuery 进行交互。认为您将需要使用 DDL 而不是“bq mk --view”。即创建或替换视图 temp.myview AS (SELECT '1' as col)

以上是关于谷歌大查询命令行执行复杂查询给出错误意外'('的主要内容,如果未能解决你的问题,请参考以下文章

谷歌大查询确切在哪里

允许谷歌大查询中的大结果

向谷歌大查询插入数据时出现 503 错误

谷歌大查询后端错误

谷歌大查询限制子句返回太多行

左加入谷歌大查询