Vantage でスクリプトを実行する方法
概要
場合によっては、SQL では簡単に表現できない複雑なロジックをデータに適用する必要があります。1 つの方法は、ロジックをユーザー定義関数 (UDF) でラップすることです。このロジックが UDF でサポートされていない言語で既にコード化されている場合はどうすればよいでしょうか。スクリプト テーブル演算子は、ロジックをデータに持ち込んで Vantage で実行できるようにする Vantage の機能です。このアプローチの利点は、操作 するために Vantage からデータを取得する必要がないことです。また、データ アプリケーションを Vantage で実行することで、その並列性を活用できます。アプリケーションの拡張方法を考える必要はありません。Vantage に任せることができます。
前提条件
Teradata Vantageインスタンスへのアクセス。
Vantage のテストインスタンスが必要な場合は、 https://clearscape.teradata.com で無料でプロビジョニングできます
Hello World
まずは簡単なところから始めましょう。データベースに「Hello World」と出力させたいとしたらどうでしょうか?
以下のとおりです。
ここで何が起こったのか分析してみましょう。SQL には echo Hello World!
が含まれています。これは Bash コマンドです。これで、Bash コマンドの実行方法がわかりました。しかし、なぜ 1 行ではなく 2 行が返されたのでしょうか。これは、この単純なスクリプトが各 AMP で 1 回実行され、たまたま AMP が 2 つあるためです。
戻り値:
このシンプルなスクリプトは、スクリプト テーブル オペレータ (STO) の背後にある考え方を示しています。スクリプトを提供すると、データベースはそれを AMP ごとに 1 回並列で実行します。これは、スクリプトに変換ロジックがあり、処理するデータが大量にある場合に適したモデルです。通常は、アプリケーションに同時実行性を組み込む必要があります。STO にそれを実行させることで、Teradata がデータに適切な同時実行レベルを選択できるようになります。
サポートされている言語
さて、Bash で echo
を実行しましたが、Bash は複雑なロジックを表現するのに適した環境とは言えません。では、他にどのような言語がサポートされているのでしょうか。幸いなことに、Vantage ノードで実行できるバイナリはすべて STO で使用できます。バイナリとそのすべての依存関係は、すべての Vantage ノードにインストールする必要があることに注意してください。実際には、管理者がサーバー上で維持する意思と能力があるものだけが選択肢になります。Python は非常に人気のある選択肢です。
スクリプトをアップロードする
はい、Hello World はとてもエキサイティングですが、既存のロジックが大きなファイルにある場合はどうなるでしょうか。SQL クエリーでスクリプト全体を貼り付けて引用符をエスケープするのは、おそらく望ましくないでしょう。スクリプトのアップロードの問題は、ユーザー インストール ファイル (UIF) 機能で解決します。
以下の内容の helloworld.py
スクリプトがあるとします。
スクリプトが /tmp/helloworld.py
のローカルマシンにあると仮定します。
まず、Vantage で権限を設定する必要があります。クリーンな状態を保つために、新しいデータベースを使用してこれを実行します。
以下のプロシージャ コールを使用して、スクリプトを Vantage にアップロードできます。
スクリプトがアップロードされたので、以下のように呼び出すことができます。
最後の呼び出しでは次が返されます。
大変な作業でしたが、まだ Hello World の状態です。 SCRIPT
にデータを渡してみましょう。