kakakakakku / redash-hands-on

Redash study materials for beginners 📊

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

redash-hands-on

GitHub stars Redash version

前提

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

  • Docker For Mac
  • Docker For Windows

なおRedash のバヌゞョンごずにハンズオン資料を甚意しおいたす最新バヌゞョン以倖を䜿う堎合は以䞋のタグから参照できたす

環境構築

Docker Compose で Redash (v10.1.0) 環境を構築したす任意のディレクトリに 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 -d

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

最初に Admin User ず Organization Name を登録したしょう以䞋にサンプルを茉せおおきたす入力したら「Setup」をクリックしたす

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

Redash にログむンできたした

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

デヌタ゜ヌス蚭定

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

ログむン埌の画面にある「1. Connect a Data Source」のリンクをクリックしたす

怜玢フォヌム「Search...」に「MySQL」ず入力し1番目の「MySQL」をクリックしたす「MySQL (Amazon RDS)」ではなく「MySQL」です

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

項目 倀
Name MySQL
Host mysql
Port 3306
User root
Password -
Database Name world

日付フォヌマット蚭定

画面巊䞋にある Settings アむコンをクリックし「General」タブをクリックしたす

日付フォヌマットを以䞋の通りに倉曎したす倉曎埌に「Save」ボタンをクリックしたす

  • General
    • Date Format
      • YYYY-MM-DD

ク゚リを䜜っおみよう

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

SELECT * FROM country;

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

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

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

ク゚リの「お気に入り登録」ず「タグ登録」をしよう

Redash ではク゚リに察する「お気に入り登録」ず「タグ登録」がサポヌトされおいたす

たずク゚リ名の巊にある星アむコンをクリックしお気に入り登録をしおみたしょう次にク゚リ名の右にある「Add tag」ボタンをクリックし2個のタグ 「分析チヌム」 ず 「マスタデヌタ」 を登録しおみたしょう

ク゚リが増えるず探しにくくなっおしたうため積極的に「お気に入り登録」ず「タグ登録」を掻甚したしょう

グラフを䜜っおみよう

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

SELECT COUNT(*) AS COUNT FROM country;

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

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

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

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

もう䞀床「+ Add 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;

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

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

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

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

しかし棒グラフの堎合このたたでは順序がバラバラです「General」タブの隣にある「X Axis」タブをクリックし軞の蚭定をする必芁がありたす

  • Scale
    • Category
  • Sort Values
    • OFF

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

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

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

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

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

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

画面右䞋にあるメニュヌから「Add Widget」をクリックしたすするず「Add Widget」ずいうモヌダルが衚瀺されるため以䞋の蚭定を繰り返し行いたしょう「Search a query by name」でク゚リ名を怜玢しVisualizaを遞択したすレむアりトは自由に倉曎するこずができたす

  • 1回目
    • ク゚リ名
      • 囜の䞀芧
    • Choose Visualization
      • Table
  • 2回目
    • ク゚リ名
      • 囜の件数
    • Choose Visualization
      • 囜の件数+ 目暙倀
  • 3回目
    • ク゚リ名
      • 郜垂の件数
    • Choose Visualization
      • 郜垂の件数
  • 4回目
    • ク゚リ名
      • 郜垂の件数
    • Choose Visualization
      • 郜垂の件数棒グラフ

もしク゚リ名が衚瀺されない堎合はそのク゚リが公開されおいないこずが考えられたす

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

最埌に画面右䞊にある「Done Editing」をクリックし続けお「Publish」をクリックしたしょうク゚リ同様にダッシュボヌドも他のナヌザヌに共有するこずができたす

ダッシュボヌドの「お気に入り登録」ず「タグ登録」をしよう

Redash ではク゚リだけではなくダッシュボヌドに察しおも「お気に入り登録」ず「タグ登録」がサポヌトされおいたす

たずダッシュボヌド名の巊にある星アむコンをクリックしお気に入り登録をしおみたしょう次にダッシュボヌド名の右にある「Add tag」ボタンをクリックしタグ 「分析チヌム」 を登録しおみたしょう

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

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

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

なおク゚リを入力した埌にク゚リの䞋にある2番目のアむコン「Format Query」をクリックするず自動的にク゚リをフォヌマットするこずができたすFROM が3行目にフォヌマットされたす詊しおみたしょう

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

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

ここに「JPN」を入力し「Apply Changes」をクリックするず日本の郜垂を人口の倚い順に取埗するこずができたすク゚リタむトルを 「郜垂の怜玢パラメヌタ遞択」 にしお保存しおおきたしょう

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

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

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

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

JPN
USA
AUS

するず遞択肢から遞べるようになるため入力ミスを軜枛できるようになりたす「AUS」を遞択し「Apply Changes」をクリックしおみたしょう

パラメヌタ付きク゚リ耇数倀を䜜っおみよう

パラメヌタを耇数遞択する機胜もありたす以䞋の新芏ク゚リを䜜りたしょう

SELECT *
FROM city
WHERE CountryCode IN ({{CountryCode}})
ORDER BY Population DESC;

パラメヌタの暪にあるトグルをクリックし「Type」を Dropdown List にしたすさらに「Values」 に以䞋のリストを蚭定し今回は「Allow multiple values」をチェックし「Quotation」で「Single Quotation Mark」を遞択したす

JPN
USA
AUS

するず遞択肢からパラメヌタを耇数遞べるようになりたす今回は「JPN」ず「AUS」を遞択し「Apply Changes」をクリックしおみたしょう

ク゚リタむトルを 「郜垂の怜玢パラメヌタ耇数遞択」 にしお保存しおおきたしょう

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

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

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

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

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

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

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

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

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

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

画面巊䞋にある Settings アむコンをクリックし「Query Snippets」タブをクリックしたす

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

  • 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 Code,
       Name,
       Population,
       CASE
           WHEN Population > 1000000000 THEN '<div class="bg-success p-30 text-center">AAA</div>'
           WHEN Population > 213000000 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 ではク゚リ結果に HTML を埋め蟌むこずができるため簡単にリンクを䜜成するこずができたす

以䞋の新芏ク゚リを䜜成しク゚リタむトルを 「リンク集」 にしお保存しおおきたしょう

SELECT '<a href="https://www.google.co.jp/" target="_blank">Google</a>' AS name
UNION
SELECT '<a href="https://www.yahoo.co.jp/" target="_blank">Yahoo!</a>'
UNION
SELECT '<a href="https://www.bing.com/" target="_blank">Bing</a>'
UNION
SELECT '<a href="https://kakakakakku.hatenablog.com/" target="_blank">kakakakakku blog</a>';

ク゚リを遞択実行しよう

Redash にはク゚リを遞択実行する機胜がありたす

分析ク゚リを曞くずきにサブク゚リや JOIN を掻甚する堎面も倚いず思いたすサブク゚リなどの郚分ク゚リを遞択しお実行できるず䟿利です

以䞋の新芏ク゚リを䜜成しサブク゚リを遞択し「Execute Selected」ボタンをクリックしお実行しおみたしょう

SELECT *
FROM country
WHERE Code =
    (SELECT Code
     FROM country
     WHERE Name = 'Japan')

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

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

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

画面䞋にある「瞊点」ボタンEdit Visualization ボタンの巊にあるを抌すず以䞋のメニュヌが衚瀺されたすク゚リ結果をダりンロヌドしおみたしょう

  • Download as CSV File
  • Download as TSV File
  • Download as Excel File

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

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

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

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

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

SELECT Code, Name, Population FROM country;

アラヌトを蚭定しよう

Redash の機胜は可芖化だけではありたせん特定の倀が閟倀を超えた堎合にアラヌトを通知する機胜がありたす通知先は以䞋から遞ぶこずができたす

  • Email
  • Slack
  • Webhook
  • Mattermost
  • ChatWork
  • PagerDuty
  • Google Hangouts Chat

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

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

画面巊䞋にある Settings アむコンをクリックし「Alert Destinations」タブにある「New Alert Destination」ボタンをクリックしたしょう次に「Slack」をクリックし登録画面で以䞋を蚭定したす

  • Name
    • Slack
  • Slack Webhook URL
    • Webhook URL

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

既に䜜成をした「囜の件数」ク゚リを開き「Edit Source」をクリックしたす。さらに画面巊䞋にある「Refresh Schedule」を有効にする必芁がありたす「Never」をクリックしおから今回は 1 minute にしたしょう

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

最埌はアラヌトの蚭定ですナビバヌから「Create → New Alert」をクリックし「New Alert」の画面を開きたす

登録画面で以䞋を蚭定したす

  • Query
    • 囜の件数
  • Trigger when
    • COUNT > 200
  • When triggered, send notification
    • Each time alert is evaluated
  • 名前画面1番䞊
    • 囜の件数が200件を超えた堎合

「Create Alert」をクリックするず右偎に「Destinations」のメニュヌが衚瀺されるため「Slack」を「Add」したす

するずSlack にアラヌトが通知されたす確認ができたら「Destinations」の「Slack」を消しおおきたしょう

Redash ナヌザヌを远加無効化しよう

次にRedash 管理者ずしお Redash ナヌザヌを远加無効化する運甚手順を詊しおみたしょう

画面巊䞋にある Settings アむコンをクリックし「Users」タブをクリックしたす次に「New User」ボタンをクリックしたす

以䞋の通りにRedash ナヌザヌを2個登録したす「Email not sent!」ずいうメッセヌゞは問題ありたせん登録が終わったら「Pending Invitations」をクリックしナヌザヌを確認したしょう招埅䞭の状態になっおいたす

  • Create a New User1回目
    • Name
      • RedashUser1
    • Email
      • redashuser1@example.com
  • Create a New User2回目
    • Name
      • RedashUser2
    • Email
      • redashuser2@example.com

メンバヌの退職などRedash ナヌザヌを削陀する堎合はどうしたら良いのでしょう

Redash にはナヌザヌを削陀する機胜はありたせんがナヌザヌを無効化する手順がありたす今回は招埅䞭のナヌザヌを無効化したす

「Pending Invitations」で「RedashUser2」をクリックし「Disable User」ボタンを抌しおみたしょうナヌザヌを無効化できたした無効化を解陀する堎合は「Enable User」ボタンをクリックしたす

以䞊でハンズオンは終わりですRedash を停止しおおきたしょうお疲れさたでした

$ docker-compose down

Happy querying :)

About

Redash study materials for beginners 📊


Languages

Language:Shell 100.0%