爆速で OpenMetadata を使ってメタデータ管理を試してみる

データ分析基盤 なる言葉を耳にすることが多くなりました。
身近な例を挙げると、[デジタル庁の政策データダッシュボード](https://www.digital.go.jp/resources/govdashboard/) は、同庁のデータ分析基盤がそれを支えています。

https://digital-gov.note.jp/n/na227ce427930

データを組織活動に活かそうという動きは近年非常に加速していますので、あちこちでデータ分析基盤構築の動きがみられます。データ分析基盤構築の最初のステップは、まずはDWHにデータを集約することになります。データ分析に活用できそうなデータ集まり、DWHを中心としたデータ分析基盤が整ってきたら、次はデータを説明するための情報である メタデータ を使って、利用者に対してデータに関する正しい情報を提供することが重要になってきます。とはいえ、データを説明するための情報は、システム担当者の頭の中や社内Wiki、Excelの設計書などに埋もれたままになっていることが多いのではないでしょうか。例えば、基幹システムのテーブル設計書はExcelでずっと管理されており、カラムの仕様については実際のテーブルが更新されても設計書に反映されず、担当者しか分からない。などということはよくあると思います。ましてやこれらの情報を、メタデータとして管理するとなると、非常に腰が重くなります。そのため、メタデータ管理は重要とは分かっていても、なかなか取り組みにくいアクティビティのひとつとなっています。しかし、せっかく構築したデータ分析基盤をより多くの利用者に活用してもらうには、メタデータ管理がどうしても必要となります。また、社内でAIの利用が進めば、データ分析基盤をChatGPTのようなインターフェースで利用することも将来的にはあり得るでしょう。その時、整備された質の高いメタデータは、良質な大量のテキストデータセットを必要とするLLMの格好の訓練データとして利用することができるでしょう。

ということで、メタデータ管理は今後さらに重要になってくると考えています。メタデータ管理は特定のツールに縛られるこはないのでWikiやExcel等を使っても実現できますが、専用のツールも存在します。それらは一般的に、DataCatalogという名称で呼ばれています。多くのベンダーからDataCatalog製品はリリースされていますが、そもそもメタデータ管理に馴染の無い方も多いと思いますので、今回はOSSのDataCatalogであるOpenMetadataを使って、メタデータ管理を爆速で試してみたいと思います。実際に体験すると、メタデータ管理への理解もぐっと深まると思います。


## クイックスタート
OpenMetadata のサイトには [クイックスタート](https://docs.open-metadata.org/v1.2.x/quick-start#quickstart) のページがあり、Dockerなどを使ってOpenMetadataを体験する手順がガイドされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/78183b17-1260-0cc1-1b7c-c12c746a4a23.png)
中でも [サンドボックス](https://sandbox.open-metadata.org/signin) は、サンプルの運用環境がセットアップ済みの OpenMetadata となっていて、ログインすればすぐに機能を使ってみることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/8d72f7bf-9831-b23b-d05e-a03731ecbdb6.png)
とにかく爆速で機能を体験してみるには最適です。今回はこちらで機能を試してみたいと思います。

## ログインしてみる
ログインして右上のプルダウンから 日本語 - JA を選択すれば、概ね日本語表示になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/bb2381f3-58ab-ab6c-b910-964011cd184b.png)
DBをはじめ、データを保持するものは、データアセットと呼ばれます。既にサンプルのDBなどが登録されていますので、テーブルやビューのスキーマ構造やカラムの型や制約などを、OpenMetadataを通してメタデータとして認識することができます。

## メタデータを検索してみる
メタデータを使った検索を試してみます。検索ボックスに "Customer" と入力して検索してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/d91ebba7-92a1-6608-98d2-0146a467b97f.png)
テーブル名はもちろん説明欄なども検索キーワードにヒットします。アプリケーション全体を通した検索が行えるため、テーブルだけでなく様々なアセットを横断的に検索することができます。検索ボックス左横のプルダウンで検索対象を絞ることもできますので、DBのテーブルだけを検索対象にしたいなど、絞り込み検索を行うことができます。検索ボックスに、条件（ANDやORなど）を書くこともできます。（詳しくはOpenMetadataのドキュメント [高度な検索](https://docs.open-metadata.org/v1.2.x/features#advanced-search) を参照）
カラムの一覧などのスキーマ情報は自動で収集されますが、テーブル仕様などの設計書に記載するような情報は、説明欄に担当者が記載することになります。

## メタデータを編集してみる
それではテーブル仕様など、仕様書や設計書に記載されているような情報を手動で付与してみましょう。テーブルに関する簡単な説明を記載してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/54708d0c-e151-719b-a6f7-73ef97237702.png)
マークダウンで記載できるので、リッチなテキスト表現やリンクの挿入が出来ます。Excelの設計書やDDLコメントよりはるかに豊かな表現が可能です。記載したテーブルの説明は、テーブルに関する立派なメタデータとなります。

記載した説明に検索がヒットするようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/51fb69ed-fee7-954b-a992-c896a0e7b649.png)
このメタデータがあることで、データを探している利用者は、検索機能を使って必要とするテーブルを見つけることができるようになるかも知れません。このようにデータを探している利用者に見つけやすくメタデータを付与していくことが、メタデータ管理の基本となります。

## 様々なメタデータを確認してみる
他のメタデータも確認してみます。これらの情報も、データを理解するための情報として捉えれば、メタデータと言えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/7dcc48ea-75d7-d2b4-acad-2f6baaea1e9f.png)

- サンプルデータ
テーブルに格納されている実データをプレビューすることができます。思った通りのデータが登録されいるのかを確認するのに役立ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/36e8c405-d19d-ecd7-7783-c4cc0cef8e31.png)

- クエリ
クエリも登録することができます。よく使うクエリを記載しておけば、データ利用者が実際に実データを使う際の参考になります。クエリの評価もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/09a73e22-88de-1bd7-a84f-817dd5c409e5.png)

- プロファイラとデータ品質
NULL値や一意の割合などが確認できます。データが分析などに利用可能かなど、データの状態を把握するのに役立ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/0a429ae8-aeda-d3fe-ca16-624b776fd045.png)

- リネージュ
データのつながりを把握することができます。DBのビューなど、自動で解析されてつながりが可視化されるものもありますが、その他は手動でつながりを編集していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/9d5d7a93-b4ef-1c2d-bcbe-64a277b2c306.png)



## まとめ
メタデータ管理の最初の一歩を試してみました。メタデータって何？ DataCatalogって何？ と思ったら、まずOpenMetadataで体験してみるのがお手軽です。
- [サンドボックス](https://sandbox.open-metadata.org/signin) ですぐに機能を体験できます。

さらに詳しく体験したくなったら、自分の環境で試すこともできます。
- [クイックスタート](https://docs.open-metadata.org/v1.2.x/quick-start#quickstart) には Docker、Kubernetes の手順があります。

実際に自分が使っているデータアセットをOpenMetadataに接続すると、運用イメージが具体手に想像できると思います。OpenMetadataは様々なサービスに対応しています。例えば、DBだけでもこれだけの数に対応しています。普段お使いのデータアセットもきっと手軽に接続できると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60568/b01093cc-867f-6140-606c-4a3e131e1c20.png)
OpenMetadata は [コミュニティ活動](https://open-metadata.org/community) も盛んです。私はSlackのチャンネルに参加してやり取りを眺めているだけですが、それだけでも沢山の発見があります。少し覗いてみるだけでも、今の空気を感じられると思います。

メタデータ管理を体験するには、OpenMetadataは最も簡単に始められるアプリケーションと言えます。まずは、実際に触れて楽しんでみてください。