Teradata Vantage用のPythonライブラリ

[Teradata® Package for Python User Guide](https://docs.teradata.com/r/Teradata-Package-for-Python-User-Guide/May-2022)[リリース番号：17.10　リリース日付：2022/8/18]の翻訳です。

<iframe width="560" height="315" src="https://www.youtube.com/embed/_FIcXZPENtc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

> Python用ライブラリ(teradataml) シリーズのコンテンツです。

:::note information
各機能の詳細な説明に関しては、段階的にリンクを追加していきますので、リンクから詳細ページを参照してご利用下さい。
:::

# Teradata Vantage用のPythonライブラリ(teradataml)
Teradata Vantage用のPythonライブラリであるteradatamlはPythonからTeradata Vantageを操作するためにテラデータ社が開発したオープンソースのプロダクトで、様々なデータ操作や、分析に関する機能が使えます。

<img width="400" alt="Pythonライブラリ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/7fd9530c-3a0a-25e2-33ee-cc866e1b431c.png">

#### 機能説明
- PyPIから無償でダウンロードして、使うことができます。
- JupyterやPycharmなどのお使いのPython環境から使えます。
- Teradata SQL Driver for Python(teradatasql)と連携して動作します
- pandasやSQLAlchemyに合わせた構文のため、python利用者がすぐ使えます。
- DataFrameをインデータベースで高速に処理できるため、データ準備作業を効率化できます。-
- インデータベース分析関数、オープンソース連携などの方法で、分析も高速化、効率化できます。
- 1000を超える SQL関数をPythonのインターフェースを使用して呼び出し可能です

#### 操作と実行場所の違いによる動作パターン
Teradata Vantage用のPythonライブラリを用いたデータベース操作や分析の方法は複数の方式があります。以下のパターンを目的に応じて使い分けいただくことが出来ます。


<img width="700" alt="pythonライブラリ2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/9d15600f-26c9-de93-7f46-154e6325405a.png">

| パターン | 説明 |
|:-|:-|
|データベースからデータ取得して、<br>クライアントで実行|teradatamlを用いて、クライアントからTeradata Vantageに接続してデータを取得して、Scikit-learnなどの標準ライブラリを用いて、クライアント側で分析を行います。|
|クライアントで実行<br> & インデータベースで動作|teradatamlを用いて、インデータベースでのDataFrameの操作でデータ準備を行い、分析関数を用いてインデータベースでの分析を実施する。|
|データベースでスクリプト/モデルの実行<br>& インデータベースで動作|スクリプトのDB実行(STO)やモデル共有(BYOM)の方法で、スクリプトやモデルをデータベースに配置して、インデータベースで実行・動作を行わせる。|


# 実行できる機能

#### [Python用ライブラリの基本的な使い方](https://qiita.com/tmsky/items/6afa933579da490f93c0)
Python用ライブラリをインストールして、基本的な機能の使い方はこちらを下さい。

### データ操作

DataframやSQLAlchemyといったpythonユーザにはおなじみの構文を用いて、Teradata Vantageの処理エンジンでデータ操作できるため、pythonユーザのデータ操作を大幅に効率化できます。
#### Dataframeによる操作 (Teradata Vantageのインデータベースでの操作)
<img width="400" alt="Dataframe.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/dede0ef1-bbb6-1d6d-dad8-f07f7b92a8aa.png">

#### SQLAlchemyによる操作(Teradata Vantageのインデータベースでの操作)
<img width="500" alt="SQLAlchemy.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/aebd1064-acb1-f46e-a9a6-409587099d36.png">

※ORM (Object Relational Mapper)=オブジェクト・リレーショナル・モデルは、データベースに対するデータの操作をオブジェクト指向型言語のやり方で扱えるようにするための手法です。

#### 主な機能
|データ操作の方法|機能説明|
|:-|:-|
|コンテキスト・マネジャー|Teradata Vantageとの接続の作成、接続情報の表示、接続の切断を行う。|
|一般機能|Teradata Vantageへのデータロードやエクスポートなどのデータ入出力、Pythonパッケージの確認などの操作を行う。|
|Dataframe<br>(データフレーム)|teradatamlのDataframeは、pandasになぞらえた構文を用いて、Teradata Vantage内で動作するため大量データを高速に処理できます。|
|TeradataSQLAlchemy|SQLAlchemyになぞらえた構文により、Teradata Vantage内で動作するため大量データを高速に処理できます。|

### インデータベース分析
インデータベース分析の関数を実行して、分析することができます。

<img width="900" alt="インデータベース分析(teradataml).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/cc3000c9-8535-5372-1309-0e621588870a.png">

| フレームワーク | 機能概要 |
|:-|:-|
|[マシンラーニング関数 <br> (SQL MapReduce<br>フレームワーク)](https://qiita.com/hchd/items/dc8c781c1386a34316f8)| データ準備、探索、特徴抽出、モデル作成、スコアリングといったマシンラーニングを実現るための100種類以上の関数が用意されれイン・データベースによる分析で高速な性能でマシンラーニングを実行することができます。 |
|[Vantage<br>アナリティクス・<br>ライブラリ](https://qiita.com/hchd/items/7bc52c8a3cbba7260d53)|  データ変換、記述統計、仮説検定、クラスタリング、回帰、予測アルゴリズムなど、高度な関数の豊富なライブラリをJAVA外部プロシージャとして実装したもので、R、Python、SQLから使用することができます。|
|[4Dアナリティクス<br>(地理空間分析)](https://qiita.com/hchd/items/8dbfe5ee8280b4ca8703)| 地理空間分析はSQL/MM Spatial に準拠し、地理空間情報を管理するためのデータ型、それらを操作するメソッド及び関数、他のアプリケーションとのインターフェスを提供することで、地理空間に関する分析ができます。|
|4Dアナリティクス<br>(タイムシリーズ)| 時系列テーブルは、センサーデータなどの時系列データに特化したテーブル構造により、柔軟な操作により時系列データの記述統計的な分析を簡単に行う事ができます。|

### オープンソース連携(Bring Your Own Analytics)
オープンソース連携(Bring Your Own Analytics)では、PythonやRといったオープンソースでの分析をVantageCloudと連携して稼働させることで、スケールした分析を実現します。
<img width="900" alt="オープンソース連携2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/a97fdb4c-a93a-c740-ce39-854e84ca7e91.png">

| フレームワーク | 機能概要 |
|:-|:-|
|モデル共有<br>BYOM<br>(Bring Your Own Model)|モデル共有(Bring Your Own Model)は、PythonやRといったオープンソースや、AutoMLといった分析ツールでモデリングを行い、それを予測モデル交換フォーマットにより、VantageCloudに取り込み、スコアリングする方法になります。 |
|スクリプトのDB実行<br>STO<br>(Script Table Operator)|スクリプトのDB実行 は Python または R コードのブロックを「データベース内」で実行します。PythonやRをデータベースで実行するため、クライアント側にデータを移動する必要がなく、並列で処理を行うことができるため、分析作業の効率化します。|

## おわりに
:::note warn
警告
この本書は[Teradata Vantageドキュメンテーション](https://docs.teradata.com/)よりトピックに必要な情報を抜粋したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

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