将多行查询粘贴到 BigQuery SQL shell
Posted
技术标签:
【中文标题】将多行查询粘贴到 BigQuery SQL shell【英文标题】:Pasting multi-line queries into BigQuery SQL shell 【发布时间】:2019-06-04 18:05:40 【问题描述】:我正在运行 BigQuery 命令行 shell,但我无法成功运行多行查询(也就是带换行符的查询),因为每当我将查询粘贴到 shell 中时,每一行都会单独运行,而不是全部运行在一起。
例如,
select * from table
工作正常,因为它在一行中,但如果我尝试运行
select
*
from
table
它不起作用,因为每一行都是单独运行的。
有什么方法可以让它工作吗?
【问题讨论】:
您使用 bq shell 有什么原因吗?您可以在 UI 中或使用bq query "select ......"
执行多行查询。
@ECris 如果通过服务帐户启用对表的访问,则无法从 UI 访问。 bq query "select ......"
也不适用于包含单引号的查询。
我也有同样的问题。有这方面的更新吗?
【参考方案1】:
query
命令创建一个运行提供的 SQL 查询的查询作业。在文档Using the bq command-line tool 中,您可以找到一些示例,例如:
bq query --nouse_legacy_sql \
'SELECT
COUNT(*)
FROM
`bigquery-public-data`.samples.shakespeare'
【讨论】:
这是来自命令行,而不是在 bq shell 中。我还没有找到在 bq shell 中进行多行查询的方法。【参考方案2】:老实说,我也找不到合适的帮助,所以我使用 CONCAT 函数创建了一些解决方法。请注意,我在 FROM 子句之前有一个空格。希望他的帮助。
DECLARE table_name STRING DEFAULT '20220214'; DECLARE 查询字符串;
SET query = CONCAT("""select user_pseudo_id, user_id""",
""" FROM `app.analytics.events_""" || table_name || """` where user_id IS NOT NULL group by user_pseudo_id, user_id""");
EXECUTE IMMEDIATE query;
【讨论】:
以上是关于将多行查询粘贴到 BigQuery SQL shell的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BigQuery SQL 中将字符串列拆分为多行单个单词和单词对?