Azure Data CatalogにAWSDataCatalogのデータをRegistration Toolを使って登録する

# やりたいこと
AWSのGlueやAthenaの使っているAWSDataCatalogのデータも[Azure Data Catalog](https://azure.microsoft.com/ja-jp/services/data-catalog/)に登録したい。





# 作業環境

- Windows Server または Windows 10
- Azure Data Catalog Registration Toolがインストール済み


Registration ToolにODBCがあるので、これを使ってAthenaからODBC経由でカタログデータを取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/f5359f1e-db9a-badc-4513-2bb3dc08abf3.png)













# 手順
## AthenaのODBCドライバインストール
以下のAWSの公式サイトからAthenaのODBCドライバをダウンロードします。
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/connect-with-odbc.html

インストーラーがダウンロードされますので、実行します。

画像のようなインストールが起動します。選択肢はインストール場所程度のなので、手順は省略します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/25f69111-1c9d-043f-1a37-04a37af9c1b7.png)

## Registration Tool利用したデータカタログ同期

### ODBCデータベースをデータソースとして選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/daf23da9-44e7-6a79-2434-c26c9548d9ab.png)
 

### ODBC Driverのパラメータ入力

パラメータ入力画面が表示されるので以下のように入力して「接続」します。

この表の情報が、この手順で一番大事です。

|項目|入力値|
|:--|:--|
|ドライバー|Simba Athena ODBC Driver|
|接続文字列(※)|AwsRegion=ap-northeast-1;S3OutputLocation=s3://your-bucket|
|データベース|AwsDataCatalog|
|ユーザ|[AWS Access Key]|
|パスワード|[AWS Secret Access Key]|

 ※ 接続文字列は最低限 `AwsRegion` と `S3OutputLocation` が必要です。他の項目はODBC Driverのダウンロードページにあるドキュメントの `Using a Connection String` の項目に記載があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/519a34b8-a2e9-adf6-a775-df296e758749.png)

### 対象のテーブルを選択
接続が成功すると `AwsDataCatalog` というカタログ名がツリーのトップとして表示されます。

下にDBがぶら下がっているので、 `machine_a` というテスト用のDBの `sensor_b_tab` というテーブルの情報をAzure DataCatalogに転送してみようと思います。

<b>設定項目に `「プレビューを含める」` と、 `「データプロファイルを含める」` があります。大きなテーブルではこの項目の有効化は注意して行ってください。例えばNull値の数を数えるクエリが列数分流れたりと場合によっては課金対象が大きくなるかもしれません。今回の例では小さなテーブルなのでチェック付けてます</b>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/efbddd3a-2fe4-962e-c5f3-ef9e52e5cd3d.png)

対象のテーブルを選んだら「登録」ボタンをクリックします。


### テーブルのカタログ情報の登録処理

カタログ情報の取得と登録の処理が流れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/7f7845e6-0347-32d1-9461-96074f0253ca.png)

上に太字で書いた通り、取得内容に、 `「プレビューを含める」` や `「データプロファイルを含める」`を選択している際にはここで時間がかかる場合があります。この際にAthena側を見ると先程の注意書きに書いた通り、Null値の数を列毎に数えるクエリやデータを取得するクエリが流れているが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/12f80375-f54a-4396-200e-f951d88c3035.png)


## カタログ情報の確認


### AWSでの見え方
AWSのGlueでは以下のように見えるテーブルです。小さいものを選びました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/5d72056f-e68b-45a6-2a5b-e5846e8d92ac.png)

### Azure DataCatalogでの見え方
最上位は `AwsDataCatalog` となっていて、Glueでいう `Database` は `Schema` という名前で表現されています。階層数は同じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/28244c55-7b31-75ed-092c-1266847a08d5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/3dd3bec2-33de-edb0-6fe8-30cc9ab7e9a0.png)

今回はプレビューも含めるとしたので、プレビューデータも見えてます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/5e3e245d-b83b-b056-1706-4a1eb7f7615c.png)


裏でAthenaで複数クエリで取得されていたプロファイル情報です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/301e5dd5-3b9b-5820-7219-27a9b49cce13.png)




# (Tips)トラブルシュート

## Registration Toolのログファイルの場所
実は、最初繋がらなかった時にエラー特定するためにログの場所を探すのに一番時間かかりました。

```sh
%appdata%\AzureDataCatalogErrorEventLogProd.log
```

## ODBC Driverのログレベル設定
Driverログレベルを変更することも可能です。

自分で環境でINIファイルで設定する方法と、以下のようにODBCデータソースをセットアップして、接続文字列で指定する方法があります。WARNING以上を見ると権限の問題などエラーがある場合に原因を追及することが可能です。

```
DSN=MyAthena;AwsRegion=ap-northeast-1;S3OutputLocation=s3://your-bucket
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116068/06844193-42e4-2fa1-f1fe-50f4758c5c49.png)



## インストール後必要なLibraryが無い場合がある
以下のファイルなどが使われているのですが、正常にDriverがインストールされているように見えてライブラリが無い場合がありました。

```cmd
C:\Program Files\Simba Athena ODBC Driver\lib\AthenaODBC_sb64.dll
````

再度インストーラーをダウンロードしてもライブラリが無い場合は以下のようなダウンロードリンクを取って別のバージョンをインストールすると上手くいく場合があります。

```
https://s3.amazonaws.com/athena-downloads/drivers/ODBC/SimbaAthenaODBC_1.1.5/Windows/Simba+Athena+1.1+64-bit.msi
```

# 関連URL

- [Azure DataCatalogの使い方書いた記事](https://yomon.hatenablog.com/entry/2020/08/azure_data_catalog)
- [BigQueryの情報をAzure DataCatalogに取得した記事」(https://qiita.com/yomon8/items/935316c863e8b3f686e1)