2017-12-23 4 views
0

가 확인하려면 확인 ?어떻게 매우 저렴, 우리는이 쿼리를 사용하여 테이블이 존재하는 경우

where 절에서 _PARTITIONTIME을 사용하여 select를 사용할 수 있지만 limit 절에 관계없이 파티션에있는 모든 데이터 (존재하는 경우)를 처리하게됩니다. 나는 많은 파티션의 존재에 대한 점검을 수행해야하며 쿼리의 형태이고 API 요청이 아니어야한다.

여러 번 실행될 수있는 cronjob이 있지만 비어있는 경우에만 데이터를 파티션에 쓰려고합니다.

답변

1

은 싼로 $ 0 그래서 당신은 안전하게 파티션

#standardSQL 
SELECT _PARTITIONTIME AS pt, COUNT(1) cnt 
FROM `yourproject.yourdataset.yourpartitionedtable` 
GROUP BY pt 
HAVING pt = TIMESTAMP('2016-12-11') 

또 다른 옵션의 행 번호를 식별하기 위해이 방법을 사용할 수 있습니다 아래에 있습니다 - 파티션이 비어 있고 그렇지 않으면 파티션의 행 수를 반환하면 실제로 0을 반환합니다.

#standardSQL 
SELECT IFNULL((
    SELECT COUNT(1) FROM `yourproject.yourdataset.yourpartitionedtable` 
    GROUP BY _PARTITIONTIME HAVING _PARTITIONTIME = TIMESTAMP('2016-11-11') 
), 0) cnt 
관련 문제