
OpenMetadata SaaSのSnowflake Connectorを試してみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
さがらです。
OpenMetadata SaaSで、Snowflakeのメタデータを抽出するためのSnowflake Connectorを試してみたので、本記事でまとめてみます。
前提
基本的には、このドキュメントの手順に沿って行っていきます。
また、「OpenMetadata SaaS」とは言っていますが、中身はOSSのOpenMetadataと全く一緒です。クラスタの構築や運用周りをすべて担ってくれるのがSaaS版となっております。
OpenMetadata SaaSのフリートライアル開始手順については、こちらのブログをご覧ください。
各製品のバージョン
- OpenMetadata SaaS
- Tokyoリージョン
- OpenMetadata
- 0.13.2
- Snowflake
- 7.3.2
- AWS、Tokyoリージョン、Enterpriseエディション
Snowflake上での事前準備
OpenMetadataから正確にメタデータを抽出するために、OpenMetadataの認証に使うユーザーに対して適切な権限を与える必要があります。
OpenMetadataのバージョン0.13.2時点では、以下の情報が必要となります。
- メタデータ抽出に使用するウェアハウスに対する
USAGE - メタデータを抽出したいデータベースに対する
USAGE - メタデータを抽出したいスキーマに対する
USAGE - メタデータを抽出したいテーブルに対する
SELECT snowflake.account_usage.query_historyとsnowflake.account_usage.tag_referencesをクエリするための、SNOWFLAKEデータベースに対するIMPORTED PRIVILEGES- 2023年2月3日時点、Database Roleがパブリックプレビューとなっているため、こちらを用いるのもよいかもしれません。
また、これらの権限を付与するためのサンプルクエリは公式Docに載っていますので、ぜひ参考にしてみてください。
OpenMetadata上でのConnectorの設定
では、OpenMetadata上からSnowflake Connectorの設定をしていきます!
まず、Settings➟Databases➟Add New Database Serviceを順番に押します。
接続先の一覧からSnowflakeを選択し、Nextを押します。
Service NameとDescriptionを記入し、Nextを押します。
続いて、Snowflakeに接続するための各種情報を入力する画面が出てきます。ユーザー名とパスワードで登録する場合には、以下の情報が関わってきます。
Username:Snowflakeの認証に用いるユーザー名を記入Password:対象ユーザーのパスワードを記入Account:xyz1234.us-east-1.gcpの形式で、アカウント名を記入Role:OpenMetadataがメタデータの取得を行う際に、使用するロールを記入Database:もし特定の1つのデータベースだけ同期させたい場合には、ここにデータベース名を記入。記入しないと、対象のロールが読み取れるすべてのデータベースが同期対象となるWarehouse:OpenMetadataがメタデータの取得を行う際に、使用するウェアハウスを記入Query Tag:OpenMetadataからメタデータの取得を行う際に発行されるQuery Tagを指定したい場合は記入(セッション中にQuery Tagの値を切り替えられる権限を持つロールでないといけません)
これらの情報を入力したら、末尾にあるTest Connectionを押しましょう。接続が問題なければConnection test was successfulと出てきます。
接続に問題なければ、Saveを押します。
これでコネクタは完成ですが、続けてIngestion、つまりはメタデータの抽出に関する設定を行う必要があります。Add ingestionを押します。
すると、Ingestionに関する情報の入力画面が出てきます。オプションとしては、このようなものがあります。
Name:この抽出処理の名称を入力、このOpenMetadataのアカウント内でユニークである必要がありますDatabase/Schema/Table Filter Pattern:正規表現で抽出対象のオブジェクトを絞り込めるInclude Views:Viewも抽出対象に含めるかを切り替えるInclude Tags:Snowflake上で定義されたタグも抽出対象に含めるかを切り替えるMark Deleted Tables:抽出対象のテーブルが削除されていたら、OpenMetadata上でも削除するかどうかを切り替える
これらの設定を終えたら、右下のNextを押します。
続いて、抽出のスケジュールを選択します。設定を終えたら、Add & Deployを押します。
下図のように表示されたら、抽出の設定は完了です!
ちなみに、対象のIngestionsを手動実行することも出来ます。対象のIngestionのActions列にてRunを押せばOKです!
一度Ingestionをしてみたところ、XSのシングルクラスタウェアハウスを用いて、863個のテーブル・ビューの取得に11分ほどかかりました!これはProfilerなど別機能を実行すると更に時間がかかることが想定されます。
Snowflake特有のメタデータをOpenMetadata上で確認してみる
少しだけ、どのようにSnowflake特有のメタデータがOpenMetadataから見ることができるか、確認してみます。他のDWHでも共通となる各テーブルレベルでどういったメタデータを見ることが出来るかは、こちらのブログや、OpenMetadataのSandboxも参考にしてみてください。
Snowflakeのタグ
Snowflakeにはタグの機能があるのですが、OpenMetadataではSnowflake上で定義されたタグを同期することが出来ます。
実際には、下記のように連携されることが確認できました。Classificationは複数の類似したTagをひとまとめに出来る概念です。
- Snowflakeのタグの
TAG NAMEは、OpenMetadata上のClassificationとして連携される - Snowflakeのタグの
TAG VALUEは、OpenMetadata上のTagとして連携される
INFORMATION_SCHEMAの扱い
まず気づいた点として、19個のデータベースが同期されたのですが、すべてのデータベースのINFORMATION_SCHEMAも対象であったため、データカタログ上不要なテーブル・ビューがたくさん同期されていました。
Ingestionの設定で対象のスキーマを絞り込むことができるので、INFORMATION_SCHEMAは除外するのが良さそうですね!
最後に
OpenMetadata SaaSで、Snowflakeのメタデータを抽出するためのSnowflake Connectorを試してみました。
INFORMATION_SCHEMAなど抽出対象は注意しないといけないですが、SnowflakeのタグについてTAG NAMEとTAG VALUEどちらも取得でき、かつ元の階層関係のまま連携できるのは良いなと感じました!






















