[英]How to build dynamic query argument for external query?
I want to build dynamic query parameter based on declared variable for EXTERNAL_QUERY
.我想基于
EXTERNAL_QUERY
的声明变量构建动态查询参数。 So I declare STRING
variable via concatenation 2 strings:所以我通过连接 2 个字符串声明
STRING
变量:
DECLARE str STRING DEFAULT "SELECT * FROM public.stats WHERE import_date >= "||"'2021-11-29'";
Then trying to set this variable as argument into EXTERNAL_QUERY
:然后尝试将此变量设置为
EXTERNAL_QUERY
的参数:
SELECT * FROM EXTERNAL_QUERY("dataset.location.conn_name", str);
It's returns an error:它返回一个错误:
Query error: Invalid table-valued function EXTERNAL_QUERY Connection argument in EXTERNAL_QUERY must be a literal string or query parameter
What I do wrong?我做错了什么?
Not perfect, but works for me.不完美,但对我有用。
DECLARE str STRING DEFAULT '''"SELECT * FROM public.stats WHERE import_date >= "'''||"'2021-11-29'";
EXECUTE IMMEDIATE """
SELECT * FROM EXTERNAL_QUERY(\"dataset.location.conn_name\",?);
"""
USING str
Thanks @Timogavk for your answer, I spent a while looking for a solution.感谢@Timogavk的回答,我花了一段时间寻找解决方案。
Though in my case I had to change the DECLARE for something more like this, without the additional quotations for it to work (I was working on dynamically querying different tables):尽管在我的例子中,我不得不将 DECLARE 更改为更像这样的东西,但没有额外的引号才能工作(我正在动态查询不同的表):
DECLARE str STRING DEFAULT 'SELECT * FROM ' || <table_name> || ' Limit 10';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.