Azure Data CatalogをMySQLと連携して機能や使い方を追ってみた

Azure Data Catalogについて書きます。

azure.microsoft.com

データカタログって

データカタログはデータマネジメントを行うために重要なサービスとなります。

ここで端的に説明する自信も、理解も無いと思うので、書籍と参考URL書いておきます。

データカタログとは何ぞやという人は、DMBOKを頑張って読むと良いと言いたいのですが、いきなりだと大変な気もします。とても高価な上に、少なくとも私は最初から順に読むと頭に入らないので、必要なところを深掘りしたい時に辞書的に使っています。

www.drinet.co.jp

この本が安価(Kindle Unlimitedでもある)かつ役立つと思います。

こちらは現場視点で書かれていてエンジニアとしてはイメージわきやすいと思います。

データマネジメントが30分でわかる本

データマネジメントが30分でわかる本

こちらは技術的な話ではなく、戦略、進め方や組織の話などが主題になっています。網羅的なDMBOKに対して、データの利活用に重点を置いていると記載されています。

分野のソリューションベンダーのリーダーの一つであるInfomaticaのサイトがオススメです。

www.informatica.com

もちろんAzureの公式ドキュメントもあります。

docs.microsoft.com

Azure Data Catalog 対応しているデータソース

この記事ではAzure Data Catalogの機能を見ていきますが、まずはAzure Data Catalogにメタデータを登録するところから見ていきます。

手持ちデータのメタ情報を簡単に、効率的にカタログに登録ができるかは、データカタログを選ぶ際の重要なポイントの一つになります。

Azure Data Catalogではメタデータをカタログに登録するツールを提供しています。対応するソフトウェアもAzureやSQL Server等のMS製品は当然として、他社製品も広く対応しています。

f:id:yomon8:20200819151707p:plain

  • SQL Serverの各機能
  • Azureのデータベース、ストレージ系サービス
  • MySQL
  • SAP HANA / BW / Sybase
  • Oracle Database
  • Teradata
  • DB2
  • HDFS
  • Hive
  • MySQL
  • PostgreSQL
  • MongoDB
  • Casandra
  • Salesforce
  • FTP
  • ODBC

最新の対応状況はこちらのサイトに記載があります。

docs.microsoft.com

データカタログ準備

MySQLサンプルデータの準備

AzureのサービスなのでSQL Serverなどが当然強いのですが、あえてツールが対応しているMS以外の製品であるMySQLを使ってみようと思います。

利用するデータはこちらの sakila データベースです。

dev.mysql.com

ここは本題で無いので、さらっと手順だけ書きますが、Docker使ってサンプルデータを展開しています。

# ダウンロード & 解凍
wget http://downloads.mysql.com/docs/sakila-db.zip && unzip sakila-db.zip

# データ登録SQLを準備
mkdir ./data
mv sakila-db/sakila-schema.sql data/01_sakila-schema.sql
mv sakila-db/sakila-data.sql data/02_sakila-data.sql

# MySQLのコンテナ起動(データ登録SQLを内部で実行)
docker run --rm -d --name sampledb \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=sakila \
  -v $(pwd)/data:/docker-entrypoint-initdb.d mysql

sakila データベース登録されているようです。

$ docker exec -it sampledb mysql -uroot -proot -e "show databases"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sakila             |
| sys                |
+--------------------+

インタラクティブモードでも入れます。

docker exec -it sampledb mysql -uroot -proot 
mysql>

Azure Data Catalogにメタデータ発行用の登録ツールインストール

データストアからメタデータを抽出して、Azure Data Catalogに登録することを発行と呼んでいるようです。登録ツールのインストールについて書いていきます。

MySQLコネクタインストール

登録ツールはMySQLへの接続時に以下の .NET用のMySQLコネクタを使います。

dev.mysql.com

この記事を書いた時点では mysql-connector-net-8.0.21.msi がダウンロードできたので、それをインストールしておきます。

登録ツールインストール

Azure Data Catalogの「発行」から遷移できる以下の画面から「アプリケーションを起動」をクリックします。

登録ツールである RegTool.application がダウンロードされるので実行しインストールします。

ダウンロードしたファイルを実行すると、すぐに登録ツールがインストールされ以下の画面が表示されるので、 組織のAzure ADに登録されたアカウント でサインインします。

サインインすると、データソースを選択できる画面が表示されます。PC上の登録ツールがデータソースに接続し、メタデータを抽出、カタログに登録を行ってくれます。

MySQLのメタデータをAzure Data Catalogに取り込み

データソースにはMySQLを選択します。

f:id:yomon8:20200819164134p:plain

接続情報入力します。

f:id:yomon8:20200819164206p:plain

カタログに登録するテーブルやViewを選択します。

f:id:yomon8:20200819164348p:plain

プレビュー用データや、データプロファイルを含めるか(後述)などを選択します。

データの担当者情報としてメールアドレスを入れます。このアドレスはAzure ADに登録されているものになります。

データに紐付けるタグ情報も、ここで入れることが可能です。

f:id:yomon8:20200819164525p:plain

参考になるかは不明ですが、今回のオブジェクト数で40秒ぐらいでアップロードが完了しました。

f:id:yomon8:20200819164633p:plain

Data Catalogを見てみる

これでデータカタログが登録されました。

トップ画面

ホーム画面はダッシュボードと、検索画面です。検索がデフォルトのエントリーポイントとなります。

検索ではタグ検索 tags:タグ名 みたいな検索ができたり、 name:product AND (tags:product AND objectType:table) AND lastRegisteredTime:>"06/09/2016" みたいなクエリ検索もサポートされています。

f:id:yomon8:20200819180629p:plain

検索結果画面ですが、まるでネットショッピングのようにデータを検索、フィルタリングして探すことができます。

f:id:yomon8:20200819164833p:plain

プロパティ

特定のデータを選択するとプロパティが表示されます。エキスパート(データのこと知っている人)や、登録ツールから登録したタグ、接続情報、登録更新時刻などが確認できます。

f:id:yomon8:20200819165121p:plain

プレビュー

プレビュー用のデータをアップロードしておくと、ここからプレビューできます。

f:id:yomon8:20200819165021p:plain

列情報

テーブルの列に、注釈やタグをつけることができます。誰が追加したかもわかります。

f:id:yomon8:20200819165305p:plain

データプロファイル

テーブルのサイズや行数、カラムの型だけでなく、Nullの数や、入っている値の統計などが確認できます。どれも技術的には嬉しい情報です。

f:id:yomon8:20200819165335p:plain

ドキュメント

フリーにドキュメントを記述できます。

f:id:yomon8:20200819165440p:plain

関連データ(リレーション情報)

リレーション情報が設定されていれば、それも取ってきてくれました。

f:id:yomon8:20200819170700p:plain

アプリから開く

PowerBIの場合は pbix 形式でダウンロードできるので、権限があるユーザならば、データストアからデータの取得が簡単に行えます。

EXCELはドライバ対応してなかったりするので、特にPowerBIをメインで使っているところでは便利そうです。

f:id:yomon8:20200819165554p:plain

ビジネス用語集

同じ社内でも部門間で用語のブレがあったりしますが、その解消に役立つ機能です。用語は親子関係も持たせることが可能です。

以下のようにビジネス用語を登録しておけます。

f:id:yomon8:20200819171921p:plain

登録した用語はタグとして利用できます。登録しておいた用語を提案してくれる機能もあります。

f:id:yomon8:20200819184153p:plain

テーブルやカラムに紐付いたタグから、用語集に逆引きで飛ぶことなども可能です。

f:id:yomon8:20200819171822p:plain

docs.microsoft.com

まとめ

  • 様々な3rd Partyアプリケーションからメタデータを抽出でき、それがツール化されているのはエンタープライズには向いていると思います。ただ、ツール化されているとはいえMS製品以外は一定の知識が必要です。(必要なモジュールをGitHubからダウンロード、インストールする程度ですが)
  • 検索機能がしっかりしているので、データさえ登録されていれば必要なデータは見つけやすいと思いました
  • Freeプランが存在していたり、有償のStandard Editionも1ユーザあたり112円などで使える価格帯も機能を考えるとメリットかと感じました
  • Azure ADとデフォルトで連携しているので、O365を使っていてAzure ADにユーザが存在するような企業ならメリット大きいと思います
  • データのプレビューやプロファイルはデータカタログの使い始めではわかりやすく役立つ機能なので嬉しい

専門の製品と比較すると足りない機能もありますが、価格含めて、使いどころによってはとても良さそうなサービスだと思いました。

参考URL

docs.microsoft.com

関連URL

AWSのGlueやAthenaで利用するカタログ情報をAzure DataCatalogに入れる手順

qiita.com

こちらはBigQueryに接続した手順です。

qiita.com