
『このダッシュボード、どれが最新?』──そんなやり取り、まだ続けていますか?
従来のBI運用では、改修履歴やデプロイフローに悩まされることが多く、非効率な作業が当たり前でした。
そこで注目したいのが、Databricks AI/BI ダッシュボードのソース管理機能です。
- AI/BI ダッシュボードのソース管理
- Gitによるバージョン管理
- Lakeview API
この3つの仕組みを使ってどのように運用を変革できるのか、実際のコード例を交えながら解説します。
はじめに
こんにちは、インテージテクノスフィアの本戸です。
Databricksは、データエンジニアリング、データサイエンス、機械学習、BI(ビジネスインテリジェンス)を統合的に扱える、クラウドネイティブなデータ分析プラットフォームです。 ダッシュボード機能も標準で搭載されており、Databricks上にあるテーブルを参照したインタラクティブなダッシュボードを作成・共有できます。 さらに、AIアシスタント「Genie」が統合されており、自然言語によるデータ探索を支援することで、AI/BIの融合を実現しています。
従来のBIツールでは、ダッシュボードの改修履歴を管理するのが難しく、バージョンごとにファイルをコピーしてバックアップを取る、 これが最新ファイルだというものを手動でデプロイする、といった運用面での手間が課題となっていました。 そんな課題に対し、Databricksではダッシュボードを簡単にソース管理する=Dashboard as Codeを実現でき、 変更履歴のトラッキングやGit連携が容易になることで安全な運用フローを構築できます。 この記事では、ダッシュボードのソース管理方法とその応用についてご紹介します。
AI/BIダッシュボード機能を紹介した記事も投稿しています。こちらもぜひご覧ください。 www.intage-ts.com
目次
ダッシュボードのソース管理
Git連携
Gitフォルダ内にダッシュボードを作成もしくは移動するだけで、ダッシュボードがソースコードとして扱われ、そのままコミット等の対象とすることができます。
ダッシュボードの実態は *.lvdash.json と付くJSONファイルとして扱われ、このJSONファイル内にデータセットやページ、各ウィジェットの構成がソースコードで定義されています。



Genieが有効化されている場合はこちらも定義に含まれるので、定義ファイルを用いてデプロイした場合も継続して利用できます。 ただし、指定のSpace IDを持つGenieスペースが必要なので、環境をまたぐ際は注意が必要です。
"genieSpace": { "isEnabled": true, "overrideId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
定義ファイルの取得方法
ダッシュボードの編集画面から、ケバブメニュー > File actions > Export と進むことで、Gitフォルダを作成せずとも定義ファイルを取得できます。

ダッシュボードに対する操作
ダッシュボード内のコンテンツに対しては上記の通りJSONにて定義されていました。一方で、ダッシュボードの公開や権限設定といった外側の構成は管理されません。 これら一つ一つの操作をコード実行する際はLakeview APIが利用できます。
Lakeview API
Databricksが提供するREST APIの内、ダッシュボード関連の操作が可能なLakeview APIというものがあります。
余談ですが、どうやらAI/BIダッシュボードの前身はLakeviewダッシュボードと呼ばれていたそうで、その名残がAPI名にあるようです。おそらく定義ファイルの lvdash はLakeview dashboardを示していると考えられます。
具体的なコードは後述しますが、このAPIを使用することで、ダッシュボードの一覧取得、作成、更新、公開といったことができ、Permission APIと組み合わせて使用することで、ダッシュボードの権限管理も実現できます。 またこれらのAPIは、Databricksワークスペース内からdatabricks.sdkで簡単に使用できます。
ダッシュボード自動作成パイプラインの実現
上記の ダッシュボードのソースコード化 + Lakeview API によって、ファイル読み込み→テーブル化→整形→定形ダッシュボード作成 の一連プロセスの全自動化を達成しました! ダッシュボードをソースコードで扱えるようになったことで、データセット作成部分の参照テーブルをプレイスホルダーとし、 前段で作成されたテーブル名で置換することで、データ毎のダッシュボード自動作成に至りました。
from databricks.sdk import WorkspaceClient from databricks.sdk.service.dashboards import Dashboard from databricks.sdk.service.iam import AccessControlRequest, PermissionLevel # SDKワークスペースクライアントの初期化 w = WorkspaceClient() # ダッシュボード定義ファイルの読み込み with open("./sample_dashboard.lvdash.json", "r", encoding="utf-8") as f: dashboard_content = f.read() # ダッシュボードインスタンスの作成 dashboard = Dashboard( display_name="sample_deplyed_dashboard", parent_path="/Workspace/xxx/xxx/xxx/", warehouse_id="xxxxxxxxxxxxxxxxxx", serialized_dashboard=dashboard_content ) # ダッシュボードの作成 created = w.lakeview.create(dashboard=dashboard) dashboard_id = created.dashboard_id # ダッシュボードの公開 w.lakeview.publish(dashboard_id=dashboard_id) # ダッシュボードの権限設定 w.permissions.set( request_object_id=dashboard_id, request_object_type="dashboards", access_control_list=[ AccessControlRequest( group_name="admins", permission_level=PermissionLevel.CAN_MANAGE ), AccessControlRequest( group_name="reader", permission_level=PermissionLevel.CAN_RUN ) ] )
※Lakeview APIがGitフォルダに対応していないのか、検証時にはparent_pathにGitフォルダを指定できなかったため、通常フォルダを指定しました。
まとめ
本記事では、Databricksのダッシュボードのソース管理とLakeview APIについてご紹介しました。 Databricksはクラウドデータプラットフォームの中でもAI機能に強く先進的なプラットフォームとして認知されていますが、 一方でこうした堅実で便利な機能が充実している点も、Databricksの魅力のひとつだと感じました。
今回はダッシュボード周辺を扱いましたが、他にも本当にたくさんの機能が備わっています。 それらを使いこなすことでDatabricksがもつポテンシャルをさらに引き出せるはずですので、 今後も様々な機能を探求していきたいと思います。