Bigquery: получение информации по уникальным комбинациям - PullRequest
0 голосов
/ 10 июля 2020

В настоящее время у меня есть следующий объект 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

Я хотел бы передать предыдущие комбинации product_code / city в строку запроса, а затем передать это к bigrquery. Примерно так:

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

Однако я не знаю, как я могу передать уникальные комбинации в виде списка, поэтому он извлекает информацию только для этих c комбинаций. Я знаю, что могу использовать библиотеку glue для передачи отдельных элементов в строку запроса примерно так:

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

, но это будет работать только для 1 комбинации.

Если бы кто-нибудь мог дать Я был бы признателен за представление о том, как передать весь список комбинаций.

1 Ответ

1 голос
/ 10 июля 2020

Пример ниже должен дать вам представление о том, как этого можно достичь в BigQuery Standard 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 в STRUCT - (city, product_code) и найдите его в списке комбинаций, представленных также как структура через SELECT AS STRUCT place, product_code FROM combinations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...