TIBCO Data Science - Team Studio API デモ

アプリケーションの API を通じてワークフローをリモートで実行できます。UI の外部からフローを実行する機能に加えて、実行時にワークフロー変数を定義できます。このデモでは、さまざまな値に対して同じモデリングを実行する必要があるリストをループ処理する方法を示します。

この例では、election92 データセットを調べます。これは、1992 年の選挙時の米国の各郡に関する情報が含まれる 3,141 行のデータセットです。このデータには、郡名と州、郡の人口統計と投票パターンに関する統計が含まれます。

50 の州、50 のワークフロー?

このデータセット全体には多くの有用な応用例がありますが、各州のデータを個別に分析する方が興味深いかもしれません。この作業は、サマリー統計オペレーターのグループ・バイ構成を使用して複製できますが、そのためには 50 行のフィルターを作成し、それらすべてを UI 内で操作する必要があります。

代わりに、単一のワークフローを作成し、ワークフロー変数を使用し、API に連絡してすべての状態のループを自動化します。

データセットの探索

データセットを一目見ると、[state] カラムに対して単純な行フィルターを実行して州のデータを分離できることがわかります。

ワークフロー変数を使用した行フィルター

ワークフロー変数を使用すると、API を使用してワークフローを実行するたびに、フィルターする状態を変更できます。

以下に、AL に設定された変数 @state を含む、ワークフロー変数の初期設定を示します。すべてのワークフロー変数は @で始まることに注意してください。

ここで、データに行フィルタを追加し、設定ダイアログからカラム名state[chararray])を '@state' と等しく設定することで、フィルタ設定を定義します。ワークフロー変数をシングルクォートで囲んでください。

データ セットでワークフロー変数を使用できることを示すために、結果を Hadoop データ ソース内の 50 個の個別のテーブルとして保存しました。これを行うには、[結果名] フィールドを @state に設定します。これは、結果が保存されるときに、@state の値 (現在 AL ) が結果のファイル名として使用されることを意味します。API を使用すると、州名のリストをループし、州ごとに 1 つのファイルを作成できます。

API を使用したワークフローの実行

TIBCO Data Science - Team Studio API を使えば、ブラウザから TIBCO Data Science - Team Studio にアクセスすることなく、ワークフローを実行することができます。その代わりに、コマンドラインを使用したり、スクリプトを書いてワークフローを実行することができます。これにより、TIBCO Data Science - Team Studio の機能が拡張され、ワークフローをスクリプトの一部として実行できるようになります。このデモでは、コマンド ラインから実行できる Bash スクリプトを作成します。このスクリプトは州の略語のリストをループし、フローの実行時に略語を定義できるようにします。こうすることで、手動で行う場合に比べてほんのわずかな時間で、上記のワークフロー変数を 50 回変更できます。

リクエストの作成

次の各ステップは Bash スクリプトに組み込まれます。まず、50states.sh というファイルを作成します。

まず、ルート URL を次のように定義します。

ROOT_URL="http://$host:$port/alpinedatalabs/api/v1/json"

ここで、

  • $hostTIBCO Data Science - Team Studio アプリケーション ホスト。
  • $portTIBCO Data Science - Team Studio ポート。
  • alpinedatalabs はアプリケーション サーバー名です。

リクエストの完全な URL は次の形式にする必要があります。

url="$ROOT_URL/workflows/$workflowID/run?token=$token"

ここで、

  • $workflowID は、実行されているワークフローの ID です。
  • $token は API 認証トークン (TIBCO Data Science - Team Studio セッション ID。http://$host:$port/servername/api/sessions にあります)。

次に、ワークフロー変数を定義する必要があります。これを行うには、リクエストに JSON ペイロードを含めます。以下はこのペイロードの例です。

{
 "meta" : { "version" : 1},
 "variables" : [
            { "name" : "@state" , "value" : "AL"}
            ]
}

最後に、これをすべて Bash スクリプトに結合します。このスクリプトは、50 個の 2 文字の州の略語をすべてループし、その略語をワークフロー変数として使用してワークフローを呼び出します。API を実行すると、フィルタリングされたデータを含む新しいディレクトリが Hadoop データ ソースに作成されます。ご覧のとおり、次の状態に移行する前にワークフローの実行が確実に終了するように、「sleep 15」という行を追加しました。あるいは、実行中のプロセスをクエリして、プロセスが終了したかどうかを確認します。

最終的なスクリプトは次のとおりです。

workflowID=???ROOT_URL="http://$host:$port/servername/api/v1/json"
url="$ROOT_URL/workflows/$workflowID/run?token=$token"
states=("AL" "AK" "AZ" "AR" "CA" "CO" "CT" "DE" "FL" "GA" "HI" "ID" "IL" "IN" "IA" "KS" "KY" "LA" "ME" "MD" "MA" "MI" "MN" "MS" "MO" "MT" "NE" "NV" "NH" "NJ" "NM" "NY" "NC" "ND" "OH" "OK" "OR" "PA" "RI" "SC" "SD" "TN" "TX" "UT" "VT" "VA" "WA" "WV" "WI" "WY")
for i in "${states[@]}"
do
    workflow_variables='{"meta":{"version":1}, "variables":[{"name":"@state", "value":"'"$i"'"}]}'
    response=$(curl -i -H "Content-Type: application/json" -d "$workflow_variables" -X POST "$url")
    echo $response
    sleep 15
done 

サマリー統計の追加

上記のスクリプトが正常に実行された後、以下のようなワークフローを作成して、各状態のサマリー統計を取得します。これは新しいワークフロー ファイルであるため、API では異なる ID を持ちます。

結果ファイルを保存したクラスター上のフォルダーに移動し、それをキャンバスにドラッグします。これを「状態データ」と呼びます。アイコンをダブルクリックして構成プロパティを表示します。

[Hadoop ファイル名] パラメータの値 AL をワークフロー変数 @state に変更します。これにより、API を呼び出すときに分析している状態を変更できるようになります。

サマリー統計の構成

サマリー統計の構成を以下に示します。popincome、および turnout カラムの統計が表示されます。

もう一度、[結果名] 構成を @state に設定します。 [上書き][はい] に設定すると、この情報を再実行する方法が作成されます。

ワークフローの実行

サマリー統計ワークフローの実行は、以前の行フィルター ワークフローの実行とほぼ同じです。スクリプトでは別のワークフロー ID が呼び出され、以前と同じループ パターンを使用して 50 の状態すべてを通過します。最終的に、サマリー統計量の計算から得られた 50 の結果テーブルが HDFS クラスターに保存されます。