2017-12-23 7 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 
関連する問題