저는 사용자 활동을 날짜별로 분석하려고합니다. 첫 번째 단계는 교차 가입과 where 절을 사용하여 사용자 계정을 만든 이후 매일 매일의 테이블을 만드는 것입니다. 내 첫 번째 시도였다이 :각 BigQuery가 훨씬 더 빠르게 교차합니다.
SELECT
u.user_id as user_id,
date(u.created) as signup_date,
cal.date as date,
from rsdw.user u
cross join (select date(dt) as date from [rsdw.calendar] where date(dt) < CURRENT_DATE()) cal
where
date(u.created) <= cal.date
이 쿼리는 영원히 소요 (달력 테이블 2006 (3288 행 이후의 모든 날짜의 단지리스트) 사용자 테이블 ~ 100 만 행이 있습니다..). .. 너무 오랫동안 나는 그것을 1000 초 정도에 버렸다. 쿼리를 약간 조정 해 보았습니다. 내가 십자가에 "각"를 추가하면 가입 : 나는 "는 각각"하지만 테이블을 교환, 그냥 90 년대 완료 유지하는 경우, 마지막으로
Error: Cannot CROSS JOIN two tables with EACH qualifiers.
:
SELECT
u.user_id as user_id,
date(u.created) as signup_date,
cal.date as date,
from rsdw.user u
cross join each (select date(dt) as date from [rsdw.calendar] where date(dt) < CURRENT_DATE()) cal
where
date(u.created) <= cal.date
은 내가 errror를 얻을 수 !
SELECT
u.user_id as user_id,
date(u.created) as signup_date,
cal.date as date,
from (select date(dt) as date from [rsdw.calendar] where date(dt) < CURRENT_DATE()) cal
cross join each rsdw.user u
where
date(u.created) <= cal.date
왜 세 번째 반복이 더 빨리 발생하고 두 번째 결과가 오류가 발생하는 이유를 설명 할 수 있습니까?
필자는 테이블이 8MB보다 크거나 작지 않은 경우를 위해 각각의 것을 이해합니다. 이 문서의 https://cloud.google.com/bigquery/query-reference의 'EACH 수정 자'섹션을 참조하십시오. – alan