メタデータインポートを使ってSnowflakeの超巨大テーブル群から一括でメタデータを取り込んでみた。/2023年6月更新

# メタデータインポートを使って複数のデータソースから一括でメタデータを取り込む


## この記事の位置づけ
- この記事は、[datatech-jp Advent Calendar 2022] (https://qiita.com/advent-calendar/2022/datatech-jp) の12/21分として記載します。
- SaaS版のデータカタログであるWatson Knowledge Catalogにおいて、メタデータインポート機能を使って、スキーマごとに一括でテーブルを取り込んでみます。
----
## 前提事項
- メタデータインポートを実施するプロジェクトと呼ばれる箱を準備する
    - ここでは「metadata-pj-in-ibm」というプロジェクトを準備します。
- メタデータを取り込む元となるデータソースへの接続情報画、上記プロジェクトに格納されていること。
    - ここではSnowflakeへの接続情報を格納します。
----


## メタデータインポートを作成
- 作業場所となるプロジェクトの画面右上の青い「新規資産」ボタンをクリックします。
![スクリーンショット 2022-12-21 18.51.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/daa8a43c-182d-6f9e-33dd-f9a5b47a9dfa.png)

----
- 画面左上の「メタデータのインポート」パネルをクリックします。
![スクリーンショット 2022-12-21 18.52.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/6e43b97b-77dc-c5fc-d41c-d593b494b4d8.png)

----
- メタデータの名前、説明、タグ、を入力し、画面右下の青い「次へ」ボタンをクリックします。
![スクリーンショット 2022-12-21 18.54.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/1532c68f-f80f-2094-e61e-fb562734ab38.png)

----
- メタデータを取り込む先のプロジェクトあるいはカタログを選択します。ここではこのプロジェクト内にそのまま取り込むこととします。
![スクリーンショット 2022-12-21 18.55.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/018d6ebc-0285-d3cf-d23b-b598c2e6c674.png)

----
- メタデータを取り込む元となるデータソースを選択します。画面真ん中の「接続の選択」ボタンをクリックします。
![スクリーンショット 2022-12-21 18.56.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/5a04def5-4481-659d-57bc-541b1f31517c.png)

----
- メタデータを取り込む対象を選択します。ここでは対象となるSnowflake配下のすべてのスキーマをどかんと一括で取り込んじゃいましょう。
- たしか６０億行くらいあるテーブルもあったはずですが、メタデータを取り込むだけなので、元テーブルの巨大さはあまり関係ないはずです。
- 対象となるチェックボックスを選択し、画面右下の青い「選択」ボタンをクリックします。
![スクリーンショット 2022-12-21 18.58.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/38f6f186-0f57-2e91-296e-3e3c0be2c25b.png)

----
- 選択された対象を確認し、「次へ」をクリックします。
![スクリーンショット 2022-12-21 19.04.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/0dddc258-ecd4-a512-5567-c120a079feb9.png)

----
- スケジュール設定画面になります。ここでは何も設定せず（スケジュール：オフ　の状態）、そのまま画面右下の青い「次へ」ボタンをクリックします。
![スクリーンショット 2022-12-21 19.07.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/a4a3f156-a484-caa1-474c-cc7d299306c2.png)


----
- しかし、仮にスケジューリングする場合は以下のように実施します。
    - こちらの場合では、以下のような設定例となります。
        - バッチジョブの開始日時：2022/12/22の20時
        - 繰り返し：有り
        - 繰り返す頻度：毎日20時
        - 除外する曜日：土曜日、日曜日
        - 終了日：2023年12月31日　20時
![スクリーンショット 2022-12-21 19.10.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/9b17b51e-8b38-f986-4be4-24f234f8ff03.png)


----
- 繰り返しメタデータをインポートする場合、どの項目を更新するかを選択します。
![スクリーンショット 2023-06-24 23.34.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/19a3fa40-612d-7a63-73a8-f135380727db.png)



----
- 設定項目のまとめ画面で、内容を確認します。問題なければ画面右下の青い「作成」ボタンを作成します。
![スクリーンショット 2023-06-24 23.35.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/196570ba-4f5f-9a52-0434-d34ac9dc96a9.png)
![スクリーンショット 2023-06-24 23.35.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/638efec6-fcc6-ef40-a534-659a1e386c2c.png)


----
- しばらくするとメタデータインポートの管理画面が表示されます。
![スクリーンショット 2022-12-21 19.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/b159ba88-a591-6ff5-9824-b8a43667ebd2.png)


----
- 「更新」ボタンを押すと取り込まれたメタデータの一覧が表示されてきます。
![スクリーンショット 2022-12-21 19.19.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/04e4b68e-017f-20e3-bc02-07fd90ea4f98.png)

----
- 取り込み先のプロジェクトを見ると、すでに多数のデータ資産が取り込まれていることがわかります。
![スクリーンショット 2022-12-21 19.24.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/dfaf2974-57ac-3fcf-e66e-074af64da740.png)


----
- どういうわけか失敗したという表示が出ました。。。
![スクリーンショット 2022-12-21 19.26.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/766ac5b3-5c53-6bf7-2e67-931a812c8087.png)

----
- 画面右上の通知を見るとエラーメッセージが確認できます。
![スクリーンショット 2022-12-21 19.27.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/be429011-6ac7-d72b-c3a8-36a449ba5a20.png)


----
- また、プロジェクトの「ジョブ」タブから、先程実行したジョブのログも確認できます。
![スクリーンショット 2022-12-21 19.30.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/e9469daf-3e5f-1675-2875-6f8b3cac78ee.png)


----
- 失敗：１　と出ています。詳細を確認するには、実行の日時の箇所をクリックします。
![スクリーンショット 2022-12-21 19.30.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/40916b51-01cc-b112-c9f7-04a2387ac9f4.png)

----
- ジョブのエラーログが確認できます。
![スクリーンショット 2022-12-21 19.32.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/b3eccd30-8280-c58d-3199-688a16ff2855.png)


----
- ８６テーブルあるうちの、３テーブルが失敗したようです。
![スクリーンショット 2022-12-21 19.35.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/b6051b7f-dd4d-e701-273d-8dfd7c2d24ba.png)

----
- ログの詳細も観てみます。
![スクリーンショット 2022-12-21 19.37.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/a6df9a3c-1e7e-c3a2-bbf4-8d4904152253.png)


----
- これ以上の詳細については、サポートとの確認が必要ですかねえ。Read Timed Out と出ていましたが、タイムアウトかなあ。
- あとで再実施したらすべて正常終了しました。


## 結果確認


### WKC側の確認

----
- プロジェクトに取り込まれたデータ資産を観てみます。タグとしては、所属するスキーマ名がタグになるようです。
![スクリーンショット 2022-12-21 19.46.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/00cbe9db-11cc-6f84-8226-d0ca8101d122.png)



### Snowflake側の確認

----
- 以下はおまけですが、Snowflake側での確認もしてみます。
![スクリーンショット 2022-12-21 19.41.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/f9d0388f-c347-0ee3-ddf7-75c3eed7379c.png)


----
- リクエストの一つを観てみると、以下のようになっています。
![スクリーンショット 2022-12-21 19.42.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/12a584ea-b466-30f0-60a6-93a5015dc3aa.png)



## 再インポートしてみる。
- 再度インポートしてみます。画面右上の青い「アセットの再インポート」をクリックします。
![スクリーンショット 2022-12-21 20.03.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/8610d20e-4d7e-69d8-b986-851dd2cad8fe.png)

- 「再インポート」をクリックします。
![スクリーンショット 2022-12-21 20.03.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/9b3617f7-ab1d-98da-1a74-a74a3462b9ba.png)

- 今度はうまくいきました！
![スクリーンショット 2022-12-21 20.07.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/fb70b298-315e-aecc-0f43-25d4d873511a.png)

- ジョブも成功したジョブが表示されています。
![スクリーンショット 2022-12-21 20.09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/659c704e-66a2-dfad-284f-19a7e352382b.png)

- ログとしては以下のようになっていました。
![スクリーンショット 2022-12-21 20.10.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/d09d1edf-6f52-c06f-dbc6-f978ccc40309.png)

## 効果
- 80を超えるテーブル群のメタデータを、少しのエラーはありましたが、15分もかからずにすべてを自動的に取り込むことができました。


## 最後に

この記事としては以上です。

この次としては、取り込んだメタデータに対してビジネス用語等を紐付けるメタデータエンリッチメントについての記事も書いてみたいと思います。

もしこの記事を読んで興味を持たれた方は、この記事の大本となる、[IBM Cloud Pak for Data as a Service ハンズオン資料 目次](https://qiita.com/Shumpei_Kubo/items/993e0fabfaebf56fe547) から内容を見てみてください。