search
LoginSignup
11
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Redash ver8 インストール・動作検証

書いてあること

  • Docker環境へのRedashインストール手順
  • Redash各種設定、データソース・クエリ・ダッシュボードなどを作成した際のメモ

環境

  • Ubuntu 18.04
  • Docker 19.03.6
  • Docker Compose 1.22.0
  • Redash 8.0.0

インストール

作業ディレクトリを作成・移動

bash
$ mkdir ●●●
$ cd ●●●

インストールに必要なGitリポジトリをクローン

bash
$ git clone https://github.com/getredash/redash.git
$ git clone https://github.com/getredash/setup.git

インストール先ディレクトリを作成

bash
$ mkdir -p /opt/redash

※インストール先ディレクトリを変更する場合は、setup/setup.shREDASH_BASE_PATHを変更

インストール開始

bash
$ sh ./setup/setup.sh

※シェルスクリプト実行でdocker-compose upまで実行される

起動、初期設定

Redash

20200228_001.png

20200228_002.png

Redashコンテナの起動・停止

bash
# インストール先ディレクトリに移動
$ cd /opt/redash

# 起動
$ docker-compose up -d

# 確認
$ docker-compose ps

# 停止
$ docker-compose down

インストール後の環境変更

インストール先ディレクトリを変更したい場合

docker-compose.yml内の/opt/redash/という文言を変更先ディレクトリに置換(対象は3箇所)
下記は/root/container/redash/にディレクトリを変更する場合

docker-compose.yml
version: "2"
x-redash-service: &redash-service
  image: redash/redash:8.0.0.b32245
  depends_on:
    - postgres
    - redis
+ env_file: /root/container/redash/env
- env_file: /opt/redash/env
  restart: always
services:

下記ファイル内にexport COMPOSE・・・という環境変数設定がある場合は削除。
これが残っているとデフォルトのディレクトリがDocker Composeの対象となってしまうため。

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile

ホスト側ポート番号を変更したい場合

docker-compose.ymlnginxサービスのポート転送設定を変更
下記はホスト側のポート番号を9000に変える場合

docker-compose.yml
  nginx:
    image: redash/nginx:latest
    ports:
+     - "9000:80"
-     - "80:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always

初期設定

日付形式の変更

  1. 画面右上のSettingsアイコン
  2. Settingsタブ
  3. Date FormatTime Fomatを変更
  4. Save

20200228_004.png

グループ、ユーザー

  1. 画面右上のSettingsアイコン
  2. Groupsタブ、Usersタブ

データソース

SQL Server

1.画面右上のSettingsアイコン
2.DataSourcesタブ
3.New Data Source
4.対象を選択
5.必要事項を入力
6.Create

20200228_003.png

Google Analytics

GCPで秘密鍵を取得

1.Google Cloud Platformを開く

Google Cloud Platform Console

2.APIとサービス
3.ダッシュボード
4.設定対象のプロジェクトを選択 or プロジェクトを新規作成
5.APIとサービスを有効化

20200228_001.png

5.Google Analytics API

20200228_011.png

6.有効にする

20200228_012.png

7.認証情報
8.認証情報を作成
9.サービスアカウント

20200228_014.png

10.必要事項を入力
11.作成

20200228_005.png

12.役割を選択
13.続行

20200228_006.png

14.キーを作成
15.JSON
16.作成

20200228_007.png

17.生成された秘密鍵を保存
18.完了

GoogleAnalyticsでサービスアカウントに権限設定

1.管理
2.アカウントユーザーの管理

20200228_008.png

3.ユーザーを追加
4.GCPで作成したサービスアカウントのメールアドレスを指定
5.表示と分析にチェック
6.追加

20200228_009.png

Redashでデータソースを作成

  1. 画面右上のSettingsアイコン
  2. DataSourcesタブ
  3. New Data Source
  4. 対象を選択
  5. 必要事項を入力
  6. Create

20200228_010.png

Google Seets

GCPで秘密鍵を取得

上記Google Analyticsの手順で設定したサービスアカウントの秘密鍵を利用する
Google Seets APIを有効化しておくこと

20200229_002.png

Google Sheets共有設定

サービスアカウントで設定したメールアドレスに共有

20200229_003.png

Redashでデータソースを作成

  1. 画面右上のSettingsアイコン
  2. DataSourcesタブ
  3. New Data Source
  4. 対象を選択
  5. 必要事項を入力
  6. Create

20200229_004.png

Queriesでスプレッドシートを参照

スプレッドシートID|シート番号の書式でデータを取得することが可能
シート番号は左から順に0、1、2、・・・

20200229_005.png

Query Results作成

Nameは任意

20200229_006.png

Query Resultから操作

Fromをquery_{クエリID}と記載することで、スプレッドシートデータの取得・加工などを行う。

20200304_001.png

検索

キーワード検索

Queries編集画面⇒Edit Visualization画面でキーワード検索対象の項目をチェック

20200301_001.png

項目名とデータの間にキーワード入力するテキストボックスが表示される。

20200301_002.png

パラメータ

Redashでは下記●つのパラメータをQuerisで利用することができる

  • Text   ※こちらを利用するとキーワード入力が必須入力となる。上記キーワード検索の場合は任意入力。
  • Number
  • Dropdown List   ※Allow multiple valuesをチェックすることで、Quotationで記号選択が可能
  • Query Based Dropdown List   ※作成済Queriesから選択。1列目をパラメータに利用
  • Date
  • Date and Time
  • Date and Time(with seconds)
  • Date Range   ※startでFROM、endでTOの値を取得
  • Date and Time Range   ※startでFROM、endでTOの値を取得
  • Date and Time Range(with seconds)   ※startでFROM、endでTOの値を取得

以下は指定したパラメータがクエリテキストにどのように反映されるかの確認

SELECT
  '{{Text}}' AS "Text",
  {{Number}} AS "Number",
  '{{Dropdown List(Single)}}' AS "Dropdown List(Single)",
  CONVERT(varchar, '{{Dropdown List(Multi)}}') AS "Dropdown List(Multi)",
  '{{Query Based Dropdown List}}' AS "Query Based Dropdown List",
  '{{Date}}' AS "Date",
  '{{Date and Time}}' AS "Date and Time",
  '{{Date and Time(with seconds)}}' AS "Date and Time(with seconds)",
  CONCAT('{{Date Range.start}}', ' ~ ', '{{Date Range.end}}') AS "Date Range",
  CONCAT('{{Date and Time Range.start}}', ' ~ ', '{{Date and Time Range.end}}') AS "Date and Time Range",
  CONCAT('{{Date and Time Range(with seconds).start}}', ' ~ ', '{{Date and Time Range(with seconds).end}}') AS "Date and Time Range(with seconds)"

20200229_001.png

フィルタ・マルチフィルタ

クエリの項目名を項目名::filter項目名::multi-filterとすることにより、クエリ結果から自動でフィルタを設定する

クエリスニペット

triggerの頭に_を付けてクエリスニペットを登録

20200229_007.png

クエリ作成画面で_を入力することでクエリスニペットを呼び出すことが可能

20200229_008.png

クエリスニペット作成時に${1:●●●}と指定することでプレースホルダが利用可能

20200229_001.png

HTML埋め込み

クエリ結果に色を付ける

HTMLタグをクエリ結果として取得することにより、背景色や文字色を設定することができる
Conditional Formatting & General Text Formatting

SELECT
  CASE [部署]
    WHEN '●●●' THEN '<div class="bg-primary p-10">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="bg-success p-10">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="bg-info p-10">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="bg-warning p-10">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="bg-danger p-10">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="text-danger p-10" style="font-color: red">' + [部署] + '</div>'
    WHEN '●●●' THEN '<div class="text-success p-10">' + [部署] + '</div>'
    ELSE [部署]
  END AS "部署名"

20200301_001.png

リンクを設定

実用的な例ではないですが。。。
担当者Noに応じて日本郵政の各都道府県の郵便番号ページを開く

SELECT
  [m_tanto].[tanto_no] AS "担当No",
  '<a href="https://www.post.japanpost.jp/cgi-zip/zipcode.php?pref=' + CONVERT(varchar, [担当者No]) + '" target="_blank">' + [担当者名] + '</a>' AS "担当者名",

リンク集

SELECT '<a href="https://google.com" target="_blank">Google</a>' AS "LINK"
UNION
SELECT '<a href="https://github.com/yoshi0518" target="_blank">Github</a>'
UNION
SELECT '<a href="https://qiita.com/yoshi0518" target="_blank">Qiita</a>'

20200301_002.png

Alert

物件数が4000件を超えた場合にChatwork通知するAlertを設定

1.画面右上のSettingsアイコン
2.Alert
3.Alert Destinations
4.New Alert Destination
5.Chatwork

20200301_006.png

6.MessageTemplateは下記を入力

{alert_name} changed state to {new_state}\n{alert_url}\n{query_url}

20200301_001.png

7.対象とするクエリの更新頻度を設定

20200301_002.png

8.Create Alert

20200301_003.png

20200301_004.png

DashboardsにTextbox配置

20200302_001.png

ストアドでデータ更新

あらかじめDB側でストアドを定義しておき、Queryから呼び出すことで直前に最新データを更新することが可能。
以下はSQL Serverで実行確認した際のメモ。

--Table
CREATE TABLE [dbo].[t_ストアドテスト](
  [no] [smallint] NOT NULL,
  [title] [varchar](100) NULL,
  [created_at] [datetime] NULL,
CONSTRAINT [PK_t_ストアドテスト] PRIMARY KEY CLUSTERED 
(
  [no] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

--Procedure
--1~パラメータで渡された最大値までのデータを追加する
CREATE PROCEDURE [dbo].[proc_ストアドテスト]
  @p_no varchar(50)
AS
BEGIN
  DECLARE @no_from int;
  DECLARE @no_to int;
  DECLARE @kosin_date datetime;

  SET @no_from = 1;
  SET @no_to = CONVERT(int, @p_no);
  SET @kosin_date = GETDATE();

  TRUNCATE TABLE [t_ストアドテスト];

  WHILE @no_from <= @no_to
  BEGIN
    INSERT INTO [t_ストアドテスト](no, title, created_at) VALUES (@no_from, 'title' + CONVERT(varchar, @no_from), @kosin_date);
    SET @no_from = @no_from + 1;
  END;
END;
GO
EXEC [dbo].[proc_ストアドテスト] @p_no='{{ 最大値 }}';

SELECT * FROM [t_ストアドテスト];

20200303_001.png

Redashメタデータ参照

postgresqlコンテナ名を確認

bash
$ docker-compose ps

envファイルからDBパスワードを確認

POSTGRES_PASSWORD=ADGVbt3rEMMMBSZOCJm1g5y7sTGL4Czt

データソースを作成

20200304_002.png

テーブル

テーブル 説明
access_permissions
alembic_version Redashバージョン
alert_subscriptions
alerts 送信されるアラート
api_keys
changes クエリ、ダッシュボードの変更履歴
dashboards ダッシュボード情報
data_source_groups 各グループのデータソース権限情報
data_sources データソース情報
events 操作ログ
favorites
groups グループ情報
notification_destinations アラート通知先設定
organizations Redash基本設定
queries クエリ定義情報
query_results キャッシュされたクエリ実行結果
query_snippets クエリスニペット
users ユーザー情報
visualizations グラフ定義情報
widgets ダッシュボット上のウィジェット配置情報

バックアップ、リストア

postgresコンテナへ接続してバックアップ、リストアを行う

# postgresコンテナへ接続
$ docker-compose exec postgres /bin/bash

# バックアップ
$ mkdir -p /var/lib/postgresql/data/backup
$ pg_dump -U postgres -d postgres | gzip > /var/lib/postgresql/data/backup/redash_backup_$(date +%Y%m%d).gz

# リストア
$ gzip -cd /var/lib/postgresql/data/backup/redash_backup_$(date +%Y%m%d).gz | psql -U postgres -d postgres

参考

Redash
getredash/redash
kakakakakku/redash-hands-on
Redash上からBigQueryスクリプトを利用してみた

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
What you can do with signing up
11
Help us understand the problem. What are the problem?