Teradata AppCenter Python SDKには、Teradata AppCenterと共に使用するPythonアプリの構築に役立つAPIが用意されています。
目次
- Teradata AppCenter Python SDKパッケージのダウンロード
- Teradata AppCenter Python SDKのインストール
- オプション - Teradata AppCenter Python SDK依存関係パッケージのインストール
- オプション - Teradata AppCenter Python SDK依存関係パッケージのオフラインでのインストール
- Teradata AppCenter SDKクライアントの初期化
- Teradata AppCenter Python SDKでサポートする公開API
- カスタム アプリのパッケージ化
- ライセンス
Teradata AppCenter Python SDKパッケージのダウンロード
Python SDKパッケージにアクセスするには、Teradataユーザー アカウントが必要です。
- https://access.teradata.comにアクセスしてログインします。
- DOWNLOADS(ダウンロード)で、Update Your Software(ソフトウェアを更新する)を選択します。
- Search Downloads(ダウンロードの検索)で、
teradata-appcenter-python-sdk
を検索します。 - お使いのAppCenterのバージョンに対応するPython SDKをダウンロードします。
Teradata AppCenter Python SDKのインストール
python.orgのインストーラまたはHomebrewでPythonをインストールした場合は、すでにpipが用意されています。
注: インストール中に、pipはインターネットにアクセスしてPython SDKの依存関係を取得します。pipからインターネットにアクセスしないようにするには、Teradata AppCenter Python SDKをインストールする前にPython SDK依存関係パッケージをダウンロードしてインストールします。
pipを使用して、Teradata AppCenter Python SDKをインストールします。
pip install teradata-appcenter-python-sdk-<version_num>.tar.gz
オプション - Teradata AppCenter Python SDK依存関係パッケージのインストール
pipからインターネットにアクセスしないようにするには、Teradata AppCenter Python SDKパッケージをインストールする前に依存関係パッケージをダウンロードしてインストールします。
Python SDK依存関係パッケージにアクセスするには、Teradataユーザー アカウントが必要です。
- https://access.teradata.comにアクセスしてログインします。
- Search Teradata Support(Teradataのサポートの検索)、DOWNLOADS(ダウンロード)で、Update Your Software(ソフトウェアを更新する)を選択します。
- Search Downloads(ダウンロードの検索)で、
teradata-appcenter-python-sdk-with-deps
を検索します。 - お使いのAppCenterのバージョンに対応する依存関係パッケージをダウンロードします。
オプション - Teradata AppCenter Python SDK依存関係パッケージのオフラインでのインストール
Teradata AppCenter Python SDK依存関係パッケージをダウンロードした場合は、次のコマンドを使用してインストールします。
tar -xvf teradata-appcenter-python-sdk-with-deps-<version_num>.tar.gz
pip install --no-index --find-links=teradata-appcenter-python-sdk-<version_num>/.deps -r teradata-appcenter-python-sdk-<version_num>/requirements.txt
pip install teradata-appcenter-python-sdk-with-deps-<version_num>.tar.gz
Teradata AppCenter SDKクライアントの初期化
Teradata AppCenter Python SDKを使用するには、Teradata AppCenterクライアントを初期化する必要があります。
- クライアントを初期化するには、次のいずれかのメソッドを使用します。
メソッド | コード例 | 考慮事項 |
---|---|---|
importとクライアントの作成 | from appcenter_sdk.client import AppContext from appcenter_sdk.client import DefaultAppCenterClient import logging with DefaultAppCenterClient() as client: |
すべてのコンテキスト情報が環境変数から初期化されます。 |
AppContextを使用したクライアントの作成と初期化* | appContext = AppContext(app_center_base_url= 'https://appcenter.example.com', system='aster-system' with DefaultAppCenterClient(appContext) as client: |
なし |
AppContext用の変数
次の変数を使用してAppContextを構築できます。
変数 | 説明 | 例 |
---|---|---|
system | データ ソース名 | "****-system" |
database | データベース名 | "appcenter-examples" |
user | データ ソースにアクセスするユーザー名 | "user" |
password | データ ソースにアクセスするパスワード | "pass" |
catalog | Prestoシステムのカタログ | "hive" |
schema | Prestoシステムのスキーマ | "default" |
Job_config | ジョブ パラメータ | {"param1":"value", "param2":"value"} |
app_config | アプリ パラメータの定義 | {"param1":{"type":"text","default_value":"default","required":false}} |
result_config | 視覚化の構成 | {"query1":{"name":"query1","type":"sankey","format":"npath"}} |
app_center_base_url | AppCenterインスタンス ベースURL | "https://appcenter.example.com" |
Teradata AppCenter Python SDKでサポートする公開API
Teradata AppCenter Python SDKは次の公開APIをサポートしています。
API | 互換性のあるTeradata AppCenterのバージョン |
---|---|
audit | AppCenter 1.3 - 1.8 |
cache_result | AppCenter 1.3 - 1.8 |
get_systems | AppCenter 1.3 - 1.8 |
log | AppCenter 1.3 - 1.8 |
query | AppCenter 1.3 - 1.8 |
query_streaming | AppCenter 1.4 - 1.8 |
send_notification | AppCenter 1.3 - 1.8 |
set_context | AppCenter 1.4 - 1.8 |
audit API
目的
audit APIはユーザー アクティビティなどのインポート イベントをログに記録します。
Pythonコード例
client.audit(audit_event='TEST', message='Test message', result=True, details='this is a test message')
cache_result API
目的
cache_result APIは、結果を表示したり他のユーザーと共有したりできるように、クエリー結果や視覚化の結果をキャッシュします。cacheResult APIは、文字列またはストリーム(ファイルのようなオブジェクトまたはジェネレータ)のいずれかとして結果を取得します。結果が大きい場合は、ストリームを使用してメモリ消費量を減らすことを推奨します。
ジョブの結果は生成された時点から30日間使用でき、その後有効期限が切れます。rootユーザーはUIの設定からデフォルト値を1~365日の間で変更できます。
Pythonコード例
文字列のキャッシュの結果:
client.cache_result(query_result, 'application/json')
client.cache_result(visualized_result, 'text/html')
ストリームのキャッシュの結果:
client.cache_result(query_result_stream, 'application/json', stream=True)
client.cache_result(visualized_result_stream, 'text/html', stream=True)
get_systems API
目的
get_systems APIは、AppCenterから使用可能なシステムの名前を取得します。
Pythonコード例
available_systems = client.get_systems()
log API
目的
log APIは、アプリに関連付けられている情報メッセージまたはエラー メッセージをログに記録します。メッセージは、UIの開発から利用できるアプリ ログに含まれます。
Pythonコード例
情報メッセージの例:
client.log(logging.INFO, message)
エラー メッセージの例:
client.log(LogLevel: ERROR, INFO, message)
query API
目的
query APIは、Teradata Database、Teradata Vantage、Aster Database、Presto、およびHiveシステムに対してクエリーを実行し、結果をJSON文字列として返します。
Pythonコード例
query APIコール呼び出し:
query_result = client.query(query='select issue as term , count ( * ) as tf_idf from consumer_complaints group by issue')
結果の例
次の例では、出力のJSON "columns"セクションに、各列の名前とタイプを示す列メタデータが含まれています。"data"セクションには、クエリーのデータが含まれています。
{
"queueDuration": 33,
"queryDuration": 47646,
"results": [
{
"resultSet": true,
"columns": [
{
"name": "issue",
"type": "varchar"
},
{
"name": "issue_count",
"type": "bigint"
}
],
"data": [
{
"issue": "APR or interest rate",
"issue_count": 125
},
{
"issue": "Account opening, closing, or management",
"issue_count": 804
},
……
]
}
]
}
query_streaming API
目的
squery_streaming APIは、Teradata Database、Teradata Vantage、Aster Database、Presto、およびHiveシステムに対してクエリーを実行し、結果をInputStreamとして返します。
query_streaming APIは"with"ブロックを使用して呼び出す必要があります。直接呼び出すとエラーが発生します。
Pythonコード例
query APIコール呼び出し:
with client.query_streaming(query) as iter:
for data in iter:
if data:
decoded_line = data.decode('utf-8')
client.log(logging.INFO, decoded_line)
結果の例
次の例では、出力のJSON "columns"セクションに、各列の名前とタイプを示す列メタデータが含まれています。"data"セクションには、クエリーのデータが含まれています。
{
"queueDuration": 33,
"queryDuration": 47646,
"results": [
{
"resultSet": true,
"columns": [
{
"name": "issue",
"type": "varchar"
},
{
"name": "issue_count",
"type": "bigint"
}
],
"data": [
{
"issue": "APR or interest rate",
"issue_count": 125
},
{
"issue": "Account opening, closing, or management",
"issue_count": 804
},
……
]
}
]
}
send_notification API
目的
rootユーザーがUIの設定でEメール アカウントを設定している場合、send_notification APIは、ジョブとアプリの所有者にEメール通知を送信します。
Pythonコード例
client.send_notification(subject, msg)
set_context API
目的
set_context APIは、既存のクライアント インスタンスのコンテキストを変更します。一般的に、クライアント コンテキストで新しいシステムを設定するために、get_systems APIと共に使用されます。
Pythonコード例
context = AppContext(system=new_system_name,
user=****,
password=****)
client.set_context(context)
カスタム アプリのパッケージ化
- 次のサンプルDockerファイルを使用して、カスタム アプリ用にDockerイメージを構築します。
FROM python:3.5-alpine
COPY teradata-appcenter-python-sdk-1.4.tar.gz .
COPY app.py .
RUN apk add --update python3
RUN pip3 install teradata-appcenter-python-sdk-1.4.tar.gz
CMD [ "python3", "app.py" ]
タグ内の各値は、アプリの結果構成の視覚化構成の名前であり、結果構成に関連付けられた一意の視覚化を識別します。
タグが複数ある場合は、末尾または先頭に空白を使用せずに、単語全体をカンマで区切ったリストとして指定する必要があります。
ライセンス
Copyright (C) 2016-2019 by Teradata Corporation.