Python - Pythonコードを実行アクション
このアクションはカスタムPythonスクリプトを実行します。
制限事項
このアクションを使用する際は、次の制限事項に注意してください:
| 説明 | 制限 | メモ |
|---|---|---|
| ライブラリ、一時メモリ、入力を含むPythonコネクタアクションのメモリ制限 | 256 MB | NA |
| Pythonコネクターアクションのタイムアウト | 90秒 | NA |
| Pythonコネクタアクションの最大コードフィールドサイズ(スクリプト) | 1 MB | NA |
| pypdfライブラリで処理されるPDFファイルの最大サイズ制限 | 35 MB | NA |
| Pandasライブラリで処理されるCSVファイルの最大サイズ制限 | 20 MB | この制限は、Pandasの一時ストレージ要件を考慮しています。 |
| Pandasライブラリで処理されるExcelファイルの最大サイズ制限 | 5 MB | Excelファイルの解凍には追加のメモリが必要です。 |
| アクション内のPython評価の読み取りリクエストタイムアウト | 90秒 | この制限は、次のアクションに適用されます:
|
また、ユーザーが提供するライブラリはサポートされていません。 サポートされているライブラリの一覧については、Pythonコネクターの概要を参照してください。
入力
| フィールド | 説明 |
|---|---|
| 名前 | ステップの簡単な説明を入力します。 例:Transform dates |
| 入力項目 | コードに渡す入力フィールドを定義します。 フィールドを1つずつ手動で追加するか、JSONサンプルを指定して入力を定義できます。
注: Dateおよびdatetimeデータはstringとして渡されます。 例を確認します。
|
| 出力フィールド | Outputデータツリーを作成するフィールドを定義します。 フィールドを1つずつ手動で追加するか、JSONサンプルを指定して出力を定義できます。 |
| コード | カスタムPythonスクリプト。 スクリプトを記述する際は、次の点に注意してください: |
例
入力データと出力データの操作
この例では、入力フィールドのデータにスクリプト内でアクセスし、定義済みの出力フィールドに渡す方法を示します。
アクションの設定が次のようになっているとします:
| 入力フィールド | 出力フィールド |
|---|---|
このアクションには、次のフィールドが入力フィールドとして定義されています:
| このアクションには、次のフィールドが出力フィールドとして定義されています:
|
この例では、main関数のパラメーターの名前はinputです。 これを使用して、アクションで定義された入力フィールドの値にアクセスします。
結果のデータを出力フィールドに渡すには、出力スキーマと一致するキーを持つ辞書を含めます。
import numpy as np
def main(input):
# # Access the values of the action's Input fields
x = input['x']
y = input['y']
z = input['z']
size = (x, y, z)
# Create a 3D NumPy array with random integers
my3dArray = np.random.randint(low=0, high=100, size=size, dtype=int)
print("/nRandom array/n", my3dArray)
# Keep only elements that are multiples of 5
modified3dArray = np.where(my3dArray % 5 == 0, my3dArray, 0)
print("\Only multiples of 5\n", modified3dArray)
shape = str(modified3dArray.shape)
dimensions = modified3dArray.ndim
# Pass shape and dimension values to Output fields
return {"shape": shape, "dimensions": dimensions}datetimeデータの操作
この例では、Pythonスクリプトでdatetimeデータを操作する方法を示します。
Date型の入力フィールドは、Pythonコードにstringsとして渡されます。 データが想定どおりの形式になるように、コードでこの点を考慮することをお勧めします。
import datetime as dt
def main(input)
when = dt.datetime.fromisoformat(input['when'])
# use datetime object when
# ...
# convert to custom format
when_converted = when.strftime("%d %b %Y %H:%M:%S")
return {"when": when_converted}ログ記録
Developmentとデバッグに役立つように、Workatoではprintステートメントを使用して中間値をログに記録できます。 Workatoでは、main関数内のprintステートメントのみが表示されることに注意してください。 各printステートメントは新しい行として表示されます。
main関数内のprintステートメントの出力
出力
出力フィールドセクションで定義された各フィールドは、アクションのOutputデータツリーにデータピルを作成します。
例:次を出力フィールドとして定義したとします:
- shape(
integer) - dimensions(
integer)
この場合、アクションのOutputデータツリーは次のようになります:
└── Output
├── shape (integer)
└── dimensions (integer)出力フィールドにデータを渡す際にサポートが必要ですか。例を確認してください。
エラースタックトレース
「Execute Python code」アクションがmain関数内のエラーにより失敗した場合、Workatoはコードのデバッグに役立つ関連するエラースタックトレースを表示します。
サンプルエラースタックトレース
Last updated: