Repository: kakakakakku/redash-hands-on Branch: master Commit: 4b9db9a41f36 Files: 3 Total size: 16.4 KB Directory structure: gitextract_qma5koch/ ├── README.md ├── compose.yaml └── redash.env ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # redash-hands-on [](https://github.com/kakakakakku/redash-hands-on/stargazers) [](https://github.com/getredash/redash) ## 前提 Redash ハンズオン資料は以下の環境を前提に動作確認をしています. - Docker Desktop for Mac なお,Redash のバージョンごとにハンズオン資料を用意しています.最新バージョン以外を使う場合は,以下のタグから参照できます. - [kakakakakku/redash-hands-on at v2.0.1](https://github.com/kakakakakku/redash-hands-on/tree/v2.0.1) - [kakakakakku/redash-hands-on at v4.0.1](https://github.com/kakakakakku/redash-hands-on/tree/v4.0.1) - [kakakakakku/redash-hands-on at v4.0.2](https://github.com/kakakakakku/redash-hands-on/tree/v4.0.2) - [kakakakakku/redash-hands-on at v5.0.1](https://github.com/kakakakakku/redash-hands-on/tree/v5.0.1) - [kakakakakku/redash-hands-on at v6.0.0](https://github.com/kakakakakku/redash-hands-on/tree/v6.0.0) - [kakakakakku/redash-hands-on at v7.0.0](https://github.com/kakakakakku/redash-hands-on/tree/v7.0.0) - [kakakakakku/redash-hands-on at v8.0.0](https://github.com/kakakakakku/redash-hands-on/tree/v8.0.0) - [kakakakakku/redash-hands-on at v10.1.0](https://github.com/kakakakakku/redash-hands-on/tree/v10.1.0) ## 環境構築 Docker Compose で **Redash (v25.1.0)** 環境を構築します.任意のディレクトリに `kakakakakku/redash-hands-on` リポジトリをクローンしましょう. ```sh $ git clone https://github.com/kakakakakku/redash-hands-on.git $ cd redash-hands-on ``` 公式の getredash/redash リポジトリに公開されている設定をベースに,テストデータを事前に投入した MySQL 8.4 コンテナを含めた `docker-compose.yml` を準備しました. 以下のコマンドを実行し,Docker Compose で Redash を起動しましょう. 初回はイメージをダウンロードするため,少し時間がかかる場合があります. ```sh $ docker compose run --rm server create_db $ docker compose up -d ``` 起動すると,以下の URL で Redash にアクセスできるようになります. - http://localhost:5001 最初に Admin User と Organization Name を登録しましょう.以下にサンプルを載せておきます.入力したら「Setup」をクリックします. - Admin User - Name - `admin` - Email Address - `admin@example.com` - Password - `任意のパスワード` - General - Organization Name - `hands-on`  Redash にログインできました.  なお,Redash 環境の構築方法は Docker Compose 以外にもあります.興味のある方は,公式ドキュメントを読んでみましょう. - [Setting up a Redash Instance | Redash](https://redash.io/help/open-source/setup/) ## データソース設定 次に 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」とクリックし,以下のクエリを入力しましょう. ```sql SELECT * FROM country; ``` 入力したら「Execute」ボタンをクリックしてクエリを実行します.すると「国の一覧」が取得できます. クエリの実行ができたら,画面左上の「New Query」という部分をクリックし,クエリタイトルを **「国の一覧」** に変更します.忘れずに画面右側にある「Save」ボタンをクリックしましょう. さらに画面右上の「Publish」ボタンをクリックします.Redash ではクエリを公開することで,他のユーザーに共有することができます.  ## クエリの「お気に入り登録」と「タグ登録」をしよう Redash ではクエリに対する「お気に入り登録」と「タグ登録」がサポートされています. まず,クエリ名の左にある星アイコンをクリックし,お気に入り登録をしてみましょう.次に,クエリ名の右にある「Add tag」ボタンをクリックし,2個のタグ **「分析チーム」** と **「マスタデータ」** を登録してみましょう. クエリが増えると探しにくくなってしまうため,積極的に「お気に入り登録」と「タグ登録」を活用しましょう.  ## グラフを作ってみよう 先ほどと同様にナビバーから「Create → New Query」とクリックし,新規クエリを作成し,以下のクエリを入力しましょう.実行すると,登録されている国の件数が「239」であることが取得できます.この件数をグラフにしてみましょう. ```sql SELECT COUNT(*) AS COUNT FROM country; ``` 「Table」 タブの横に表示されている「+ Add Visualization」ボタンをクリックし,以下の通りに設定をします.「Save」ボタンをクリックすると,件数のグラフが表示されます.最新値など,特定の値をグラフにする場合は `Counter` が便利です. - Visualization Type - `Counter` - Visualization Name - `国の件数` - Counter Value Column Name - `COUNT`  なお `Counter` には「目標値」を設定する機能もあります.今回のデータソースではデータ件数に変化がありませんが,サンプルとして,作ってみましょう.先ほどのクエリを以下の通りに変更し,実行します. ```sql 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` クエリタイトルを **「国の件数」** とし,忘れずに保存と公開をしておきましょう.  ## 円グラフと棒グラフを作ってみよう クエリの作成はもう慣れたと思います.以下のクエリを作成し,実行しましょう. 国ごとに都市の件数を取得できます.中国とインドが特に多いことがわかります(あくまでサンプルデータです). ```sql 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行目にフォーマットされます.試してみましょう. ```sql 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」をクリックしてみましょう.  ## パラメータ付きクエリ(複数値)を作ってみよう パラメータを複数選択する機能もあります.以下の新規クエリを作りましょう. ```sql 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」で自由にフィルタできるようになります.これが「フィルタ機能」です. ```sql SELECT *, CountryCode AS 'CountryCode::filter' FROM city ORDER BY Population DESC; ``` 次に「マルチフィルタ機能」を試しましょう.クエリを以下のように変更すると,今度は複数の「CountryCode」でフィルタできるようになります.なお,今回も「Format Query」を実行しておきましょう. ```sql SELECT *, CountryCode AS 'CountryCode::multi-filter' FROM city ORDER BY Population DESC; ``` フィルタ機能は非常に便利です.詳しくは公式ドキュメントを読んでみましょう. - [Query Filters | Redash](https://redash.io/help/user-guide/querying/query-filters) クエリタイトルを **「都市のフィルタ」** にして保存しておきましょう.  ## クエリスニペットを活用しよう Redash では,よく使うクエリ(もしくはクエリの一部)をクエリスニペットとして登録する機能があります. 画面左下にある Settings アイコンをクリックし,「Query Snippets」タブをクリックします. 次に「New Query Snippet」ボタンをクリックすると登録画面が表示されます.以下の設定をしたら「Create」ボタンを押しましょう. - Trigger - `_country_code` - Description - `国コード検索` - Snippet - `WHERE CountryCode = '{{CountryCode}}'` 新規クエリを作成し,以下のクエリを入力しましょう.クエリスニペットに登録した「Trigger」に部分一致すると候補として表示されるため `_` と入力するとクエリスニペットを呼び出すことができます. ```sql SELECT * FROM city _ ``` クエリスニペットにプレースホルダを設定することもできます. 以下のように `${1:table}` と設定すると,テーブル名のプレースホルダになります.是非試してみましょう.今回はクエリスニペットの動作確認が目的ですので,クエリは保存しなくて大丈夫です. - Trigger - `_record_count` - Description - `レコード件数` - Snippet - `SELECT COUNT(*) FROM ${1:table};`  ## クエリ結果に色を付けよう Redash では,クエリ結果に HTML を埋め込むことができます.さっそく以下の新規クエリを作成してみましょう. ```sql SELECT Code, Name, Population, CASE WHEN Population > 1000000000 THEN '