LoginSignup
0
0

More than 3 years have passed since last update.

Athenaでダミーテーブルを作ってクエリを動かす方法

Last updated at Posted at 2019-03-01

目的

Athenaで巨大なテーブル(例えば、数百GBとか)に対してクエリを動かすまえに、意図通りに動くかどうか確認したいので、

ダミーテーブルを作ってクエリを動かす方法を備忘録として残します

方法

たとえば、IPとUserAgentの構成しているテーブルをダミーテーブルとして作りたい場合は、つぎのように記述します

WITH
-- ここからダミーテーブル
log AS (
  SELECT tbl.ip, tbl.ua
  FROM UNNEST(ARRAY[
    CAST(
      ROW('127.0.255.255', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1') AS ROW(ip VARCHAR, ua VARCHAR)
    ),
    CAST(
      ROW('127.3.0.0', 'Mozilla/5.0 (Linux; Android 4.0.3; SC-02C Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31') AS ROW(ip VARCHAR, ua VARCHAR)
    ),
    CAST(
      ROW('127.0.255.255', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1') AS ROW(ip VARCHAR, ua VARCHAR)
    )
  ]) t(tbl)
)
-- ここまでダミーテーブル

-- ダミーテーブルの中身を確認
select * from log

これをAthenaで実行すると、以下の結果が返ってきます

ip ua
1 127.0.255.255 Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
2 127.3.0.0 Mozilla/5.0 (Linux; Android 4.0.3; SC-02C Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31
3 127.0.255.255 Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1

あとはこのダミーテーブルをつかえば、あとはこんな感じにIP毎のアクセスカウントなどを求めるなんてこともできます


WITH
-- ここからダミーテーブル
log AS (
  SELECT tbl.ip, tbl.ua
  FROM UNNEST(ARRAY[
    CAST(
      ROW('127.0.255.255', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1') AS ROW(ip VARCHAR, ua VARCHAR)
    ),
    CAST(
      ROW('127.3.0.0', 'Mozilla/5.0 (Linux; Android 4.0.3; SC-02C Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31') AS ROW(ip VARCHAR, ua VARCHAR)
    ),
    CAST(
      ROW('127.0.255.255', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1') AS ROW(ip VARCHAR, ua VARCHAR)
    )
  ]) t(tbl)
)
-- ここまでダミーテーブル

-- IP毎のアクセスカウントを求める
select ip, count(*) access_count from log group by ip
ip access_count
1 127.0.255.255 2
2 127.3.0.0 1
0
0
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
0
0