Ryoto Suzuki

Ryoto Suzuki

Software Engineer

Apache Superset について

Apache Superset について

はじめに

ソフトウェアエンジニアの鈴木です。

エムシーデジタルでは、数理最適化・機械学習技術を活用した AI アプリケーションやその他 SaaS プロダクトの開発において、開発品質や効率を高めるために「Tachyon Platform」を構築しています。(Tachyon Platform についてはエムシーデジタルが取り組む Platform Engineering - Tachyon Platformを参照してください。) その中で、 アドホックなデータ探索や精度モニタリングのためのダッシュボードを構築するための BI ツールとして、 Apache Superset を採用しています。 本記事では、Apache Superset の概要と、基本的な使い方について紹介します。

Apache Superset とは

Apache Superset は、Airbnb 社が開発したデータ探索と可視化のための BI ツールです。Apache License 2.0 のオープンソースソフトウェアとして提供されています。 主に以下の特徴があります。

  • ノーコードインターフェース: コードを書くことなく、簡単にチャートを作成できます。

ノーコードインターフェース 引用:Apache Superset 公式ドキュメント

  • SQL Lab: SQL Lab というウェブブラウザ上で動作する SQL エディターで、データベースの検索・更新ができます。

SQL Lab 引用:Apache Superset 公式ドキュメント

  • 多様なビジュアライゼーション: シンプルな棒グラフや円グラフから、地図を使ったチャートなど、さまざまな方法でデータを可視化できます。

多様なビジュアライゼーション 引用:Apache Superset 公式ドキュメント

  • セキュリティとアクセス管理: 誰がどのデータにアクセスできるかを管理できます。

  • API によるカスタマイズ: データ取得やダッシュボード管理のための API が提供されています。

  • 多様なデータソースへの接続: Apache Superset は、SQL を使用するほぼすべてのデータストアやデータエンジンからデータを取得できます。以下は 現在(2024年11月時点)Superset がサポートしている主要なデータベースやクラウドサービスの一部です。

多様なデータソースへの接続 引用:Apache Superset 公式ドキュメント

Apache Superset の基本的な使い方

公式ドキュメントのQuick Startに従って、Apache Superset をインストールし、起動します。

$ git clone https://github.com/apache/superset
$ cd superset
$ docker compose -f docker-compose-image-tag.yml up

http://localhost:8088 をブラウザで開き、以下のユーザー名とパスワードでログインします。

  • ユーザー名: admin
  • パスワード: admin

初期状態では、以下のようにいくつかのサンプルダッシュボードが用意されています。 サンプルダッシュボードの一覧 サンプルダッシュボード例

ここでは、簡単なチャートを作成する手順を紹介します。

1. ダッシュボードを作成する

ダッシュボードを作成するには、画面右上の「+」ボタンをクリックし、「Dashboard」を選択します。 ダッシュボードを作成する

ダッシュボードの名前(ここでは「サンプルダッシュボード」としました)を入力し、「Save」ボタンをクリックします。 ダッシュボードの名前を入力する

2. チャートを作成する

作成したダッシュボードにチャートを追加するには、画面中央の「+ CREATE A NEW CHART」ボタンをクリックします。 まず、「① Choose A Dataset」でデータセットを選択します。ここでは「video_game_sales」というサンプルデータセットを選択しました。 次に、「② Choose chart type」でチャートの種類を選択します。ここでは「Bar Chart」を選択しました。 右下の「CREATE NEW CHART」ボタンをクリックします。 チャートを作成する

「DATA」タブで、

  • X-AXIS: 横軸
  • METRICS: 縦軸
  • DIMENSIONS: グループ化する集計軸

をそれぞれ設定することで、棒グラフを作成できます。 ここでは、

  • X-AXIS: year
  • METRICS: jp_sales 列の合計
  • DIMENSIONS: genre

を設定しました。画面下部の「UPDATE CHART」ボタンをクリックすると、チャートが更新され、プレビュー表示されます。 チャートの設定

画面右上の「SAVE」ボタンをクリックし、チャートを保存します。 チャートを保存する

作成したチャートがサンプルダッシュボードに追加されました。 作成したチャート

ダッシュボードのカスタマイズ

先程作成したダッシュボードをカスタマイズする方法をいくつか紹介します。

チャートのカスタマイズ

チャートの編集画面に戻り、「CUSTOMIZE」タブから、チャートの見た目や設定を変更できます。 ここでは、以下のような設定を行いました。

  • X Axis
    • 「AXIS TITLE」に「年」を入力
  • Y Axis
    • 「AXIS TITLE」に「売上」を入力
  • 「STACKED STYLE」に「Stack」を選択して積み上げ棒グラフに変更
  • 「DATA ZOOM」を有効化
    • 横軸の範囲を動的に変更できるようになります

チャートのカスタマイズ 画面右上の「SAVE」ボタンをクリックし、変更を保存します。

また、ダッシュボード画面右上の「EDIT DASHBOARD」から、ダッシュボード全体のレイアウトを変更できます。 ダッシュボードのレイアウト変更

フィルタの追加

ダッシュボード画面左上の「+ ADD/EDIT FILTERS」からフィルタを追加できます。 フィルタの追加 ここでは、ジャンルを選択するフィルタを追加しました。 Actionジャンルのみ表示 例えば、ジャンルを「Action」に設定すると、「Action」ジャンルのデータのみが表示されます。

Jinja Template を使用したカスタマイズ

Jinja とは、任意のテキストファイルに Python ライクな構文を使って変数や制御構造を埋め込むためのテンプレートエンジンです。SQL クエリ内で Jinja Template を使用することで、クエリを動的に生成・カスタマイズすることが可能になります。 デフォルトでは Jinja Template は無効になっているため、docker/pythonpath_dev/superset_config.py に以下の設定を追加して有効化します。(参考: Jinja Templates

FEATURE_FLAGS = {
    "ALERT_REPORTS": True,
    "ENABLE_TEMPLATE_PROCESSING": True, # この行を追加
}

使用例: 集計軸を動的に変更する

例えば、チャートの集計軸を動的に変更するために、Jinja Template を使用することができます。 現在、チャートはジャンルごとにグルーピングして売上を表示していますが、ジャンル以外の集計軸(例: 名前、プラットフォーム、販売元)を選択できるようにしたいとします。

1. データセットに集計軸用の列を追加する

まず、データセットに集計軸用の列を追加します。データセットの編集画面から、「CALCUATED COLUMNS」タブを選択し、以下のような式を追加します。

{{ filter_values('aggregation')[0] }}

{{ filter_values() }} というのは、フィルタで選択された値をリスト形式で取得するための、Superset で用意されているマクロです。(その他使用可能なマクロについては Available Macros を参照してください。) したがって、この式はaggregationという列に対するフィルタで選択された値のうち、最初の値を取得することになります。この値をdimension列としてデータセットに追加します。

集計軸用の列を追加

チャートの編集画面から、追加したdimension列を「DIMENSIONS」に選択します。 dimension列を選択

2. フィルタの選択肢をデータセットとして作成する

次に、フィルタの選択肢を Virtual Dataset で作成します。

SQL Lab

ホーム画面上部の「SQL」→「SQL Lab」と進み、以下のクエリを実行します。

SELECT 'genre' AS aggregation
UNION ALL
SELECT 'name' AS aggregation
UNION ALL
SELECT 'platform' AS aggregation
UNION ALL
SELECT 'publisher' AS aggregation

aggregation query

名前を付けてデータセットを保存します。ここでは「集計軸」という名前で保存しました。

3. フィルタを作成する

ダッシュボード画面左上の「+ ADD/EDIT FILTERS」から、新しいフィルタを追加します。 「DATASET」に先ほど作成した「集計軸」データセットを選択し、「COLUMN」にaggregationを選択します。

aggregation filter

集計軸を選択するフィルタが追加されました。genre・name・platform・publisher のいずれかを選択することで、チャートの集計軸を動的に変更できるようになります。 aggregation filter

例えば、platform を選択すると、プラットフォームごとの売上が表示されます。 platform aggregation

おわりに

本記事では、Apache Superset の概要と基本的な使い方について紹介しました。Superset はデータの可視化と分析を効率的に行うための強力なツールです。 私自身 Superset を活用することで、データを見ながらの議論がよりスムーズになり、チームの意思決定が迅速化しました。特に、使いやすいユーザーインターフェースのおかげで、エンジニアやデータサイエンティストに限らず、プロジェクトマネージャーもデータにアクセスしやすくなったことが、業務の効率化に大きく寄与しています。 より詳しく Superset について知りたい方は、「参考文献」に挙げたドキュメントをぜひご覧ください。そこでは、本記事で触れられなかった詳細な機能や設定方法についても詳しく解説されています。

エムシーデジタルでは、技術力向上のためのイベントや勉強会なども定期的に実施しています。 もしエムシーデジタルで働くことに興味を持っていただいた方がいらっしゃいましたら、カジュアル面談も受け付けておりますので、お気軽にお声掛けください!
採用情報や面談申込みはこちらから

参考文献

RSS

Tags

Previous

Yota Matsui

Yota Matsui

障害検知のための監視設計

はじめに こんにちは。エムシーデジタルでソフトウェアエンジニアをしている松井です。 今回は、私が実際に担当したシステムを元にした比較的小規模な架空のシステムを題材に、システムの運用にお

  • #TechBlog
  • #Monitoring

Next

Haruki Abe

Haruki Abe

TypeScript の型システムについて

はじめに はじめまして、データサイエンティストの阿部です。 最近、業務で TypeScript を使用する機会が増えたことから、この言語を体系的に学ぶようになりました。特に、 TypeScript には便利なユーティリティ型が多

  • #TechBlog
  • #TypeScript