ビジュアルも自動化もおまかせ！💡 Redashでデータ可視化を極める

![Redashでデータ可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3637864/b0506754-0559-c457-75ca-a61ce0dd0d6c.png)


---

## はじめに

Redashは多種多様なデータソースと連携できるオープンソースのBIツールとして、手軽にSQLクエリを実行し、結果をダッシュボードにまとめた可視化が行える点が大きな魅力です。  
本記事では、**Redashでダッシュボードを作成する方法**や**定期レポートの自動更新設定**、そして**Googleスプレッドシートとの連携**まで、実際の画面操作やコード例を交えながら詳しく解説していきます。🔍

---

## Redashによるダッシュボード作成

Redashのダッシュボードは、運用するクエリの結果を1画面に集約し、視覚的に分かりやすくレポートできる強力なツールです。

### ダッシュボードの作成手順

1. **新規ダッシュボードの作成**  
   左側メニューから「Dashboard」を選び、右上の「+ New Dashboard」ボタンをクリック。ダイアログにダッシュボード名を入力すると、編集画面に移行します。

2. **テキストボックスやウィジェットの配置**  
   - 編集画面の右下にある「Add Textbox」ボタンからテキストボックスを追加できます。  
   - 同様にクエリの実行結果をウィジェットとして追加する場合は、「Add Widget」を選び、最近実行したクエリから表示したいグラフやテーブルを選択します。
   - ドラッグ＆ドロップで位置調整やサイズ変更も簡単に行えます。

下記の図は、ダッシュボード作成の流れを簡単に表したものです。

```
[Dashboardメニュー]
       │
       ▼
[+ New Dashboard]  ──► ダイアログに「Dashboard名」を入力
       │
       ▼
[ダッシュボード編集画面]
       │
   ┌───┴────┐
   │Textbox追加│
   │Widget追加│
   └────────┘
```

---

## クエリのスケジュール設定で定期レポート自動更新

Redashにはクエリの定期実行（Refresh Schedule）機能があり、たとえば毎日朝一に最新データでレポートを自動更新する設定が可能です。

### 定期実行の基本設定

- **Refresh Scheduleの設定場所**  
  クエリ作成画面の左下にある「Refresh Schedule」欄から、定期実行間隔（分、日、週単位）を選択可能。たとえば下記のように設定します。

  - 分単位：例）15分ごと
  - 日単位：例）毎日10時に更新
  - 週単位：例）毎週月曜に更新

- **実践例**  
  クエリ実行後、定期実行が有効になっていれば、Redashは指定間隔で自動更新し、最新の結果がダッシュボード上に反映されます。  
  ※クエリの実行失敗時は内部で無効化される場合もあるので、ログ確認もお忘れなく。

### 定期実行の注意点

- 複数のクエリで同じ集計ロジックを記述する場合、メンテナンス性を高めるために共通の中間集計クエリを作成してQRDSにキャッシュする構成もおすすめです。  
- 土日など特定の曜日に実行したくない場合は、Redash自体の定期実行機能では難しいため、APIを利用したスクリプト（例：GitHub ActionsやGoogle Apps Script）で柔軟に管理する方法も有効です。💡

---

## Googleスプレッドシートとの連携による自動レポート

RedashのAPIを利用して、取得したデータをGoogleスプレッドシートに自動で取り込み、日次・週次レポートとして共有する方法も人気です。

### ステップ1: Redash側でAPIキー取得とクエリ設定

- Redash画面右上のメニュー（…）から「Show API Key」をクリックし、CSV形式の結果取得用URLをコピーします。

### ステップ2: GoogleスプレッドシートでIMPORTDATA関数を利用

シート内の任意のセルに以下のように記述するだけで、Redashからのデータを自動反映させることが可能です。

```plaintext
=IMPORTDATA("コピーしたRedashのCSV形式URL")
```

### ステップ3: Apps Scriptによる自動化

定期的にシート内容を新しいシートへコピーする例を示します。以下はApps Scriptのサンプルコードです。

```javascript
function backupSheetData() {
  const SHEET_ID = 'your_google_sheet_id';
  var book = SpreadsheetApp.openById(SHEET_ID);
  var sourceSheet = book.getSheetByName('BaseSheet'); // データのベースシート
  var dateStr = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyyMMdd');
  
  // 新しいシートを作成
  var newSheet = book.insertSheet(dateStr, 1);
  var lastRow = sourceSheet.getLastRow();
  var lastColumn = sourceSheet.getLastColumn();
  
  var data = sourceSheet.getRange(1, 1, lastRow, lastColumn).getValues();
  newSheet.getRange(1, 1, lastRow, lastColumn).setValues(data);
}
```

このスクリプトは、ベースとなるシートのデータを日付ごとに複製し、過去のレポート履歴として管理できる形にしています。さらに、Apps Scriptのトリガー機能を利用することで、毎日自動実行するよう設定可能です。⏰

---

## まとめ

Redashを用いることで、以下のようなメリットが得られます。

- **直感的なダッシュボード作成**  
  ドラッグ＆ドロップでテキストやウィジェットを自由に配置でき、視覚的に分かりやすいレポートを実現。

- **定期レポートの自動化**  
  Refresh Schedule機能やAPI連携により、最新データに基づいたレポートを自動更新可能。

- **柔軟なレポート連携**  
  Googleスプレッドシートとの連携で、チーム内や関係部署へのデータ共有を効率的に行えます。

Redashはシンプルな操作性と高い拡張性を兼ね備えており、日々の業務で扱う大量データの可視化やモニタリングにも最適です。ぜひ本記事の手順を参考に、あなたのプロジェクトにもRedashを導入してみてください！🚀

---

以上、Redashでのダッシュボード作成と定期レポートの自動化に関する実装例について解説しました。記事内のコード例や図解を参考に、自らの環境に最適な自動化システムを構築してみましょう。

---
## **💖 ご支援いただけませんか？**

![スクリーンショット 2025-01-31 7.51.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3637864/f9d94b4d-dbd3-ab70-6b2b-dfc289cda562.png)


このブログでは、高品質な情報提供と学習活動を通じて、読者の皆さまのお役に立つことを目指しています。もしこの記事が役立ったと感じていただけましたら、ご支援いただけると幸いです！

---

### **暗号資産による寄付**
以下のウォレットアドレスをご利用ください。**重要：Ethereum (ETH)、BNB Chain (BNB)、Polygon (MATIC)、Avalanche (AVAX) は、全て以下の同一アドレスを使用しますが、送金ネットワークの選択を間違えると資金が失われます！** 送金時には、**絶対に**使用するネットワーク（例: ERC-20、BEP-20、Polygon、Avalanche C-Chain）を**必ず**正しく選択してください。

---

<img src="https://cryptologos.cc/logos/ethereum-eth-logo.png" alt="Ethereum Logo" width="20">

**Ethereum (ETH)**  （ネットワーク: ERC-20）

```
0x5CDA2F68f59F641B00aD172475c3d5fC10321174
```
<img src="https://cryptologos.cc/logos/binance-coin-bnb-logo.png" alt="BNB Logo" width="20">

**BNB Chain (BNB)**  （ネットワーク: BEP-20）
```
0x5CDA2F68f59F641B00aD172475c3d5fC10321174
```
<img src="https://cryptologos.cc/logos/polygon-matic-logo.png" alt="Polygon Logo" width="20">

**Polygon (MATIC)**   （ネットワーク: Polygon）

```
0x5CDA2F68f59F641B00aD172475c3d5fC10321174  
```
<img src="https://cryptologos.cc/logos/avalanche-avax-logo.png" alt="Avalanche Logo" width="20">

**Avalanche (AVAX)**    （ネットワーク: Avalanche C-Chain）

```
0x5CDA2F68f59F641B00aD172475c3d5fC10321174
```
<img src="https://cryptologos.cc/logos/solana-sol-logo.png" alt="Solana Logo" width="20">

**Solana (SOL)**  
```
EnPFbqDbF67rU9mAPvfgh4YYtncJNbFQ9NLQ5R6z5S2f
```

<img src="https://cryptologos.cc/logos/stellar-xlm-logo.png" alt="Stellar Logo" width="20">

**Stellar (XLM)**    メモ: 必要に応じて入力してください。

```
GCSMWCACKVEZ737GZAV4AJRFL52ZZKVQ7M3B3KYY64JJGOAO2GDYKABO 
```

<img src="https://cryptologos.cc/logos/xrp-xrp-logo.png" alt="Ripple Logo" width="20"> 

**Ripple (XRP)**    タグ: 必要に応じて入力してください。

```
r1s4EASr3zQRrfpDA3ptTahezBhGo2hhN
```

<img src="https://cryptologos.cc/logos/cardano-ada-logo.png" alt="Cardano Logo" width="20">

**Cardano (ADA)**  

```
addr1q8heq6ddw8rwlqa5hqlucnfk36arah9tzc8ajxvu83870h7lrre25wzq9yemex857we56cm0xu8tmxqvm8nykmtgsjdqavdpv7
```

<img src="https://cryptologos.cc/logos/dogecoin-doge-logo.png" alt="Dogecoin Logo" width="20">

**Dogecoin (DOGE)**  
```
DRFZ9JhAk3DTtu1tV85cawekWNrm1vKm3H
```

---

### **資金用途**
寄付金は以下の目的で活用させていただきます：

1. サーバー維持費やデザインツール購入  
2. 学習活動（オンラインコース受講・書籍購入）  
3. 読者向け無料コンテンツ制作  

ご協力いただいた皆さまには心より感謝申し上げます！ 🙏

---

### **補足情報**
- **Ethereum (ETH)、BNB Chain (BNB)、Polygon (MATIC)、Avalanche (AVAX)について**  
  上記4つのネットワークは**同じウォレットアドレス**（`0x5CDA2F68f59F641B00aD172475c3d5fC10321174`）を使用します。ただし、送金時には、**絶対に**使用するネットワーク（例: ERC-20、BEP-20、Polygon、Avalanche C-Chain）を**必ず**正しく選択してください。

- USDCやUSDTなどのステーブルコインも、対応するネットワーク経由であれば送金可能です。ただし、**送金先のネットワークと選択するネットワークが一致していることを必ず確認してください。**

- 初回送金時には少額でテスト送金することをおすすめします。

---