LoginSignup
3
2

More than 5 years have passed since last update.

Amazon Athenaで実行するクエリが想定通りの結果になるかをフルスキャンせずに確かめる方法

Posted at

結論

  • 任意のテーブル 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 で指定する SYSTEMBERNOULLI の違い
    • SYSTEM
      • 抽出率に応じて部分スキャン。
      • レコードの抽出元は偏る可能性がある。
        • サンプルの独立性は保証されない。
    • BERNOULLI
      • 抽出率によらずフルスキャン。

情報源

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2