列表中ID的Bigquery



目前我知道如何使用BigQuery Python API以的形式从<company_warehouse>.<table>进行查询

SELECT id, field1, field2, ...
FROM '<company_warehouse>.<table>'
WHERE field1==...

我想做的是执行上面的查询,但添加了一个限制,即只搜索总数据的一个子集,该子集被限制为我在Python中拥有的一大组(列表(ID(作为列表或熊猫系列(。即,与添加子句WHERE id IN (id1,...,idn)相同,但这种方法对于非常大的n是低效的。

这个问题有一些SQL答案建议使用内部联接,但这些答案并不是用明确可用的代码编写的(即使在其他SQL DBMS中也是如此(。如何在BigQuery中完成此操作?

您可以编写:

WHERE field1 = ... AND 
id IN UNNEST(['id1', 'id2', 'id3', 'id4'])

您可以使用数组:

SELECT id, field1, field2, ...
FROM '<company_warehouse>.<table>'
WHERE field1 = ... AND
id in (select el from unnest(array[1, 2, 3]) el)

array[1, 2, 3]可以作为参数传入。

最新更新