日付分割BigQueryテーブルの最新のパーティションからデータを選択しようとしていますが、クエリは引き続きテーブル全体からデータを読み込みます。BigQueryテーブルで最新パーティションを選択するにはどうすればよいですか?
私は(私の知る限り、BigQueryにはQUALIFY
をサポートしていない)試した:
SELECT col FROM table WHERE _PARTITIONTIME = (
SELECT pt FROM (
SELECT pt, RANK() OVER(ORDER by pt DESC) as rnk FROM (
SELECT _PARTITIONTIME AS pt FROM table GROUP BY 1)
)
)
WHERE rnk = 1
);
しかし、これは動作し、すべての行を読み取っていません。
SELECT col from table WHERE _PARTITIONTIME = TIMESTAMP('YYYY-MM-DD')
ここで、'YYYY-MM-DD'
は特定の日付です。
ただし、今後このスクリプトを実行する必要がありますが、テーブルの更新(および_PARTITIONTIME
)は不規則です。 BigQueryの最新パーティションからのみデータを取得できる方法はありますか?
あなたは明確にすることができます - それは動作しませんか?何が問題なの? –
私は以下のようにコメントしましたが、両方のクエリは最新のパーティションからのみ読み取るわけではありません。最後の_partitiontimeを明示的に入力すると、クエリは18 MBを読み込みます。しかし、以下の2つの質問のいずれかを試してみると、15.4 GBと表示されます。 – cshin9
私は今それを得た。更新していただきありがとうございます!理由を理解するのが面白い。 @ felipe-hoffaはキャッシュについて何か言及しましたが、これは明確ではありませんでした。 –