table_201710까지 sample 및 table_201606, table_201607이라는 데이터 세트가 있습니다. 그렇다면 내가하고 싶은 일은 table_201710 인 최신 TABLE SUFFIX에서 데이터를 가져 오는 것입니다.BigQuery의 최신 테이블 파티션 와일드 카드
WITH max_table_time AS(
SELECT
TIMESTAMP_ADD(MAX(time), INTERVAL 1 HOUR) AS max_time,
FORMAT_DATE("%Y%m", DATE(MAX(time))) AS par
FROM
`sample.table_*`
),
xyz as(
SELECT id, sum(total_a) as total_b, sum(total_c) as sum_total
FROM `sample.table_*`
WHERE _TABLE_SUFFIX = (SELECT par from play_partitions)
GROUP BY video_id
)
SELECT * FROM xyz
어떻게 든 모든 (table_201710까지 table_201606에서) 테이블하지만 결과를 통해 위의 쿼리, 스캔 (table_201710 데이터) 괜찮 : 다음은 내 쿼리입니다. 내가하려고 할 때
그러나, 결과는 다른이 :
WITH max_table_time AS(
SELECT
TIMESTAMP_ADD(MAX(time), INTERVAL 1 HOUR) AS max_time,
FORMAT_DATE("%Y%m", DATE(MAX(time))) AS par
FROM
`sample.table_*`
),
xyz as(
SELECT id, sum(total_a) as total_b, sum(total_c) as sum_total
FROM `sample.table_*`
WHERE _TABLE_SUFFIX = '201710'
GROUP BY video_id
)
SELECT * FROM xyz
위의 쿼리, table_201710에 자리 잡고 단지 스캔 table_201710 및 결과 데이터. 첫 번째 쿼리와 달리이 테이블은 모든 테이블을 스캔하지만 table_201710에있는 올바른 데이터를 얻습니다.
어떻게 첫 번째 쿼리가 모든 테이블을 스캔 할 수 있습니까? 왜냐하면 첫 번째 쿼리를 수행 할 때 BigQuery 콘솔은 프로세스에서 처리 된 200MB 데이터를 사용하는 두 번째 쿼리 대신 10GB 데이터를 사용한다고 말하기 때문입니다.
이유가 무엇인지, 누군가 설명 할 수 있습니까?