Google bigquery Bigquery已解析与未解析SQL
这里提到的已解析和未解析sql之间的区别是什么: 考虑一下这个问题:Google bigquery Bigquery已解析与未解析SQL,google-bigquery,Google Bigquery,这里提到的已解析和未解析sql之间的区别是什么: 考虑一下这个问题: SELECT * FROM dataset.view1 JOIN dataset.view2 USING (key) 其中view1是: SELECT 1 AS key, 'foo' AS y; SELECT 1 AS key, 'bar' AS z; view2是: SELECT 1 AS key, 'foo' AS y; SELECT 1 AS key, 'bar' AS z; 在本例中,您可以将已解析的查询视为
SELECT * FROM dataset.view1 JOIN dataset.view2 USING (key)
其中view1
是:
SELECT 1 AS key, 'foo' AS y;
SELECT 1 AS key, 'bar' AS z;
view2
是:
SELECT 1 AS key, 'foo' AS y;
SELECT 1 AS key, 'bar' AS z;
在本例中,您可以将已解析的查询视为包含以下内容的JSON对象/原型消息:
{
"query": "SELECT * FROM dataset.view1 JOIN dataset.view2 USING (key)"
"views":
[
{
"name": "view1",
"sql": "SELECT 1 AS key, 'foo' AS y;"
},
{
"name": "view2",
"sql": "SELECT 1 AS key, 'bar' AS z;"
}
]
}
因此,解析的查询长度是查询长度加上视图的总和。解析的查询长度限制足够高,通常与标准SQL查询无关。不过,对于旧式SQL查询,诸如
TABLE\u DATE\u RANGE
之类的函数就像宏一样,可以将查询扩展到所有匹配表的并集,因此更容易得到较大的解析查询大小。非常感谢。对于标准SQL,解析查询大小没有限制?它也是12MB,但您必须非常努力才能实现这一点,例如,引用多个大型逻辑视图的1 MB查询。实际上,我正在通过google python客户端库执行参数化的标准sql查询,并传递一个50万个客户ID列表的查询参数,任务正在中断。我的sql:“SELECT*from temp.customers where customer_id in UNNEST(@cust_id))有没有其他更好的方法来执行这种查询,在我的应用程序(python)代码的“in”操作符中包含大量数据?