/redash-hands-on

Redash study materials for beginners 📊

Primary LanguageShell

redash-hands-on

前提

Redash ハンズオン資料は以䞋の環境を前提に動䜜確認をしおいたす

  • Docker For Mac
  • Docker For Windows

環境構築

Docker Compose で Redash (v2.0.1) 環境を構築したす任意のディレクトリに kakakakakku/redash-hands-on リポゞトリをクロヌンしたしょう

$ git clone https://github.com/kakakakakku/redash-hands-on.git
$ cd redash-hands-on

公匏の getredash/redash リポゞトリに公開されおいる蚭定をベヌスにテストデヌタを事前に投入した MySQL 5.7 コンテナを含めた docker-compose.yml を準備したした

以䞋のコマンドを実行しDocker Compose で Redash を起動したしょう

初回はむメヌゞをダりンロヌドするため少し時間がかかる堎合がありたす

$ docker-compose run --rm server create_db
$ docker-compose up

起動するず以䞋の URL で Redash にアクセスできるようになりたす

最初に Admin User ず Organization Name を登録したしょう以䞋にサンプルを茉せおおきたす登録が完了するずRedash にログむンできたす

  • Admin User
    • Name
      • admin
    • Email Address
      • admin@example.com
    • Password
      • 任意のパスワヌド
  • General
    • Organization Name
      • hands-on

なおRedash 環境の構築方法は Docker Compose 以倖にもありたす興味のある方は公匏ドキュメントを読んでみたしょう

デヌタ゜ヌス蚭定

次に Redash から MySQL に接続できるように「デヌタ゜ヌス」を蚭定したす

画面右䞊にあるデヌタ゜ヌスアむコンをクリックし次に「New Data Source」ボタンをクリックしたす

以䞋の通りに蚭定したら「Save → Test Connection」ずクリックし接続確認をしたしょうSuccess ず画面右䞋に衚瀺されたすなお今回はテストデヌタずしお world デヌタベヌスを䜿いたす

項目 倀
Type MySQL
Name MySQL
Host mysql
Port 3306
User root
Password -
Database name world
Path to private key file (SSL) -
Path to client certificate file (SSL) -
Path to CA certificate file to verify peer against (SSL) -

ク゚リを䜜っおみよう

ナビバヌから「Queries → New Query」ずクリックし以䞋のク゚リを入力したしょう

SELECT * FROM country;

入力したら「Execute」ボタンをクリックしおク゚リを実行したすするず「囜の䞀芧」が取埗できたす

ク゚リの実行ができたら画面巊䞊の「New Query」ずいう郚分をクリックしク゚リタむトルを「囜の䞀芧」に倉曎したす忘れずに画面右偎にある「Save」ボタンをクリックしたしょう

さらに「Publish」ボタンをクリックしたすRedash ではク゚リを公開するこずで他のナヌザヌに共有するこずができたす

グラフを䜜っおみよう

先ほどず同様に新芏ク゚リを䜜成し以䞋のク゚リを入力したしょう実行するず登録されおいる囜の件数が「239」であるこずが取埗できたすこの件数をグラフにしおみたしょう

SELECT COUNT(*) AS COUNT FROM country;

「TABLE」 タブの暪に衚瀺されおいる「+ NEW VISUALIZATION」タブをクリックし以䞋の通りに蚭定をしたす「Save」ボタンをクリックするず件数のグラフが衚瀺されたす最新倀など特定の倀をグラフにする堎合は Counter が䟿利です

  • Visualization Type
    • Counter
  • Visualization Name
    • 囜の件数
  • Counter Value Column Name
    • COUNT

なお Counter には「目暙倀」を蚭定する機胜もありたす今回のデヌタ゜ヌスではデヌタ件数に倉化がありたせんがサンプルずしお䜜っおみたしょう先ほどのク゚リを以䞋の通りに倉曎したす

SELECT COUNT(*) AS COUNT, 500 AS kpi FROM country;

もう1床「+ NEW VISUALIZATION」タブをクリックし以䞋の通りに蚭定をしたす先ほどずの違いは「Target Value Column Name」の蚭定を远加した点ですこのようにク゚リを掻甚するこずで目暙倀ず実瞟倀を䞀緒に可芖化するこずができたす

Counter に「目暙倀」を蚭定した堎合倀が実瞟を䞋回る堎合は赀く衚瀺され䞊回る堎合は緑で衚瀺されたす

  • Visualization Type
    • Counter
  • Visualization Name
    • 囜の件数+ 目暙倀
  • Counter Value Column Name
    • COUNT
  • Target Value Column Name
    • kpi

ク゚リタむトルを「囜の件数」ずし忘れずに保存ず公開をしおおきたしょう

円グラフず棒グラフを䜜っおみよう

ク゚リの䜜成はもう慣れたず思いたす以䞋のク゚リを䜜成し実行したしょう

囜ごずに郜垂の件数を取埗できたす**ずむンドが特に倚いこずがわかりたす

SELECT CountryCode, COUNT(*) AS COUNT
FROM city
GROUP BY CountryCode
ORDER BY COUNT DESC;

先ほどず同様に「+ NEW VISUALIZATION」タブをクリックし以䞋の通りに蚭定をするず円グラフを䜜るこずができたす

  • Visualization Type
    • Chart
  • Visualization Name
    • 郜垂の件数
  • Chart Type
    • Pie
  • X Column
    • CountryCode
  • Y Columns
    • COUNT

次に棒グラフも䜜っおみたしょう蚭定は以䞋の通りです

  • Visualization Type
    • Chart
  • Visualization Name
    • 郜垂の件数棒グラフ
  • Chart Type
    • Bar
  • X Column
    • CountryCode
  • Y Columns
    • COUNT

しかし棒グラフの堎合このたたではグラフが衚瀺されたせん「GENERAL」タブの隣にある「X AXIS」タブをクリックし軞の蚭定をする必芁がありたす

  • Scale
    • Category
  • Sort Values
    • OFF

これで棒グラフも䜜れたした

ク゚リタむトルを「郜垂の件数」ずし忘れずに保存ず公開をしおおきたしょう

ダッシュボヌドを䜜っおみよう

次にダッシュボヌドを䜜っおみたしょう

ナビバヌから「Dashboards → New Dashboard」ずクリックしダッシュボヌドタむトルに「ハンズオン:囜ダッシュボヌド」ず入力したしょう

ポむントは グルヌプ名:ダッシュボヌド名 ずいう呜名芏則にするこずです

Redash には Grouping Dashboards ずいう機胜がありダッシュボヌドタむトルにコロンを含めるこずで同じグルヌプのダッシュボヌドをたずめお管理するこずができたす詳しくは公匏ドキュメントを読んでみたしょう

次にダッシュボヌドにグラフを配眮しおいきたす

画面右偎にあるメニュヌから「Add Widget」をクリックしたすするず「Add Widget」ずいうモヌダルが衚瀺されるため以䞋の蚭定を繰り返し行いたしょう

  • 1回目
    • Visualization
      • 囜の䞀芧
    • Choose Visualization
      • Table
    • Widget Size
      • Double
  • 2回目
    • Visualization
      • 囜の件数
    • Choose Visualization
      • 囜の件数+ 目暙倀
    • Widget Size
      • Regular
  • 3回目
    • Visualization
      • 郜垂の件数
    • Choose Visualization
      • 郜垂の件数
    • Widget Size
      • Regular
  • 4回目
    • Visualization
      • 郜垂の件数
    • Choose Visualization
      • 郜垂の件数棒グラフ
    • Widget Size
      • Double

「Visualization」にク゚リが衚瀺されない堎合はそのク゚リが公開されおいないこずが考えられたす

ナビバヌの「Queries → Queries」で Unpublished 状態になっおいるク゚リがあったらそのク゚リを公開し再床ダッシュボヌドにグラフを远加しおみたしょう

最埌に画面右偎にあるメニュヌから「Publish Dashboard」をクリックしたしょうク゚リ同様にダッシュボヌドも他のナヌザヌに共有するこずができたす

パラメヌタ付きク゚リを䜜っおみよう

次はク゚リにパラメヌタを付けおみたしょう

Redash ではク゚リに {{}} を含めるずその郚分がパラメヌタになりたす以䞋の新芏ク゚リを䜜りたしょう

SELECT * FROM city WHERE CountryCode = '{{CountryCode}}' ORDER BY Population DESC;

するず画面巊䞋に「CountryCode」をパラメヌタずしお入力するテキスト゚リアが衚瀺されたす

ここに「JPN」を入力しク゚リを実行するず日本の郜垂を人口の倚い順に取埗するこずができたすク゚リタむトルを「郜垂の怜玢」にしお保存しおおきたしょう

パラメヌタずしお入力できる UI はテキストフィヌルド以倖にもありたす名前の通り䟋えば「Date」を遞択するず日付ピッカヌカレンダヌから日付を遞択するこずができたす

  • Text
  • Number
  • Dropdown List
  • Date
  • Date and Time
  • Date and Time (with seconds)

今回は䟿利な「Dropdown List」を詊したしょう

パラメヌタの暪にあるトグルをクリックし「Type」を Dropdown List にしたすさらに Dropdown List Values (newline delimited) に以䞋のリストを蚭定したす

JPN
USA

するず遞択肢から遞べるようになるため入力ミスを軜枛できるようになりたす

フィルタ機胜を䜿っおみよう

Redash ではク゚リのカラム名を カラム名::filter もしくは カラム名::multi-filter ずいう呜名芏則にするずク゚リ結果をフィルタできるようになりたすさっそく詊しおみたしょう

以䞋の新芏ク゚リを䜜成し実行するずク゚リ結果を「CountryCode」で自由にフィルタできるようになりたすこれが「フィルタ機胜」です

SELECT *, CountryCode AS 'CountryCode::filter' FROM city ORDER BY Population DESC;

次に「マルチフィルタ機胜」を詊したしょうク゚リを以䞋のように倉曎するず今床は耇数の「CountryCode」でフィルタできるようになりたす

SELECT *, CountryCode AS 'CountryCode::multi-filter' FROM city ORDER BY Population DESC;

フィルタ機胜は非垞に䟿利です詳しくは公匏ドキュメントを読んでみたしょう

ク゚リタむトルを「郜垂のフィルタ」にしお保存しおおきたしょう

ク゚リスニペットを掻甚しよう

Redash ではよく䜿うク゚リもしくはク゚リの䞀郚をク゚リスニペットずしお登録する機胜がありたす

画面右䞊にあるデヌタ゜ヌスアむコンをクリックし「QUERY SNIPPETS」タブをクリックしたす

次に「New Snippet」ボタンをクリックするず登録画面が衚瀺されたす以䞋の蚭定をしたら「Save」ボタンを抌したしょう

  • Trigger
    • _country_code
  • Description
    • 囜コヌド怜玢
  • Snippet
    • WHERE CountryCode = '{{CountryCode}}'

新芏ク゚リを䜜成し以䞋のク゚リを入力したしょうク゚リスニペットに登録した「Trigger」に郚分䞀臎するず候補ずしお衚瀺されるため _ ず入力するずク゚リスニペットを呌び出すこずができたす

SELECT * FROM city _

ク゚リスニペットにプレヌスホルダを蚭定するこずもできたす

以䞋のように ${1:table} ず蚭定するずテヌブル名のプレヌスホルダになりたす是非詊しおみたしょう今回はク゚リスニペットの動䜜確認が目的ですのでク゚リは保存しなくお倧䞈倫です

  • Trigger
    • _record_count
  • Description
    • レコヌド件数
  • Snippet
    • SELECT COUNT(*) FROM ${1:table};

ク゚リ結果に色を付けよう

Redash ではク゚リ結果に HTML を埋め蟌むこずができたすさっそく以䞋の新芏ク゚リを䜜成しおみたしょう

SELECT *,
       CASE
           WHEN Population > 1000000000 THEN '<div class="bg-success p-30 text-center">AAA</div>'
           WHEN Population > 100000000 THEN '<div class="bg-warning p-20 text-center">BBB</div>'
           ELSE '<div class="bg-danger p-10 text-center">CCC</div>'
       END AS Color
FROM country
ORDER BY Population DESC;

「Population」の倀によっお「緑黄赀」ず色を倉えおいたすさらに瞊サむズも倉えおいたすこのように掻甚するずよりク゚リ結果を䟿利に䜿うこずができたす

ク゚リタむトルを「囜の䞀芧色付き」にしお保存しおおきたしょう他にも利甚可胜なマヌクアップがあり公匏ドキュメントに茉っおいたす

リンク集を䜜ろう

ダッシュボヌドに耇数のグラフを配眮する堎合関連する URL などを茉せおおくず䟿利な堎合がありたす

ダッシュボヌドにフリヌテキストを入力する方法もありたすがRedash ではク゚リ結果が URL 圢匏の堎合に自動的にリンクになるためこの機胜を䜿うず䟿利です

以䞋の新芏ク゚リを䜜成しおみたしょう

SELECT 'Google' AS name, 'https://www.google.co.jp/' AS url
UNION
SELECT 'Yahoo!', 'https://www.yahoo.co.jp/'
UNION
SELECT 'Bing', 'https://www.bing.com/';

自動的に URL がリンクになっおいるず思いたすク゚リタむトルを「リンク集」にしお保存しおおきたしょう

ク゚リ結果をダりンロヌドしよう

Redash ではク゚リ結果をダりンロヌドするこずができたす珟状サポヌトされおいるデヌタ圢匏は CSV ず Excel です

ナビバヌから「Queries → Queries」ずクリックし既に䜜ったク゚リ「囜の䞀芧」を開きたしょう

画面右偎にある「Download Dataset」ボタンを抌すず以䞋のメニュヌが衚瀺されたすク゚リ結果をダりンロヌドしおみたしょう

  • Download as CSV File
  • Download as Excel File

ク゚リのフォヌク機胜を䜓隓しよう

今回はハンズオンずしお Redash を1人で䜿っおいたすが䞀般的にはチヌムで䜿うこずが倚いず思いたす

チヌムで䜿っおいるず「メンバヌが䜜ったク゚リを少しカスタマむズしたい」ず感じる堎面がありたすそのために Redash には「フォヌク機胜」がありたす

既に䜜ったク゚リ「囜の䞀芧」を開き画面右䞊にある「Show Source」ボタンをクリックしたしょう芋慣れたク゚リ䜜成画面に遷移したす

次に「Save」ボタンの隣りにある「Fork」ボタンをクリックしたしょうするず自動的に新芏ク゚リが䜜成されたすク゚リタむトルを「Copy of (#1) 囜の䞀芧」から「囜の䞀芧カスタマむズ」ず倉曎したしょう

ク゚リを自由に倉曎できるため以䞋のク゚リを入力し実行したしょう衚瀺するカラムを「囜コヌド」ず「名前」ず「人口」にカスタマむズできたした

SELECT Code, Name, Population FROM country;

アラヌトを蚭定しよう

Redash の機胜は可芖化だけではありたせん特定の倀が閟倀を超えた堎合にアラヌトを通知する機胜がありたす

Slack に Webhook 経由でアラヌトを通知しおみたしょう今回は自由に䜿える Slack アカりントがある前提で進めたす

たずSlack で Incoming WebHooks を䜜成したすそのたたでも䜿えたすが「Customize Name」に Redash Alerts「Customize Icon」に Redash のロゎ画像などを蚭定しおおくず䟿利です「Webhook URL」の倀は次に䜿いたす

次に画面右䞊にあるデヌタ゜ヌスアむコンをクリックし「ALERT DESTINATIONS」タブにある「New Alert Destination」ボタンをクリックしたしょう登録画面で以䞋を蚭定したす

  • Type
    • Slack
  • Name
    • Slack
  • Slack Webhook URL
    • Webhook URL

アラヌトを蚭定する前にもう少し準備をしおおく必芁がありたす

既に䜜成をした「囜の件数」ク゚リを開き「Refresh Schedule」を有効にする必芁がありたす今回は Every minute にしたしょう

今回の䟋では囜の件数に倉化はありたせんが定期的にク゚リの実行をする機胜ですアラヌトの蚭定をするク゚リには「Refresh Schedule」の蚭定が必芁です

最埌はアラヌトの蚭定ですナビバヌから「Alerts」をクリックし「New Alert」の画面を開きたす以䞋の゚ラヌが出る堎合がありたすが問題ありたせん

It looks like your mail server isn't configured. Make sure to configure it for the alert emails to work.

登録画面で以䞋を蚭定したす「Rearm seconds」は異垞倀が続く堎合にアラヌトを再通知する間隔秒数です

  • Query
    • 囜の件数
  • Name
    • 囜の件数が200件を超えた堎合
  • Value column
    • COUNT
  • Op
    • greater than
  • Reference
    • 200
  • Rearm seconds
    • 60

「Save」をクリックするず右偎に「Notifications」のメニュヌが衚瀺されるため「Slack」を「Add」しもう䞀床「Save」をクリックしたす

するずSlack にアラヌトが通知されたす確認ができたら「Rearm seconds」をブランクにしお「Save」をクリックしおおきたしょう