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 のオープンソースソフトウェアとして提供されています。 主に以下の特徴があります。
- ノーコードインターフェース: コードを書くことなく、簡単にチャートを作成できます。
- SQL Lab: SQL Lab というウェブブラウザ上で動作する SQL エディターで、データベースの検索・更新ができます。
- 多様なビジュアライゼーション: シンプルな棒グラフや円グラフから、地図を使ったチャートなど、さまざまな方法でデータを可視化できます。
セキュリティとアクセス管理: 誰がどのデータにアクセスできるかを管理できます。
API によるカスタマイズ: データ取得やダッシュボード管理のための API が提供されています。
多様なデータソースへの接続: Apache Superset は、SQL を使用するほぼすべてのデータストアやデータエンジンからデータを取得できます。以下は 現在(2024年11月時点)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」ジャンルのデータのみが表示されます。
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」に選択します。
2. フィルタの選択肢をデータセットとして作成する
次に、フィルタの選択肢を Virtual Dataset で作成します。
ホーム画面上部の「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
名前を付けてデータセットを保存します。ここでは「集計軸」という名前で保存しました。
3. フィルタを作成する
ダッシュボード画面左上の「+ ADD/EDIT FILTERS」から、新しいフィルタを追加します。
「DATASET」に先ほど作成した「集計軸」データセットを選択し、「COLUMN」にaggregation
を選択します。
集計軸を選択するフィルタが追加されました。genre・name・platform・publisher のいずれかを選択することで、チャートの集計軸を動的に変更できるようになります。
例えば、platform を選択すると、プラットフォームごとの売上が表示されます。
おわりに
本記事では、Apache Superset の概要と基本的な使い方について紹介しました。Superset はデータの可視化と分析を効率的に行うための強力なツールです。 私自身 Superset を活用することで、データを見ながらの議論がよりスムーズになり、チームの意思決定が迅速化しました。特に、使いやすいユーザーインターフェースのおかげで、エンジニアやデータサイエンティストに限らず、プロジェクトマネージャーもデータにアクセスしやすくなったことが、業務の効率化に大きく寄与しています。 より詳しく Superset について知りたい方は、「参考文献」に挙げたドキュメントをぜひご覧ください。そこでは、本記事で触れられなかった詳細な機能や設定方法についても詳しく解説されています。
エムシーデジタルでは、技術力向上のためのイベントや勉強会なども定期的に実施しています。 もしエムシーデジタルで働くことに興味を持っていただいた方がいらっしゃいましたら、カジュアル面談も受け付けておりますので、お気軽にお声掛けください!
採用情報や面談申込みはこちらから