【Athena】With句を使って一時テーブルを作成してSQLを簡略化させる
複雑なサブクエリ
AthenaでSQLを書いてデータを抽出しているとどうしても複雑なSQLになることが多いです。何度もつかうサブクエリに関してはviewテーブルを作成することも考えられますが、一時的に使うものまでviewテーブルを作成するのは面倒に感じられます。
With句を使って一時テーブルを作成する
With句のPrestodbのドキュメントはこちらです。
例えば以下のSQLを作成したとします。
SELECT
t1.*, t2.*
FROM
(SELECT a, MAX(b) AS b FROM x GROUP BY a) as t1
INNER JOIN
(SELECT a, AVG(d) AS d FROM y GROUP BY a) as t2
ON t1.a = t2.a
サブクエリで取得しているテーブルをWith句で書くと処理がSQLスッキリします。
WITH
t1 AS (SELECT a, MAX(b) AS b FROM x GROUP BY a),
t2 AS (SELECT a, AVG(d) AS d FROM y GROUP BY a)
SELECT t1.*, t2.*
FROM t1
INNER JOIN t2 ON t1.a = t2.a;
スッキリするだけでなく、複数回同じサブクエリが登場するときはそのまま使いまわしも可能、サブクエリの条件が変わったときもWith句の変更のみで済むため、変更漏れのリスクが避けられます。
With句は非常に便利なので使えることだけでも覚えておくと良いと思います。
Author And Source
この問題について(【Athena】With句を使って一時テーブルを作成してSQLを簡略化させる), 我々は、より多くの情報をここで見つけました https://qiita.com/YujiHamada3/items/6cf4f67f33b2a0bc07c3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .