-NA- - Teradata AppCenter Python SDKユーザー ガイド - Teradata AppCenter

Teradata AppCenter Python SDKユーザー ガイド

prodname
Teradata AppCenter
vrm_release
-NA-
category
プログラミング リファレンス
ユーザー ガイド
featnum
B035-1119-000K-JPN

Teradata AppCenter Python SDKには、Teradata AppCenterと共に使用するPythonアプリの構築に役立つAPIが用意されています。

目次

Teradata AppCenter Python SDKパッケージのダウンロード

Python SDKパッケージにアクセスするには、Teradataユーザー アカウントが必要です。

  1. https://access.teradata.comにアクセスしてログインします。
  2. DOWNLOADS(ダウンロード)で、Update Your Software(ソフトウェアを更新する)を選択します。
  3. Search Downloads(ダウンロードの検索)で、teradata-appcenter-python-sdkを検索します。
  4. お使いのAppCenterのバージョンに対応するPython SDKをダウンロードします。

Teradata AppCenter Python SDKのインストール

python.orgのインストーラまたはHomebrewでPythonをインストールした場合は、すでにpipが用意されています。

注: インストール中に、pipはインターネットにアクセスしてPython SDKの依存関係を取得します。pipからインターネットにアクセスしないようにするには、Teradata AppCenter Python SDKをインストールする前にPython SDK依存関係パッケージをダウンロードしてインストールします。

  1. 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ユーザー アカウントが必要です。

  1. https://access.teradata.comにアクセスしてログインします。
  2. Search Teradata Support(Teradataのサポートの検索)DOWNLOADS(ダウンロード)で、Update Your Software(ソフトウェアを更新する)を選択します。
  3. Search Downloads(ダウンロードの検索)で、teradata-appcenter-python-sdk-with-depsを検索します。
  4. お使いの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クライアントを初期化する必要があります。

  1. クライアントを初期化するには、次のいずれかのメソッドを使用します。
メソッド コード例 考慮事項
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)

カスタム アプリのパッケージ化

  1. 次のサンプル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.