Teradata VantageとGoogle Cloud Data Catalogを統合する方法

著者 [Wenjie Tehan](wenjie.tehan@teradata.com)
最終更新日 2022年2月14日

:::note warn
警告
本記事はTeradata Corporationのサイト[Getting Started](https://quickstarts.teradata.com/index.html#getting-access-to-vantage)に掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

# 概要
この記事では、[GitHub上のData Catalog Teradata Connector](https://github.com/GoogleCloudPlatform/datacatalog-connectors-rdbms/tree/master/google-datacatalog-teradata-connector)を使用してTeradata VantageとGoogle Cloud Data Catalogを接続し、Data Catalog経由でVantageテーブルのメタデータを探索する手順について説明します。

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/d59739df-5281-ac33-6f3a-6296ef55fd2c.png)

・スクレイプ Teradata Vantageに接続し、利用可能なすべてのメタデータを取得する。
・準備する。Data Catalogエンティティでメタデータを変換し、タグを作成する
・インジェストする。Data CatalogエンティティをGoogle Cloudプロジェクトに送信します。


# Google Cloud Data Catalogについて
Google Cloud Data Catalogは、完全に管理されたデータ発見およびメタデータ管理サービスである。Data Catalogは、データ資産のネイティブなメタデータをカタログ化することができます。Data Catalogはサーバーレスで、テクニカルメタデータとビジネスメタデータの両方を構造化された形式で取り込むためのセントラルカタログを提供します。


# Teradata Vantageについて
Vantageは、データウェアハウス、データレイク、アナリティクスを単一の接続されたエコシステムに統合する最新のクラウドプラットフォームです。

Vantageは、記述的分析、予測的分析、処方的分析、自律的意思決定、ML機能、可視化ツールを統合したプラットフォームで、データの所在を問わず、リアルタイムのビジネスインテリジェンスを大規模に発掘することが可能です。

Vantageは、小規模から始めて、コンピュートやストレージを弾力的に拡張し、使用した分だけ支払い、低コストのオブジェクトストアを活用し、分析ワークロードを統合することを可能にします。

Vantageは、R、Python、Teradata Studio、およびその他のSQLベースのツールをサポートしています。Vantageは、パブリッククラウド、オンプレミス、最適化されたインフラ、コモディティインフラ、as-a-serviceのいずれでも導入可能です。

Teradata Vantageの詳細については、[ドキュメント](https://docs.teradata.com/home)を参照してください。


# 前提条件
・Teradata Vantageインスタンスにアクセスできること。

::: note info
メモ！
Vantageの新しいインスタンスが必要な場合は、[Google Cloud](https://qiita.com/ykswi/items/10a382de5fa5a4a42c50)、[Azure](https://qiita.com/ykswi/items/2c30aa1f5413b16c838c)、[AWS](https://qiita.com/ykswi/items/fba559149ad568678d58)のクラウドにVantage Expressという無料版をインストールすることができます。また、[VMware](https://qiita.com/ykswi/items/ebe1d854c38db9bb0f51)、[VirtualBox](https://qiita.com/ykswi/items/ffadaa375add309f2075)、または[UTM](https://qiita.com/ykswi/items/94995954ae723185c2f7)を使用して、ローカルマシン上でVantage Expressを実行することもできます。
:::


・Data Catalog Admin ロールを持つ [Google サービスアカウント](https://support.google.com/accounts/answer/27441?hl=en)
・アカウント用に[作成されたCloud Consoleプロジェクト](https://cloud.google.com/resource-manager/docs/creating-managing-projects)（例：Partner-integration-lab）
・課金が有効
・Google Cloud SDKの[インストール](https://cloud.google.com/sdk/docs/install)と[初期化](https://cloud.google.com/sdk/docs/initializing)
・[Python](https://www.python.org/downloads/)がインストールされている
・[Pip](https://pip.pypa.io/en/stable/installation/)のインストール

# 手順
①	データカタログAPIを使用可能にする
②	Teradata Data Catalog Connectorをインストールする
③	実行
④	Teradata VantageのメタデータをData Catalogで調査する


# データカタログAPIを有効にする
・[Google](http://console.cloud.google.com/) consoleにログインし、ナビゲーションメニューから**API & Services**を選択し、Libraryをクリックします。上部のメニューバーでプロジェクトが選択されていることを確認します。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/4ce1f453-3a02-4967-40bb-befb8d7ffce1.png)

・検索ボックスにData Catalogと入力し、**Google Cloud Data Catalog API**をクリックし、**ENABLE**をクリックします。

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/fe7767f5-2c7e-c16b-b46d-be2355af8d54.png)

# Teradata Data Catalogコネクタのインストール
Teradata Data Catalogのコネクタは[GitHub](https://github.com/GoogleCloudPlatform/datacatalog-connectors-rdbms/tree/master/google-datacatalog-teradata-connector)で公開されています。このコネクターはPythonで記述されています。

・以下のコマンドを実行し、gcloudを認証して、Googleのユーザー認証でCloud Platformにアクセスできるようにします。

```:GoogleCloud_Login
gcloud auth login
```

・Googleのログインページが開くので、Googleアカウントを選択し、次のページでAllowをクリックします。
・次に、デフォルトプロジェクトの設定がまだの場合は設定します。

```:GoogleCloud_ConfigSet
gcloud config set project <project id>
```

# virtualenvのインストール
Teradata Data Catalog Connectorは、分離されたPython環境にインストールすることをお勧めします。そのために、まず[virtualenv](https://virtualenv.pypa.io/en/latest/)をインストールします。

Windows
```:Install_Virtualenv_Win
pip install virtualenv
virtualenv --python python3.6 <your-env>
<your-env>\Scripts\activate
```

MacOS
```:Install_Virtualenv_Mac
pip install virtualenv
virtualenv --python python3.6 <your-env>
source <your-env>/bin/activate
```

Linux
```:Install_Virtualenv_Linux
pip install virtualenv
virtualenv --python python3.6 <your-env>
source <your-env>/bin/activate
```


# Data Catalog Teradata Connectorのインストール

Windows
```:Install_TeradataConnector_Win
pip.exe install google-datacatalog-teradata-connector
```

MacOS
```:Install_TeradataConnector_Max
pip install google-datacatalog-teradata-connector
```


Linux
```:Install_TeradataConnector_Linux
pip install google-datacatalog-teradata-connector
```

# 環境変数の設定
```:Set_Environment
export GOOGLE_APPLICATION_CREDENTIALS=<google_credentials_file>
export TERADATA2DC_DATACATALOG_PROJECT_ID=<google_cloud_project_id>
export TERADATA2DC_DATACATALOG_LOCATION_ID=<google_cloud_location_id>
export TERADATA2DC_TERADATA_SERVER=<teradata_server>
export TERADATA2DC_TERADATA_USERNAME=<teradata_username>
export TERADATA2DC_TERADATA_PASSWORD=<teradata_password>
```

**google_credential_file** には、サービスアカウントのキー（jsonファイル）を指定します。


# 実行

**google-datacatalog-teradata-connector** コマンドを実行して、Vantage データベースへのエ ントリポイントを確立します。

```:Run_Set_EntryPoint
google-datacatalog-teradata-connector \
  --datacatalog-project-id=$TERADATA2DC_DATACATALOG_PROJECT_ID \
  --datacatalog-location-id=$TERADATA2DC_DATACATALOG_LOCATION_ID \
  --teradata-host=$TERADATA2DC_TERADATA_SERVER \
  --teradata-user=$TERADATA2DC_TERADATA_USERNAME \
  --teradata-pass=$TERADATA2DC_TERADATA_PASSWORD
```

google-datacatalog-teradata-connectorコマンドの出力例です。

```:Result_Set_EntryPoint
INFO:root:
==============Starting CLI===============
INFO:root:This SQL connector does not implement the user defined datacatalog-entry-resource-url-prefix
INFO:root:This SQL connector uses the default entry resoure URL

============Start teradata-to-datacatalog===========

==============Scrape metadata===============
INFO:root:Scrapping metadata from connection_args

1 table containers ready to be ingested...

==============Prepare metadata===============

--> database: Gcpuser
37 tables ready to be ingested...

==============Ingest metadata===============

DEBUG:google.auth._default:Checking /Users/Teradata/Apps/Cloud/GCP/teradata2dc-credentials.json for explicit credentials as part of auth process...
INFO:root:Starting to clean up the catalog...
DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443
DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
INFO:root:0 entries that match the search query exist in Data Catalog!
INFO:root:Looking for entries to be deleted...
INFO:root:0 entries will be deleted.

Starting to ingest custom metadata...

DEBUG:google.auth._default:Checking /Users/Teradata/Apps/Cloud/GCP/teradata2dc-credentials.json for explicit credentials as part of auth process...
INFO:root:Starting the ingestion flow...
DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443
DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
INFO:root:Tag Template created: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_database_metadata
INFO:root:Tag Template created: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_table_metadata
INFO:root:Tag Template created: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_column_metadata
INFO:root:Entry Group created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata
INFO:root:1/38
INFO:root:Entry does not exist: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser
INFO:root:Entry created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser
INFO:root: ^ [database] 34.105.107.155/gcpuser
INFO:root:Starting the upsert tags step
INFO:root:Processing Tag from Template: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_database_metadata ...
INFO:root:Tag created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser/tags/CWHNiGQeQmPT
INFO:root:2/38
INFO:root:Entry does not exist: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_Categories
INFO:root:Entry created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_Categories
INFO:root: ^ [table] 34.105.107.155/gcpuser/Categories
INFO:root:Starting the upsert tags step
INFO:root:Processing Tag from Template: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_table_metadata ...
INFO:root:Tag created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_Categories/tags/Ceij5G9t915o
INFO:root:38/38
INFO:root:Entry does not exist: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_tablesv_instantiated_latest
INFO:root:Entry created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_tablesv_instantiated_latest
INFO:root: ^ [table] 34.105.107.155/gcpuser/tablesv_instantiated_latest
INFO:root:Starting the upsert tags step
INFO:root:Processing Tag from Template: projects/partner-integration-lab/locations/us-west1/tagTemplates/teradata_table_metadata ...
INFO:root:Tag created: projects/partner-integration-lab/locations/us-west1/entryGroups/teradata/entries/gcpuser_tablesv_instantiated_latest/tags/Ceij5G9t915o
INFO:root:
============End teradata-to-datacatalog============
```


# Data Catalog を使用して Teradata Vantage メタデータを調査する。
・[Data Catalog](https://console.cloud.google.com/datacatalog)コンソールに移動し、**Projects**の下にあるプロジェクト（例：Partner-integration-lab）をクリックします。右側のパネルにTeradataのテーブルが表示されます。

![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/6f9e0e29-99b0-fc40-6771-c954b6da9e82.png)

・興味のあるテーブル（例：CITY_LEVEL_TRANS）をクリックすると、このテーブルに関するメタデータが表示されます。

![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/3e0f0e21-10c5-c281-561e-7c7ad3874a17.png)

# クリーンアップ（オプション）
・データカタログからメタデータをクリーンアップします。これを行うには、[https://github.com/GoogleCloudPlatform/datacatalog-connectors-rdbms/blob/master/google-datacatalog-teradata-connector/tools/cleanup_datacatalog.py](https://github.com/GoogleCloudPlatform/datacatalog-connectors-rdbms/blob/master/google-datacatalog-teradata-connector/tools/cleanup_datacatalog.py) をローカルディレクトリにコピーします。
・このファイルがあるディレクトリに移動し、以下のコマンドを実行します。

```:GoogleCloud_CleanUp
python cleanup_datacatalog.py --datacatalog-project-ids=$TERADATA2DC_DATACATALOG_PROJECT_ID
```

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)