Prestoの基本構文の紹介
Prestoの自分が理解している基本構文についてご紹介します。

Prestoの構文ルールについて
Prestoではいく構文に制約事項があるため、自分が知っている内容について紹介をしていきます。またその他の細かい挙動についてもご紹介ができたらとおもっております。
構文ルール紹介
制約事項
まずはじめに制約事項について紹介します。PrestoのQueryを書く際にハマるポイントを記載してきます。
1.ダブルクォーテーションとシングルクォーテーションの使用方法
Prestoで固定文字列を出力する際に("
)ダブルクォーテーションを用いると囲われた論理名(カラム名)を探索しにいきます。
また予約語をQuery内で用いる場合は(`
)バッククォーテーションで囲って利用する必要があります。予約語一覧は下記なります。
引用元:Athena予約キーワード
※AthenaはベースにPrestoを利用しており、わかりやすかったのでこちらを参照しております。
予約語の具体的な記述方法に関しては下記で紹介します。
日本語をAS
で用いる場合は("
)ダブルクォーテーションで囲う必要があります。
予約語と日本語の具体的な記述方法に関しては下記で紹介します。
数値が含まれるテーブルにも制約事項があります。カラム名には数値を問題なく利用できるのですが、テーブルに数値を利用する際は注意してください。
2.テーブル,データベース,などに利用できる文字
WITH句を利用する際にテーブルなど名前では英数字以外には(_
)アンダースコアしか利用することができません。
どういうことかを念の為、下記に記載します。
基本構文と論理式
ここでは基本構文と論理式について紹介をします。
論理式
他のRDBと基本変わらないですが、自分が失念するかもしれないので残しておきます。
AND
・・・ 両方ともTRUE
であればTRUE
ex) A AND BOR
・・・ どちらかがTRUE
であればTRUE
ex) A OR CNOT
・・・FALSE
の場合にTRUE
となる ex) NOT C
細かな挙動について公式リファレンスに掲載されているため、必要があればご参照ください。
比較演算
これも他のRDBと特段かわらないですが、念の為記載します。
<
・・・ 未満(Less than)>
・・・ 超/より大きい(Greater than)<=
・・・ 以下(Less than or equal to)>=
・・・ 以上(Greater than or equal to)=
・・・ 等しい(Equal)<>
,!=
・・・ 等しくない(Not equal)
Athena利用時の注意点
Athenaを利用するとAWS上のサービスになるのでQueryで抽出したデータだけではなく、走査(データを参照する)しただけで費用が発生します。それを防ぐにはAthena上でパーティションを分割する方法があります。
パーティションを分割するとwindow関数のPARTITION BY のように条件に合致したデータのみ走査されるため、費用を抑えることができます。
パーティション分割からデータエンジニアリングになるので詳細は割愛しますが、リファレンスを下記に記載します。
引用元:データのパーティション分割
データ抽出時に注意する点としてはどのカラムでパーティション分割がされているかを理解し、適切なQueryでデータを抽出することが大事です。
また一般的なRDBがSELECT文を実行した時にどこから処理しているかも下記に記載します。
備考
("
)ダブルクォーテーション、('
)シングルクォーテーションの部分はひっかかりますが、エラー文がわかりやすかったりするため、そこまでハマらないと思いますが、備忘録として書きました。よかったら他のPrestoのリファレンスも参照いただけますと幸いです。
参照元
https://qiita.com/y-ken/items/400b7c70c324ac67af02