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
にデータを渡してみましょう。
Vantage に保存されているデータを SCRIPT に渡す
これまでは、スタンドアロン スクリプトを実行するために SCRIPT
演算子を使用してきました。しかし、Vantage でスクリプトを実行する主な目的は、Vantage にあるデータを処理することです。Vantage からデータを取得して SCRIPT
に渡す方法を見てみましょう。
まず、数行のテーブルを作成します。
以下のスクリプトを使用してクエリーパラメータを解析します。
スクリプトでは、URL が stdin
に 1 行ずつ 1 つずつ入力されることを想定していることに注意してください。また、タブ文字を値の区切り文字として使用して、結果を 1 行ずつ印刷することにも注意してください。
スクリプトをインストールしましょう。ここでは、スクリプト ファイルがローカル マシンの /tmp/urlparser.py
にあると想定します。
スクリプトがインストールされたら、 urls
テーブルからデータを取得し、それをスクリプトに入力してクエリーパラメータを取得します。
その結果、クエリーパラメータとその値が取得されます。行数はキー/値のペアの数だけあります。また、スクリプトでキーと値の出力の間にタブを挿入したため、STO から 2 つの列が取得されます。