結論
- 任意のテーブル
t
に対してFROM t TABLESAMPLE SYSTEM(5)
やJOIN t TABLESAMPLE SYSTEM(5) USING(id)
のように書くと、約5%のレコードに対してクエリのロジックを確かめられる。
前提
- 2019-01-24時点のAthenaを想定。
- ベースのPrestoはバージョン0.172。
状況
- クエリが想定通りのロジックになっているか確かめたい。
- レコードの一部を対象にクエリを実行してテストしたい。
- より安く早く処理結果を見たい。
- パーティション指定だけでは不十分。
- より安く早く処理結果を見たい。
- レコードの一部を対象にクエリを実行してテストしたい。
対応策
-
TABLESAMPLE SYSTEM
を使う。-
TABLESAMPLE SYSTEM(5)
なら5%抽出。 - データのスキャン量が減る。
- 安くなる。
- 早くなるはず。
-
補足
-
TABLESAMPLE
で指定するSYSTEM
とBERNOULLI
の違い-
SYSTEM
- 抽出率に応じて部分スキャン。
- レコードの抽出元は偏る可能性がある。
- サンプルの独立性は保証されない。
-
BERNOULLI
- 抽出率によらずフルスキャン。
-