【OpenMetadata】Snowflakeの実データをサンプルとしてデータカタログに登録する

## ごあいさつ

こんにちは。日鉄ソリューションズ株式会社のhayashitaniです。
私が所属している組織では製造業のお客様向けに、データ基盤構築、データガバナンスコンサルなどを支援させていただいております。

今回は、OSSのデータカタログツール「OpenMetadata」を使って、データカタログにSnowflakeの実データの一部を、サンプルデータとして登録してみたいと思います。

　　　　　　　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/1d75a0da-7dbe-224a-b783-b131b75a31eb.png)



本記事はテクニカルメタデータの取得に続き、OpenMetadataの実機操作2回目の投稿となります。
これまでの投稿については以下のリンクをご参照ください。
| no | 概要 | 
| ------- | ------- | 
| # | データカタログ概要 |
| 1 | [Snowflakeのテクニカルメタデータをデータカタログに取得する](https://qiita.com/hayashi----00/items/29423c5969f6f5b4e94c) |
| 2 | Snowflakeの実データをサンプルとしてデータカタログに登録する ★本記事|
| # | ビジネスメタデータをデータカタログに登録する |
| # | データカタログの検索機能を触ってみる |
| # | リネージをデータカタログに登録する |
| # | Snowflakeの利用情報をデータカタログに登録する |
| # | 用語をデータカタログに登録する |
| # | プロファイリング情報をデータカタログに登録する |
| # | データカタログで品質テストを行う |
| # | データカタログで品質テストを行う |

:::note warn
本投稿の内容は私個人の意見であり、組織の見解を代表するものではありません。
:::


メタデータの概要については以下に投稿を行っています。
* [【入門】メタデータとは？テーブル定義書の内容を３つのメタデータに分類してみる](https://qiita.com/hayashi----00/items/82015d767b88f75151d9)



## 前提

* OpenMetadataがインストール済み（本記事では、１．６．１バージョンを利用）
* Snowflakeアカウントを利用可能
* **Snowflakeの対象テーブルに1レコード以上データが登録されている**
* ブラウザを利用可能（本記事では、Chromeを利用）
* **OpenMetadata上にSnowflakeの対象テーブルのテクニカルメタデータを取得済み**
:::note alert
テクニカルメタデータの取得によって、データカタログ上にオブジェクトが作成され、そのオブジェクトに対してサンプルとして実データの一部を登録します。
そのため、サンプルデータの登録には、テクニカルメタデータが既にデータカタログ上に存在することが大前提となります。
こちらはOpenMetadataに限らず、ほとんどのデータカタログで同様の仕様です。
:::



## 準備
ブラウザからOpenMetadataに管理者ユーザーでログイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/4e133a20-d878-ab61-8dd6-5b05ae8e5086.png)

対象のテーブルにサンプルデータが登録されていないことを確認するため、対象のテーブルのページを開き、「サンプルデータ」タブを表示します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/15f78da5-98d8-2853-2230-0bf598f2505d.png)
サンプルデータは未登録なので、「利用できるデータがありません」と表示されました


## サンプルデータ取得ジョブ作成
 「設定」＞「サービス」＞「データベース」＞ **対象のデータベースサービス** をクリックして、サービスオブジェクトのページを開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/570e76f3-882e-0dc0-d2c6-1d15e838d482.png)

接続情報を登録してから日が経っているので、一応接続テストを実施します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/ffe051e5-de52-09e5-038a-d39dbd838347.png)
Snowflakeユーザーのパスワード期限切れでNGとなってしまったので、
Snowflakeでパスワードを更新し、テストがOKとなることを確認しました！

インジェスチョンタブを開き、「インジェスチョンを追加」＞「自動分類インジェスチョン」をクリックします

:::note info
インジェスチョンは、情報を取得するためのジョブの名称です。
OpenMetadataでは、用途毎にインジェスチョンの種類が分かれています。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/d5f7bccb-0d4e-f8b5-7e40-d29b7bd4342d.png)

余談ですが、直近のバージョンまで、サンプルデータの取得はプロファイリング用のインジェスチョンに含まれている機能でした。
さらに、サンプルデータだけを取得することはできずプロファイリングと必ずセットになっていたと記憶しているのですが、分かれて**サンプルデータだけ**を取得できるようになり、便利になった印象を受けました。


取込設定、スケジュール設定を行い、デプロイします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/7656b705-1960-7d24-b104-563a7211f616.png)
（省略）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/3b8a6f00-5d0b-82b9-6258-5cc353c25e8b.png)

以下重要な設定項目です
* 「Store Sample Data」は必ずオンにします
* Viewのサンプルデータも取得する場合は「Include View」をオンにします
* 取得するレコード数を指定したい場合は「Sample Data Rows Count」の値を変更します


:::note info
OpenMetadataのインジェスチョンは**テーブル単位**で**複数**作成することができます。
そのため、重くなりがちなサンプルデータの取得を、各テーブルに必要な頻度で設定することができます。
:::

今回は１度ジョブを実行できれば良いので、スケジュール設定は手動実行で指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/57026213-33fd-7ff9-15c8-f33d7b685973.png)



## 取込ジョブ実行

サービス画面のインジェスチョンタブを開き、対象のジョブを実行します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/dc63d731-c979-8313-082e-a021926e66ff.png)

ステータスが「SUCCESS」になったら完了です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/0cb9d431-48a5-1a3d-6a4c-effeb214d7e4.png)


## 結果
### テーブルのページ
対象のテーブルのページを開き、「サンプルデータ」タブを表示します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/d58b458c-0c09-dc44-6e09-5d27330a1328.png)
（省略）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/5500a239-7ee1-4306-a985-2e21a78b8dfa.png)

**テーブルの実データが、50レコード分取得されました！**


オブジェクトのページはヘッダーが共通で、タブ毎に表示される情報が変わるようになっています。
テーブルのページでは「スキーマ」タブを選べばテーブル定義、「サンプルデータ」タブを選べばサンプルデータが表示されるので、タブを切り替えるだけで、以下の図のように簡単にテーブル定義とサンプルータを交互に参照することができるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3959879/0ce4329f-8726-aa27-adc2-0ec762ba37e5.png)
そのため、**テーブル定義書（Excelファイル）を見て、ピンとこなければSnowflakeにログインして実データを参照する、という一連の流れが全てデータカタログ上で実施できるようになりました。**

## 最後に

テクニカルメタデータを取得済みであったので、簡単にサンプルデータを取得することができました。

途中でも記載しましたが、OpenMetadataでは、テーブル単位で複数のサンプルデータ取得ジョブを作成することができます。データカタログツールによっては、メタデータ取得とセットで行う必要があったり、データベース単位でしか取得の制御ができなかったりします。対象のテーブル数やカラム数にもよりますが、処理が重くなり、メタデータ取得自体に時間がかかったり、最悪の場合、処理が完了しなかったりすることがあります。そのため、**柔軟にジョブの単位を指定できる点は、OpenMetadataの強みだと思いました。**

**また、そもそもテーブル定義書をExcelファイルで手動管理している場合や、Excelファイルをデータカタログとして手動管理している場合、サンプルデータをテーブル定義と合わせて参照することは、管理負荷の観点から現実的ではありません。
しかし、データカタログツールを使用することで、ユーザーはテーブル定義と実データを一緒に参照することができるようになります。実データを確認することで、どのようなデータが含まれているのかを直感的に理解しやすくなるため、サンプルデータをユーザーに提供できる点は、データカタログツールを利用する大きなメリットだと思いました。**



本記事についてご不明点、ご質問事項等があれば、コメントをお願いいたします。
また、本分野に関してご興味を持っていただけた方がいらっしゃれば、お気軽にお問い合わせください。