re:dashでよく使われているクエリーを調べる

re:dashのFork機能はすごく好きなんだけど、便利すぎて気軽にForkされる結果、使ってるのか使ってないのかわからないクエリーが増えてしまいがち。

qiita.com

この記事をみたら統計情報っぽいのが取れるようなので、ちょっといじって以下のようにした。

使用しているバージョンは 0.10.1+b1836

SELECT 
  object_id AS query_id, 
  SUM(CASE WHEN action = 'view' THEN 1 ELSE 0 END) AS view,
  SUM(CASE WHEN action = 'execute' THEN 1 ELSE 0 END) AS execute
FROM 
  events 
WHERE 
  object_type = 'query' 
  AND object_id != ''
  AND created_at BETWEEN to_date('2016-11-01', 'YYYY-MM-DD') AND to_date('2016-11-17', 'YYYY-MM-DD')
GROUP BY 
  object_id 
ORDER BY 
  execute DESC;

結果はこんな感じ。

object_id | view | execute
-----------+------+---------
 78        |  125 |      99
 68        |  123 |     106
 87        |   68 |      66
 79        |   68 |      55
 85        |   68 |      42
 103       |   63 |      50
 107       |   59 |      43
 8         |   58 |      13
 89        |   53 |       7
 125       |   52 |      28
 109       |   48 |      21
 104       |   44 |      11
 112       |   39 |      21
 100       |   39 |      19
 115       |   31 |       2
 122       |   25 |       9

この結果をみて、使用頻度の低いクエリーは積極的にアーカイブすることができそう。

おまけ

events テーブルはこんな感じ。

                                        テーブル "public.events"
          列           |            型            |                       修飾語
-----------------------+--------------------------+-----------------------------------------------------
 id                    | integer                  | not null default nextval('events_id_seq'::regclass)
 org_id                | integer                  | not null
 user_id               | integer                  |
 action                | character varying(255)   | not null
 object_type           | character varying(255)   | not null
 object_id             | character varying(255)   |
 additional_properties | text                     |
 created_at            | timestamp with time zone | not null
インデックス:
    "events_pkey" PRIMARY KEY, btree (id)
    "events_org_id" btree (org_id)
    "events_user_id" btree (user_id)
外部キー制約:
    "events_org_id_fkey" FOREIGN KEY (org_id) REFERENCES organizations(id)
    "events_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)

action, object_typeにはこんな値が入っていた。

action

add_data_source
add_member
api_get
archive
autorefresh
cancel_execute
change_data_source_permission
create
delete
edit
edit_description
edit_name
execute
execute_query
fork
login
pivot
remove_data_source
remove_member
search
update
update_data_source
view
view_source

object_type

dashboard
data_source
datasource
group
group_data_sources
page
query
redash
user
visualization
widget