LoginSignup
0
0

RedashでBigQueryのデータを可視化する

Last updated at Posted at 2024-05-10

はじめに

データ駆動型の意思決定は、現代ビジネスにおいて不可欠な要素となっています。このプロセスでは、膨大なデータから意味ある洞察を抽出し、それを基に戦略を練ることが求められます。そこで今回は、Google Cloud 上でRedashをセットアップし、BigQueryに保存されたデータを活用してダッシュボードを作成する方法について説明します。

1.Google Cloud Shellでの準備

Google Cloud Platform (GCP) で作業を行う前に、Google Cloud Shellを開始します。これはブラウザベースのコマンドラインツールで、事前に構成された環境でGoogle Cloud resourcesを管理するために使用します。

  • Google Cloud Console(console.cloud.google.com)にログインします。
  • 右上にある「アクティベート Cloud Shell」アイコン(>_の形)をクリックして、Cloud Shellを開始します。

必要なVPCとサブネットの作成

Redashインスタンスを作成する前に、適切なネットワーキングリソースを設定する必要があります。以下のコマンドを使用して、VPCとサブネットを作成します。

gcloud compute networks create redash-vpc --subnet-mode=custom
↓
gcloud compute networks subnets create redash-subnet --network=redash-vpc --range=10.128.0.0/20 --region=asia-northeast1

スクリーンショット 2024-05-10 13.51.09.png

これらのコマンドにより、カスタムモードのVPC (redash_vpc) が作成され、指定したIP範囲 (10.128.0.0/20) のサブネット (redash_subnet) が東京リージョンに設定されます。

RedashのイメージをGCEアカウントに追加

次に、RedashのイメージをGoogle Cloud StorageからGCEアカウントに追加します。

gcloud compute images create "redash-8-0-0" --source-uri gs://redash-images/redash.8.0.0-b32245-1.tar.gz

Redashサーバのインスタンスを起動

VPCとサブネットが設定された後、以下のコマンドを使用してRedashサーバのインスタンスを作成します。この時点で、適切なタグ(redash-server)とファイアウォールルールを考慮に入れます。

gcloud compute instances create redash-instance --image redash-8-0-0 --machine-type n1-standard-1 --zone asia-northeast1-a --network=redash-vpc --subnet=redash-subnet --tags redash-server

スクリーンショット 2024-05-10 13.52.20.png

ファイアウォールルールの確認と設定

Redashのデフォルトポートは5000ですが、セキュリティ上の理由からこのポートはデフォルトでは外部からアクセスできないように設定されています。以下のコマンドを使用して、ポート5000でのアクセスを許可するファイアウォールルールを作成します。

gcloud compute firewall-rules create allow-redash-access --network redash-vpc --allow tcp:5000 --target-tags redash-server

2.Redashのセットアップ

次にRedashの初期設定を行います。新しいタブでブラウザを開き、http://35.194.108.82:5000/にアクセスします。
35.194.108.82 は自身の外部IPアドレスを入力してください。
スクリーンショット 2024-05-10 14.00.29.png

初回アクセス時には、管理者アカウントの作成画面が表示されるので、指示に従ってアカウントを設定します。

3.BigQueryデータソースの接続

サービスアカウントの作成

RedashからBigQueryへの接続には、サービスアカウントが必要です。Google Cloud Platformでサービスアカウントを作成し、適切な権限を設定します。

  1. Google Cloud Consoleにログインします。

  2. 「IAM & Admin」→「Service Accounts」に移動します。

  3. 「+ CREATE SERVICE ACCOUNT」をクリックし、サービスアカウントの名前を入力します。

  4. 必要なロールをサービスアカウントに割り当てます。BigQueryに対して必要な権限は以下の通りです。今回は短時間での簡単な利用のため、BigQuery管理者のロールを割り当てます。

    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.update
    • bigquery.datasets.get
    • bigquery.tables.list
    • bigquery.tables.get
    • bigquery.tables.getData
      スクリーンショット 2024-05-10 14.02.40.png
  5. 「続行」をクリックしてサービスアカウントを作成します。

  6. サービスアカウントの詳細ページから「Keys」セクションに移動し、「Add Key」→「Create new key」を選択します。

  7. キーのタイプとして「JSON」を選択し、「CREATE」をクリックして、キーファイルをダウンロードします。このファイルはRedashでの認証に使用します。

スクリーンショット 2024-05-10 14.03.45.png

BigQueryテーブルの作成

今回は、簡易的に可視化を行いたいため、以下のSQLで架空のトランザクションデータを作成していきます。

BigQueryから「データセット作成」をクリック、任意のデータセットを作成し、SQLクエリを作成から以下のSQLを実行します。

CREATE TABLE `プロジェクトID.データセット名.test_transactions` (
    TransactionID STRING,
    TransactionDate DATE,
    CustomerName STRING,
    ProductName STRING,
    Quantity INT64,
    UnitPrice NUMERIC,
    TotalPrice NUMERIC,
    PaymentMethod STRING
);

INSERT INTO `プロジェクトID.データセット名.test_transactions` (TransactionID, TransactionDate, CustomerName, ProductName, Quantity, UnitPrice, TotalPrice, PaymentMethod) VALUES
    ('T0005', '2023-11-03', '鈴木一郎', 'ゲームコンソール', 1, 30000.0, 30000.0, 'PayPay'),
    ('T0006', '2023-11-03', '高橋真理子', 'キッチンブレンダー', 1, 8000.0, 8000.0, '現金'),
    ('T0003', '2023-11-02', '佐藤健', 'スマートフォン', 1, 60000.0, 60000.0, '代金引換'),
    ('T0009', '2023-11-05', '小林幸子', 'カメラ', 1, 50000.0, 50000.0, '銀行振込'),
    ('T0001', '2023-11-01', '田中太郎', 'ノートパソコン', 1, 80000.0, 80000.0, 'クレジットカード'),
    ('T0007', '2023-11-04', '渡辺梨花', 'スマートウォッチ', 1, 25000.0, 25000.0, 'クレジットカード'),
    ('T0004', '2023-11-02', '伊藤翼', '電子書籍リーダー', 1, 20000.0, 20000.0, 'クレジットカード'),
    ('T0010', '2023-11-05', '吉田拓也', 'Bluetoothスピーカー', 1, 15000.0, 15000.0, 'クレジットカード'),
    ('T0002', '2023-11-01', '山田花子', 'ヘッドフォン', 2, 15000.0, 30000.0, '銀行振込'),
    ('T0008', '2023-11-04', '中村蓮', 'ワイヤレスイヤフォン', 2, 10000.0, 20000.0, 'コンビニ払い');

Redashでのデータソース設定

ダウンロードしたJSONキーファイルを使用して、RedashにBigQueryデータソースを設定します。

  1. Redashダッシュボードの「Connect a Data Source」セクションで「+ New Data Source」をクリックします。
    スクリーンショット 2024-05-10 14.05.45.png

  2. 「BigQuery」を選択し、表示されるフォームに必要な情報を入力します。
    スクリーンショット 2024-05-10 14.04.48.png

  3. 「JSON Key File」フィールドに、ダウンロードしたキーファイルの内容を貼り付けます。

  4. 設定を完了し、「Save」をクリックしてデータソースを保存します。

クエリの作成とダッシュボードの設定

Redashを使用してデータを可視化するには、まずクエリを作成し、それをダッシュボードに組み込む必要があります。以下は、test_transactionsテーブルからデータを抽出して分析するための手順です。

Redashでのクエリ作成

  1. 左側のサイドバーから「Create」を選択し、「Query」ボタンをクリックします。
  2. 「Data Source」のドロップダウンリストから、設定したBigQueryデータソースを選択します。

日別売上合計のクエリ

  1. 日々の売上を把握するためのクエリを以下のように作成します。
SELECT TransactionDate, SUM(TotalPrice) AS TotalSales
FROM `プロジェクトID.データセット名.test_transactions`
GROUP BY TransactionDate
ORDER BY TransactionDate

スクリーンショット 2024-05-10 14.07.49.png
2. クエリを入力したら、「Execute」ボタンをクリックしてクエリを実行します。
3. 結果が表示されたら、「Save」をクリックして、クエリに名前を付けて保存します。

3.グラフでの可視化

クエリ実行後の画面には、クエリ結果とともに「New Visualization」ボタンが表示されます。このボタンをクリックします。「New Visualization」をクリックすると、視覚化の種類を選択するための画面が開きます。

Visualization タブでの操作

  • 視覚化の種類を選択できるドロップダウンメニューから「Line Chart」などのグラフタイプを選びます。
  • X軸とY軸に使用するデータカラムを指定します。例えば、X軸に「TransactionDate」、Y軸に「TotalSales」を設定します。
  • その他のオプション(グラフのタイトル、色設定、グリッド線の表示など)をカスタマイズします。
  • 設定が完了したら、「Save」をクリックして視覚化を保存します。
    スクリーンショット 2024-05-10 14.09.35.png

ダッシュボードの作成: 左側のサイドバーから「Create」を選択し、「Dashboard」から「New Dashboard」をクリックします。
スクリーンショット 2024-05-10 14.10.20.png

ダッシュボードへのクエリの追加: 新しいダッシュボードに「Add Widget」をクリックし、保存したクエリを選択します。

スクリーンショット 2024-05-10 14.10.49.png

ダッシュボードに追加: 「Add to Dashboard」をクリックして、折れ線グラフをダッシュボードに追加します。このように選択した「Visualization」を追加していくことで、BigQueryから取得したデータを可視化することができます。

スクリーンショット 2024-05-10 14.11.13.png

まとめ

今回は、Redashを使用してBigQueryデータをクエリし、視覚化する一連のプロセスを紹介しました。データを効果的に視覚化することで、ビジネス上の決定を迅速かつ正確に行うための支援が可能になります。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0