【问题标题】:Bigquery for ID in a list列表中 ID 的大查询
【发布时间】:2021-06-14 18:26:48
【问题描述】:

目前我知道如何使用 BigQuery Python API 从表单中的<company_warehouse>.<table> 进行查询

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

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

This question 有一些 SQL 答案建议使用内部连接来完成,但答案不是用清晰可用的代码编写的(即使在其他 SQL DBMS 中也是如此)。如何在 BigQuery 中完成这项工作?

【问题讨论】:

    标签: python sql google-bigquery inner-join


    【解决方案1】:

    你可以写:

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

    【讨论】:

      【解决方案2】:

      你可以使用数组:

      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] 可以作为参数传入。

      【讨论】:

      • 我应该如何将数组作为参数传入?目前我的查询语法将查询作为 Python 中的字符串
      猜你喜欢
      • 2011-12-06
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多