bigquery:检索给定唯一组合的信息

dfty9e19  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(415)

目前,我有以下带有产品/城市组合的r data.table对象:

product_code       place
product1_code      city1
product2_code      city1
product3_code      city1
product4_code      city1
product1_code      city2
product6_code      city2
product9_code      city3

我想做的是将前面的产品代码/城市组合传递给一个查询字符串,然后将其传递给bigrquery。如下所示:

SELECT *
FROM my.table
WHERE city AND product_code in (list.with.unique.previous.combinations)

但是,我不知道如何将唯一的组合作为列表传递,所以它只检索那些特定组合的信息。我知道我可以用 glue 库将单个元素传递给查询字符串,如下所示:

SELECT *
FROM my.table
WHERE city = {city.selected} AND product_code = {product.code.selected}

但这只适用于1个组合。
如果有人能给我一个想法,我可以通过整个组合列表我会很感激。

neskvpey

neskvpey1#

下面的示例应该让您了解如何在bigquery标准sql中实现它


# standardSQL

WITH combinations AS (
  SELECT 'product1_code' product_code, 'city1' place UNION ALL
  SELECT 'product2_code', 'city1' UNION ALL
  SELECT 'product3_code', 'city1' UNION ALL
  SELECT 'product4_code', 'city1' UNION ALL
  SELECT 'product1_code', 'city2' UNION ALL
  SELECT 'product6_code', 'city2' UNION ALL
  SELECT 'product9_code', 'city3' 
)
SELECT *
FROM `project.dataset.table` t
WHERE (city, product_code) IN (
  SELECT AS STRUCT place, product_code 
  FROM combinations
)

如你所见,你需要结合 city 以及 product_code 进入结构- (city, product_code) 并在组合列表中查找它,组合列表也以结构形式显示 SELECT AS STRUCT place, product_code FROM combinations

相关问题