Lookerライクな新興BIツールの比較検討
はじめに
こんにちは。廣瀬智史 (@satoshihirose) と申します。
Looker の LookML は便利ですよね。LookML はデータモデリングを抽象化してコードによる管理を可能にし、利便性を向上させました。 LookML については Google Cloud の LookMLの紹介 で次のように説明されています。
LookML は SQL データベース内のディメンション、集計、計算、データの関係を記述するための言語です。Looker は LookML で記述されたモデルを使用して、特定のデータベースに対する SQL クエリを作成します。
このように近年、SaaS や OSS のデータ利活用周りのプロダクトの開発が活発になっています。 一方で、新しめの BI ツールでもそのようなデータモデリングやコード管理をしやすい特徴を持つツールが増えてきたことで、どのツールを利用するべきか判断しづらくなってきたようにも感じます。 ということで、今回は Looker のように使える BI ツールがないか、下記のプロダクトを調査してみましたのでその内容をご紹介します。
Holistics (SaaS)
Holistics は「Your Self-Service BI Platform」と謳っているように、データ連携からデータモデリング、可視化機能まで、直感的な GUI が用意されているのが特徴です。Holistics は SaaS として提供されます。14 日間のフリートライアルがあるので、契約する前にお試しとして使うことができます。
データモデリングに関しては、データ連携した DWH 上のテーブル情報を取り込み、データモデルを作成します。また、そのデータモデルを利用してチャートを作成します。ディメンションやメトリクスを SQL の記法を通じて作成したり、データモデル間の Relationship を GUI で作成することでデータの関連性を表すことができます。下記のような画面を通じてチャートを探索的に作成できます。
ブログ執筆者による検証画面
作成できるチャートに関しては、ヒートマップや Geo マップなどさまざまなチャートに対応しています。またデータのドリルダウンも可能です。URL によるダッシュボードの共有もパスワードの設定に対応するなど使い勝手が良さそうです。
各種リソースは GUI から作成して管理できますが、AML という言語を使ってコードでの管理も可能です。例えば、AML を使ってデータモデル定義をする場合、下記のように記述できます。
import '../base-model/cities.model.aml' {cities}
import '../base-model/countries.model.aml' {countries}
Model location {
type: 'query'
label: 'Location'
owner: "khai@holistics.io"
description: ""
data_source_name: 'demodb'
models: [cities, countries]
query: @sql
SELECT as city_name,
as country_name
FROM
LEFT JOIN ON =
;;
dimension city_name {
label: 'City Name'
type: 'text'
}
dimension country_name {
label: 'Country Name'
type: 'text'
}
}
外部のリポジトリと連携し、下記のようなデプロイフローを GUI を通じて実現できるようで、もし CLI に慣れていないような人もデータモデルを触るようなことがある場合は便利に使えるかもしれません。
下記がドキュメントに掲載されていたコード編集用の GUI 画面で、ブランチの切り替えや GUI からのデプロイなどに対応していることが見て取れます。
Holistics は SAML による SSO 連携が可能で、Admin ユーザーはアクティビティログの利用が可能です。その他、GDPR に準拠していると説明されています。
Cube (SaaS)
Cube は SaaS 版と自分たちの環境でホストする OSS 版があります。「Open Source Headless BI」を名乗っているように、フルスタックの BI 機能を提供するものではなく、データストアと BI ツールなどのさまざまなクライアントアプリケーションとをつなぐ機能を API サーバーとして提供します。Cube の SaaS 版には PoC のために使えるフリープランがあります。OSS 版には Docker イメージが用意されており、コマンドひとつでサーバーをローカル環境に起動できます。
Cube 公式ドキュメントから引用
GUI から接続先のデータストアを指定でき、複数のデータストアを使う場合は cube.js を編集するなど、JavaScript をベースにした DSL を設定することで、データアクセスのための API サーバーのルーティングを作っていくイメージです。その中でディメンションやメトリックを定義します。SQL で定義できるため、複数のテーブルを跨いだ定義も可能です。DSL は下記のような感じで記述します。
cube(`Users`, {
sql: `SELECT * FROM users`,
measures: {
count: {
sql: `id`,
type: `count`,
},
},
dimensions: {
city: {
sql: `city`,
type: `string`,
},
companyName: {
sql: `company_name`,
type: `string`,
},
},
});
GitHub と連携することでリポジトリと紐づけた deploy 管理も可能です。
チャート作成に関しては、クライアントアプリケーション向けに埋め込み用コードを生成するための簡易機能は付属していますが、サポートしているチャートのフォーマットは限られています。Cube は Headless BI ということもあり、汎用 BI ツールとしてダッシュボードを作成する用途には向いていなさそうです。そのため基本的なシステム構成としては、Cube で管理したデータを外部 BI ツールやアプリケーションから利用するような形になりそうです。例えば、自社 SaaS の Web 画面になんらかのチャートを載せたいが柔軟に管理したいといった場合に、自分である程度 Web クライアントのコードを書いてデータを取得する API 部分は Cube サーバーに任せて管理するような構成が考えられます。
ブログ執筆者による検証画面
OSS を自前でホストする場合は、別アプリとしてダッシュボードアプリをテンプレートから起動する機能があります(現時点では SaaS 版にはないようです)。
ブログ執筆者による検証画面
Cube はチームを作って、それぞれにメールアドレス経由でユーザーを招待できます。SSO 接続はサポートしていませんが、エンタープライズプランなら SaaS 環境に dedicated VPC を作れて自前の VPC とピアリングできるようです(エンタープライズプランはカスタムプランのためセールスとのコンタクトが必要そうです)。また、監査用のサーバーログをコンソール上で見ることができます。
Sigma (SaaS)
Sigma はスプレッドシートの UI でデータモデリング、探索、可視化ができる SaaS 製品です。スプレッドシートのように、ワークブックの中で新しいデータの定義やデータの可視化ができ、それをチームで共有できます。14 日間のフリートライアルを用意しており、登録するとすぐに使い始められます。
ブログ執筆者による検証画面
データモデリングに関しては、多くの人が使い慣れたスプレッドシートのような UI で操作できます。接続先のデータストアのテーブル上のデータを使い、ディメンションやメトリックを新しいカラムとして追加もできます(例えば、文字列の連結や集計関数 SUM などを使って複数の列から新たな列を生成するなど)。また、GUI 上でのテーブル間のジョインもサポートしており、ジョイン後のそれぞれのテーブルのカラムを使って新規カラムを作成できます。下記は GUI によるジョインを行う画面です。
Sigma 公式ドキュメントから引用
チャートの管理は、ワークブックという単位で行い、探索的にチャートを作成できます。チャートの種類においては一般的なものは一通り揃っており、ドリルダウンもサポートしています。
ブログ執筆者による検証画面
一方で、GUI に大きく依存した操作性が重視されているため、コードによるリソース管理はできないようです。
ユーザーはメールアドレスを登録することで招待でき、SAML による SSO にも対応しています。 Usage モニタリング用のダッシュボードが最初から用意されていて、そこでアクティビティログが確認できます。誰がどのワークブックを参照したか、操作したか、クエリを実行したかが確認できるので管理者にとってはありがたい機能です。
Sigma 公式ドキュメントから引用
LightDash (OSS)
LightDash は dbt 上で管理されているデータモデルを利用してデータの可視化を行うことができる OSS のソフトウェアです。dbt の利用が必須とはなりますが、dbt を導入済みもしくは導入を決めている場合は導入検討の候補にあげられるかもしれません。今年から SaaS の提供も始めたようですが、現在はベータ版となっておりウェイティングリストに登録できます。 OSS 版を自分でホストするには、直接 Docker コマンドを叩く方法と install スクリプトを使う方法が用意されています。
今回の調査で、手元の M1 Macbook Pro で OSS 版の LightDash を起動しようとしたところ、こちらのエラーが発生しました。このエラーは protobuf のダウングレード pip install protobuf==3.20.1
により解消し、LightDash の起動に成功しました。
設定から dbt プロジェクトを登録することで、複数のプロジェクトのデータを利用できます。しかし、プロジェクトを跨いだデータの利用はできないようです。
ブログ執筆者による検証画面
dbt をプロジェクト管理に使用しているので、データモデルはコードによる管理が可能です。データモデリングの機能は全て dbt に依存しているため、ディメンションやメトリックの追加は dbt のプロジェクトに直にコミットする必要があり、GUI でそれを行う機能は提供していません。GitHub などのコードリポジトリ上の dbt のプロジェクトを参照させることができますが、同期には CI によるコマンドの実行などが必要なようです。
GUI では dbt で定義されるモデルを参照したり、それに対するクエリ結果を元にチャートを作成できます。チャート作成機能に関しては、値によるソートができないなど、現時点では、簡易的な機能しか提供されていない印象です。
ブログ執筆者による検証画面
また、SSO や GUI 上での監査ログの確認はサポートしていません。
Mprove (OSS)
この OSS は、Mprove という企業によって開発されていますが、2022 年に設立されたばかりの企業であり、現時点では一人のコミッタによって開発されています。ダッシュボードを含む、BI におけるほぼ全てのリソースがコードで管理でき、GUI 上からそれらのコードも変更でき、コミットをプッシュできるという他の BI ツールにはあまりない特徴を持っています。
README に従い、Docker からサーバーを起動できます。その際には、サーバー環境のディレクトリ構成に従い .env
ファイルを変更する必要があります。また、初期ログインユーザーのメールアドレス、パスワードは .env
ファイルにハードコードされています。起動すると demo 環境が構築され、起動した PostgreSQL への接続情報が作られ、サンプルのプロジェクトが表示されます。プロジェクトの設定から DWH へのコネクションを作成できます。
ブログ執筆者による検証画面
チャート、ダッシュボード、モデルなどのリソースは YAML ファイルで管理できます。それらを総称して BlockML と呼んでいるようです。データモデルは .view
や .model
という YAML ファイルで管理ができ、ディメンション、メトリクス、view のジョインなどを記述できます。例えばディメンションは下記のように .view
ファイルで定義できます。
view: view_name
connection: connection_name
label: 'view label in UI'
description: 'description in UI'
table: table_name
derived_table: |
'SELECT ... FROM ...'
udfs:
- user_defined_function_name
- user_defined_function_name
- ...
fields:
# List of fields (Dimensions, Time, Measures, Calculations, Filters)
# - dimension: dimension_name
# ...
はじめに BlockML ファイル群は GitHub のリポジトリを作成もしくはリモートリポジトリに関連づける必要があります。そうすることで、GUI 上から BlockML ファイルの変更やコミット、リモートリポジトリへのプッシュなどができるようになっています。ブランチによる環境の分離・切り替えにも対応しているようで、本番環境相当のブランチには GUI からファイルの変更をコミットできないようにデプロイフローを工夫しているようです。
ブログ執筆者による検証画面
ダッシュボードは GUI 上から編集し、その変更を .dashboard
ファイルに反映させコミットできます(ダッシュボードもコード管理可能なため、ファイルをコピーと修正を繰り返すことで類似のダッシュボードを手軽に作成可能です)。
ブログ執筆者による検証画面
project ごとにメールアドレスを登録することでユーザーを招待できます。SSO や監査ログ表示はサポートしていません。
ML Craft (OSS)
最後に ML Craft という OSS を紹介します。この OSS は「Low-code metrics layer, modern open-source alternative to Looker」を謳って開発されています。上記で紹介した Cube.js
をデータマネジメントに利用しており、その上に BI 機能を構築しています。
今回の検証にあたって GitHub リポジトリの README を参考に動作確認をしましたが、遭遇した問題がいくつかありますので記載しておきます。
- M1 Mac ではうまく動かないようです(GitHub Issue)
- BigQuery への接続を作成し、Schema Generate をすると
GRANULARITY_TO_INTERVAL[granularity] is not a function
というエラーが発生し、テーブル情報を取得できません - 同じく、Amazon Athena への接続を作成し、Schema Generate をしても失敗する既知の bug があります(GitHub Issue)
上記で述べたように MLCraft は Cube.js
を利用しているため、データマネジメントは Cube.js
の記法に従って JavaScript ファイルで管理します。任意のデータストアへ接続したあと、GUI 上から Schema Generate を実行することで、対象のデータストアから選択した任意のテーブルの Cube.js
に対応した JavaScript ファイルが自動で生成されます。その生成されたファイルを編集することで、ディメンションやメトリクスを定義できます。
ブログ執筆者による検証画面
生成されたコードは GUI 上で編集・適用が可能ですが、それを GitHub などと連携する方法は提供されていません。外部連携したい場合はサーバー上に生成された JavaScript のコードをなんらかの方法で外部にプッシュする方法を用意する必要があります。
作成されたデータモデルからチャートを作ることが可能で、基本的なチャートには対応していますが、ドリルダウンなど複雑な機能は提供していません。ダッシュボードは、作成したチャートを追加し、ビジュアライズを整えることで作成可能です。ダッシュボードにはユニークな URL が付与されていますが、表示するダッシュボードを選ぶには今のところ上部のツールバーから選択するしか導線がありません。そのため、ダッシュボードの数が多くなった場合にはなかなかスケールしなさそうです。
ブログ執筆者による検証画面
ユーザーをメールアドレスを経由して invite するような仕組みになっており、所属するチームによって見られるリソースが異なるという作りになっています。チームを跨いだリソースのシェアはできず、SSO や監査ログ表示には対応していません。
まとめ
以上、6 つの BI ツールの基本的な利用方法を調べました。末尾に、簡単な比較表を載せておきます。それぞれ特色があり、利用可能な状況は異なるかと思います。
- 現時点では、Holistics が比較的に機能が充実しており、BI ツールとして一番バランスが良く、組織での利用にも耐える作りになっている印象でした。
- Cube は、さまざまなクライアントからデータを利用するための統一的なデータ提供レイヤーが欲しい場合に良いかもしれません。
- スプレッドシートのような使い慣れた使用感にこだわりたい場合は Sigma が良いかもしれません。
- LightDash や Mprove、ML Craft は新しいユーザー体験を作ろうと大きな目標に挑んでいますが、比較的新しいこともあり組織的な利用にはもう一歩機能の拡充が必要な印象でした。今後の発展に期待です。
さまざまなツールが競い合うことで BI ツールの機能が豊富になり、今後ますます便利になっていくだろうことがとても楽しみです。それでは、ありがとうございました。
基本情報
Holistics (SaaS) | Cube (SaaS) | Sigma (SaaS) | LightDash (OSS) | Mprove (OSS) | ML Craft (OSS) | |
---|---|---|---|---|---|---|
SaaS | ○ | ○ | ○ | ○ (beta) | × | × |
OSS | × | ○ | × | ○ | ○ | ○ |
トンネル接続 | ○ | × | × | - | - | - |
複数ユーザー | ○ | ○ | ○ | ○ | ○ | ○ |
ユーザーによるメールアドレスの変更 | ○ | × | ○ | ○ | × | ○ |
SSO対応 | ○ | × | ○ | × | × | × |
監査ログ | ○ | ○ | ○ | × | × | × |
連携可能データストア | Athena, BigQuery, Clickhouse, MSSQL, MySQL, PostgreSQL, Presto, Redshift, Snowflake | Athena, BigQuery, ClickHouse, Databricks, Druid, Elasticsearch, Firebolt, Hive/SparkSQL, ksqlDB, Materialize, MongoDB, MSSQL, MySQL, Oracle, PostgreSQL, Presto, QuestDB, Redshift, Snowflake, SQLite | BigQuery, Databricks, PostgreSQL, Redshift, Snowflake | BigQuery, Databricks, PostgreSQL, Redshift, Snowflake | BigQuery, ClickHouse, PostgreSQL, Snowflake | Athena, BigQuery, Clickhouse, MSSQL, MySQL, PostgreSQL, Redshift |
コードによる管理
Holistics (SaaS) | Cube (SaaS) | Sigma (SaaS) | LightDash (OSS) | Mprove (OSS) | ML Craft (OSS) | |
---|---|---|---|---|---|---|
データモデル | ○ | ○ | × | ○ | ○ | ○ |
ダッシュボード | × | × | × | × | ○ | × |
GitHub連携 | ○ | ○ | × | ○ | ○ | × |
ブランチによる環境管理 | ○ | ○ | × | × | ○ | × |
ウェブエディタの利用 | ○ | ○ | × | × | ○ | ○ |
ダッシュボードの機能
Holistics (SaaS) | Cube (SaaS) | Sigma (SaaS) | LightDash (OSS) | Mprove (OSS) | ML Craft (OSS) | |
---|---|---|---|---|---|---|
タグ管理 | × | - | × | × | × | × |
フォルダ管理 | ○ | - | ○ | ○ | × | × |
URLによるシェア | ○ | - | ○ | ○ | ○ | ○ |
URLでフィルタの値を指定 | ○ | - | × | × | × | × |
チャートの種類
Holistics (SaaS) | Cube (SaaS) | Sigma (SaaS) | LightDash (OSS) | Mprove (OSS) | ML Craft (OSS) | |
---|---|---|---|---|---|---|
積み上げ棒グラフ | ○ | × | ○ | × | ○ | ○ |
折れ線グラフ | ○ | ○ | ○ | ○ | ○ | ○ |
テーブル | ○ | ○ | ○ | ○ | ○ | ○ |
ピボットテーブル | ○ | ○ | ○ | × | ○ | × |
ヒートマップ | ○ | × | × | × | ○ | × |
ドリルダウン | ○ | × | ○ | × | × | × |