PYCOMMAND コマンド
コンセプト情報
Analytics テーブルを外部 Python にデータ フレームとして渡し、Python スクリプトから戻される出力を使用して、Analytics プロジェクトで新しいテーブルを作成します。
構文
PYCOMMAND <<FIELDS> フィールド <...n>|<FIELDS> ALL> <IF テスト> <TO テーブル名> SCRIPT スクリプトのパス <WHILE テスト> <FIRST 範囲|NEXT 範囲> <KEEPTITLE> <SEPARATOR 文字> <QUALIFIER 文字> <OPEN>
パラメーター
| 名前 | 説明 |
|---|---|
|
FIELDS フィールド名 <...n> | FIELDS ALL 省略可能 |
Python スクリプトに送信されるデータ フレームに追加する、ソースの Analytics テーブル内のフィールド、あるいは式。
|
| IF テスト 省略可能 |
現在のレコードを処理するのに満たす必要がある条件。Python スクリプトに渡されるデータ フレームには、この条件を満たすレコードのみが含まれます。 |
| TO テーブル名 省略可能 |
コマンドの結果を送信する場所:
出力テーブルは、Python スクリプトが返すデータフレームから作成されます。 |
| SCRIPT スクリプトのパス |
Python スクリプトの、ファイル システムにおける絶対パスまたは相対パス。スクリプトへのパスは引用符で囲んでください。 |
| WHILE テスト 省略可能 |
各レコードを処理するために真である必要がある条件式。条件が false と評価するか、テーブルの最後に達したら、コマンドは実行を中止します。 メモ WHILE を FIRST または NEXT とともに使用する場合は、1 つの制限に達するとすぐに、レコードの処理が停止します。 |
| FIRST 範囲 | NEXT 範囲 省略可能 |
処理するレコード数:
範囲は処理するレコード数を指定します。 FIRST と NEXT を省略すると、すべてのレコードがデフォルトで処理されます。 |
| KEEPTITLE 省略可能 |
データの代わりに、フィールド名としてデータの最初の行を処理します。省略すると、フィールド名は Python スクリプトに送信されません。 このオプションは、Python スクリプトの列名を使ってデータを取得したい場合に必要です。 |
| SEPARATOR 文字 省略可能 |
フィールド間の区切りとして使用する文字。文字は引用符で囲まれた文字列として指定する必要があります。 デフォルトの <文字> はカンマです。 メモ 入力フィールドに表示される文字を使用しないでください。SEPARATOR 文字が入力データに表示される場合は、結果に影響する可能性があります。 |
| QUALIFIER 文字 省略可能 |
フィールド値を折り返すためと識別するためにテキスト修飾子として使用する文字。文字は引用符で囲まれた文字列として指定する必要があります。 デフォルトの <文字> は二重引用符です。 メモ 入力フィールドに表示される文字を使用しないでください。QUALIFIER 文字が入力データに表示される場合は、結果に影響する可能性があります。 |
|
OPEN 省略可能 |
コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。 |
例
Analytics の買掛金データを Python スクリプトに送信し、Python でデータになんらかの分析または操作を実行してから、Python での結果を Analytics に再度エクスポートします。
Analytics コマンド
PYCOMMAND は、指定された買掛金フィールドを Python スクリプト testInOutput.py にエクスポートし、スクリプトが実行されるまで待機してから、Python スクリプトの結果を新しい Analytics テーブル AN_Python_roundtrip に保存します。
OPEN AP_Trans
PYCOMMAND FIELDS Vendor_No Invoice_No Invoice_Date Invoice_Amount Prodno Quantity Unit_Cost SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
このバージョンのコマンドは、Ap_Trans テーブル内のすべてのフィールドを Python スクリプトにエクスポートします。
OPEN AP_Trans
PYCOMMAND FIELDS ALL SCRIPT "testInOutput.py" KEEPTITLE TO AN_Python_roundtrip.fil
Python スクリプト (testInOutput.py)
import sys
import os
import logging
import pandas as pd
from acl_py_util import acl_py_util
from acl_py_util import logger
def main(args):
error_file = os.getenv("ACL_PY_ERROR_FILE")
if not error_file:
error_file = os.getenv('LOCALAPPDATA') + "/acl_py_utl.error"
# Analytics のデータを Python にインポートする
# Analytics に含まれる Python 関数を使用する
df = acl_py_util.from_an()
''' サンプル ユーザー コード '''
# データフレームの列名と行を使用して acl_py_util ログ エントリを作成する
logger.info(df)
# 元のデータフレームを新しいデータフレームにコピーする
user_df = df.copy()
# Invoice_Amount 列に 2 をかける
user_df.Invoice_Amount = user_df.Invoice_Amount * 2
# データフレームの列名と行を使用して acl_py_util ログ エントリを作成する
logger.info(user_df)
''' サンプル ユーザー コードの終了 '''
# Python のデータを Analytics にエクスポートする
# Analytics に含まれる Python 関数を使用する
acl_py_util.to_an(user_df)
# acl_py_util ログ エントリ記録スクリプト完了メッセージを作成し、空の行を追加する
logger.info(f"*** Python script completed successfully ***\n")
if __name__ == "__main__":
main(sys.argv)
Python スクリプトを使用して買掛金データを Analytics にインポートします。
この例では、Python スクリプトによってサンプル データを生成します。通常、スクリプトは外部ソースからデータを Python にインポートし、Python で分析やファイルの準備を行った後、その結果を Analytics にエクスポートします。
Analytics コマンド
PYCOMMAND が Python スクリプト testOutput.py を呼び出し、Python スクリプトの結果を新しい Analytics テーブル Input_from_Python に保存します。
PYCOMMAND SCRIPT "testOutput.py" TO Input_from_Python.fil
Python script (testOutput.py)
import sys
import os
import logging
import pandas as pd
from acl_py_util import acl_py_util
from acl_py_util import logger
def main(args):
# サンプル買掛金データを初期化する
data = {'Vendor_Number': ['12701', '10134', '11663'],
'Vendor_Name': ['Harris Projects', 'Stars Trading', 'More Power Industries'],
'Vendor_City': ['Baton Rouge', 'Milwaukee', 'Los Angeles'],
'Invoice_Number': ['232556', '74841', '5986811'],
'Invoice_Date': ['2024-10-22', '2024-10-22', '2024-10-23'],
'Invoice_Amount': [2064.48, 18883.34, 1145.58],
'Product_Number': ['030302903', '030302303', '090501551'],
'Quantity': [204, 458, 626],
'Unit_Cost': [10, 41, 1]}
# データフレームを作成する
df = pd.DataFrame(data)
# データフレームの列名と行を使用して acl_py_util ログ エントリを作成する
logger.info(df)
# サンプル ユーザー コード
user_df = df
# サンプル ユーザー コードの終了
# Python のデータを Analytics にエクスポートする
# Analytics に含まれる Python 関数を使用する
acl_py_util.to_an(user_df)
# acl_py_util ログ エントリ記録スクリプト完了メッセージを作成し、空の行を追加する
logger.info(f"*** Python script completed ***\n")
if __name__ == "__main__":
main(sys.argv)
備考
PYCOMMAND の仕組み
PYCOMMAND は、Analytics テーブルをデータフレームとして外部の Python スクリプトに渡し、Python スクリプトが実行されるのを待ってから、Python スクリプトから返された出力を使用して Analytics で新しいテーブルを作成します。PYCOMMAND を、Analytics スクリプト内で必要な回数だけ使用できます。
Analytics インストールには次の 2 つの Python 関数が含まれ、Python スクリプトでそれらの関数を使用してデータの入出力を行います。
-
入力データacl_py_util.from_an() は Analytics のデータを Python にインポートします。
-
出力データacl_py_util.to_an() は Python のデータを Analytics にエクスポートします。
ログ ファイル
Analytics によって、PYCOMMAND に関連付けられた 2 つのログ ファイルが作成されます。ログは、Analytics と Python の統合に関するトラブルシューティングや、関連する Analytics および Python スクリプトのエラーのデバッグに役立ちます。
ログ ファイルは、Analytics プロジェクト フォルダーに格納されます。
-
aclpython.log – PYCOMMAND が失敗したときの ACLScript エラー メッセージが記録されます。
-
acl_py_util.log – Python スクリプトによって出力される情報メッセージが記録されます。
acl_py_util.log をセットアップする
acl_py_util.log – Analytics インストールに含まれる構成可能なログです。以下の手順に従って、ログをセットアップして構成します。
メモ
使用する Python スクリプトごとに、個別にログをセットアップして構成する必要があります。
-
Python スクリプトの先頭にある import ステートメントのブロックに、次のステートメントを追加します。
from acl_py_util import logger
-
ログ エントリを作成する Python スクリプトの任意に場所に、次の行を追加します。
logger.info(Python_object)
例:
-
logger.info(dataframe_name.head(10)) は、指定されたデータフレームの現在の状態から列名と最初の 10 行をログに出力します。
-
logger.info(f"*** Python script completed ***\n") は、ログの最後にスクリプト記録完了メッセージを挿入した後、それぞれのスクリプト実行に関するログ詳細の間に空の行を挿入します。
-