Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Heroku Dataclipsでお手軽公開クエリ

More than 1 year has passed since last update.

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アカウントのみに公開することもできます。活用してみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away