본문 바로가기
분석/데이터분석

[BigQuery] 특정 list의 데이터를 테이블 처럼 사용하기

by 여우요원 2025. 6. 18.

 

예를 들어 전체 데이터 중에서 특정 제품들만 집계를 하는 경우라고 가정해보자.

 

이렇게 쿼리를 작성할 수 있을 것이다.

 

select product_id, count(1) as count_sale

from tbl_sales

where product_id in (123,23, 24, ...., 432)

group by product_id

 

그런데, 해당 product_id 가 몇 백개정도로 만다거나, 쿼리의 여기 저기 쓰여야한다면 위의 쿼리 방식은 매우 불편한 방식이 된다.

 

그래서 Bigquery에서는 이런 식으로 작성하면 편리하다.

 

with 
product_list as (
  select product_id
  from unnest([
  684, 728, 686, 468, 662, 729, 451, 709, 617, 734, 
  406, 670, 708, 870, 873, 690, 741, 475, 479, 251, 
  682, 886, 661, 710, 746, 871, 476, 909, 482, 1173, 
  891, 489, 737, 853, 685, 963, 665, 722, 712, 421, 
  474, 466, 750, 500, 694, 32, 872, 497, 998, 744, 473, 
  916, 88, 887, 588, 932, 915, 486, 485, 733, 578, 
  1296, 693, 738, 72, 582, 933, 488, 619, 687, 480, 878, 
  478, 9, 713, 943, 764, 95, 1184, 730, 1386, 920, 
  462, 56, 935, 745, 467, 695, 699, 876, 715, 938, 
  967, 951, 751, 409, 672, 570, 423, 1208, 706, 1185, 1166, 
  491, 681, 972, 1170, 1171, 1172, 1169]) product_id
)
select
	s.product_id 
    , count(1) as cnt_sale
from tbl_sales s 
join product_list p on s.product_id = p.product_id
group by 1