LoginSignup
5
2

More than 3 years have passed since last update.

Heroku Dataclipsでお手軽公開クエリ

Last updated at Posted at 2019-12-01

Heroku Dataclipsで、Heroku Postgresに対するクエリの結果を手軽に公開することができます。この機能で、Herokuで稼働しているアプリケーションそのものからは提供されていない方法でも、データを活用することができます。この記事では利用手順の概略と利用例を紹介します。

この記事は、Heroku Advent Calendar 2019の2日目の記事です。1日目は狩野さんによる『DeveLove関西で、アジャイル開発におけるHerokuFlowの運用について登壇してきました』でした。アジャイルちゃんと実践してみたいなあ!3日目はsho7650さんによる『Heroku で Linux コマンドを巧みに使いこなす』です。手元のマシンをLinuxにしてもいいのよ?(それができないから苦労してるんだ)

Dataclipを作成する

  1. https://data.heroku.com/dataclips を閲覧し、New Dataclipボタンをクリックします
  2. タイトルを入力し、クエリ先のアプリケーションとデータベースを選択します
  3. 必要なら「Published」状態を「Draft」状態にします
  4. 入力欄にクエリを入力します
  5. Save & Runボタンを押しクエリの結果が表示されるのを待ちます
  6. 満足できるまでクエリを編集しSave & Runボタンを押します
  7. 「Draft」状態を「Published」状態にします

これで、アプリケーションにアクセスのある人はDataclipを閲覧できるようになります。

Dataclipを公開する

  1. https://data.heroku.com/dataclips を閲覧し、公開するDataclipを選びます
  2. 「Share」ボタンを押し、「Create Public URL」を押します
  3. 表示されたURLをコピーして、公開します

公開されたDataclipを確認する

筆者はHerokuでぼっちマストドンサーバを運用しています。下記のようなクエリで、過去2日間のどの時間にたくさん投稿していたかがバレてしまいます。本来はHeroku Postgresへのアクセス権がないとクエリを実行できませんが、Dataclipsによってクエリの結果を公開することができます。

WITH toots AS (
SELECT
DATE_TRUNC('hour', created_at) AT TIME ZONE 'UTC' AT TIME ZONE 'HST' as hour,
id
FROM statuses
WHERE account_id = 1
        AND created_at >= DATE_TRUNC('hour', NOW()) - interval '2 days'
        AND created_at < DATE_TRUNC('hour', NOW())
), hours AS (
SELECT hh AT TIME ZONE 'UTC' AT TIME ZONE 'HST' as local
FROM generate_series(
  (DATE_TRUNC('hour', NOW()) - interval '2 days')::timestamp,
  (DATE_TRUNC('hour', NOW()))::timestamp,
  '1 hour'::interval) hh
)
SELECT local, COUNT(id)
FROM toots RIGHT JOIN hours ON toots.hour = hours.local
GROUP BY local ORDER BY local;

このクエリをDataclipにしてありますので、ちょろっと覗いてみましょう: https://data.heroku.com/dataclips/zwfqiwbctjswnxvukzbnblyfvwnh

右上のボタンでChartを選択することで、簡単なグラフとして表示することもできます。金曜日の10時台に何かあったのかな?

Screen Shot 2019-11-30 at 3.21.31 PM.png

「Share」ボタンから限定されたHerokuアカウントのみに公開することもできます。活用してみてください。

5
2
1

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
5
2