ビジネス プロセスを自動化するためのスクリプト作成
グローバル化が拡大の一途をたどり、市場が展開して行き、急速に変化する景気にてリスクと統制環境の改善に向けた規制圧力があるなかで、継続的な監視プログラムを開発することは組織にとって極めて重要です。こうした継続的な監視プログラムでは、多くの場合、スクリプトでビジネス プロセスを自動化する必要があります。この記事では、Analytics でスクリプトを作成し、ビジネス プロセスを自動化する方法について説明します。
この記事では、Analytics スクリプトを使用した調達カード (Pcard) のレビューを自動化する方法について説明します。ただし、同じワークフローを、他の財務、IT、監査、コンプライアンス、およびリスクのさまざまな使用事例にも適用できます。
メモ
スクリプトの作成について詳しく理解することが、このソリューションガイドの目的ではありません。詳細については、Analytics のスクリプトを参照してください。
どこでスクリプトを作成可能?
Analytics でスクリプトを作成できます。
全体像
Analytics プロジェクトは、テーブルとスクリプトを含む、データ分析情報を保管します。
スクリプトは、データをインポート、準備、分析し、リザルトにエクスポートします。
Analytics で暫定的に実行するスクリプトを取得し、これを (アナリティクス ヘッダーを追加して) アナリティクス スクリプトに変換し、ロボットにそのスクリプトをアップロードして、自動的にタスクを実行できます。
手順
ツアーに向けて準備完了?
これらの機能を文脈でより詳しく見ていきましょう。
メモ
このソリューション ガイドで示されているワークフローをお試しになりたい方は、Excel データ ファイル(Pcard_Holders と Pcard_Transactions)をダウンロードして、スクリプトのサンプルをコピーし、Analytics に貼り付けることができます。また、スクリプトを確認して、スクリプトの内容の概観を得るだけでもかまいません。
1. スクリプトを作成する
スクリプトには、単一フィールドに対して 1 つのコマンドを実行するだけのシンプルなものもあれば、分析目標を達成するための作業の大部分を実行するほど内容の充実したものもあります。
ヒント
一般に、タスクを別々のスクリプトに区別するのがベスト プラクティスです。利便性を高めるため、単一のスクリプトでデータのインポート、プレゼンテーション、分析、およびエクスポートを表しました。
例
シナリオ
あなたは、国で名高いラテックスのメーカーである、Vandelay Industries で内部監査人として働いています。事務用品とコンピューター機器を購入する際に Vandelay の従業員を支援するために、経営陣は Pcard プログラムを実施しました。Pcard プログラムでは、トランザクションで Vandelay ポリシーを確実に遵守するために、年次監査レビューが必要となります。
あなたは、スクリプトを使用して、分析の実施に関わる主要なタスクを自動化したいと考えています。レポート目的で、例外とトランザクション データをリザルトにエクスポートする予定です。
プロセス
スクリプト データのインポート、準備、分析
まず、Analytics プロジェクトを作成し、2 つの Excel データ ファイルを、Analytics プロジェクトが保存されるのと同じ場所に追加します。そこで、次のことを行う Pcard_Review という名の Analytics で単一のスクリプトを作成します:
- 分析に必要な Excel データ ファイルをインポートする
- 分析前にデータを準備する
- データを分析し、月々の限度額を超える Pcard を特定する
最後に、一連のソース、準備された、結果ターブルを作る、Analytics のスクリプトを実行します。
リザルトへのデータ エクスポートのスクリプト作成
リザルトに進み、2 つのデータ コンテナを作成します:
- コレクション 調達カード レビュー
- 分析 調達カード監査 2018
Analytics から、手動で次のものをエクスポートします:
- r_EmployeesOverMonthlyLimit をリザルトの新しい月々の限度額を超えた従業員テーブルに
- p_Pcard_Transactions_2018 をリザルトの新しい調達カード トランザクション 2018 テーブルに
最後に、Analytics ログから EXPORT 構文をこのスクリプトにコピーします。
メモ
まず手動でエクスポートして、正しいスクリプト構文を取得します。スクリプトが作成されたら、データのエクスポートは自動的に繰り返されます。EXPORT 構文は、スクリプトのデータ エクスポート部分を実行するために必要な特定のリザルト テーブル ID を含んでいます。以下の全スクリプトをコピーして、"XXXXXX@us" の 2 つのインスタンスを一意のリザルト テーブル ID で置き換えることができます。
結果: Pcard レビュー スクリプト
COMMENT
*************************************************
*** スクリプト名: Pcard_Review
*** 説明: このスクリプトは次のことを実行します:
*** 1 - Pcard_Holders と Pcard_Transactions 情報をインポートする
*** 2 - 分析のために上記のテーブルを準備する
*** 3 - 月々の限度額を超える従業員とカードを特定する
***
*** 作成者: 名前、Vandelay - 今日の日付
*** バージョン: 1.0
*************************************************
END
SET SAFETY OFF
SET SESSION
CLOSE PRIMARY
CLOSE SECONDARY
COMMENT
**********************
** スクリプトのこの部分は、Pcard レビューに必要な Pcard_Holders テーブルと Pcards_Transactions テーブルをインポートします。
**********************
END
SET FOLDER /Data/_1_Source_tables
COMMENT*** Pcard_Transactions データをインポートする
IMPORT EXCEL TO s_Pcard_Transactions "Pcard_Transactions.fil" FROM "Pcard_Transactions.xlsx" TABLE "Pcard_Transactions$" CHARMAX 150 KEEPTITLE
COMMENT*** Pcard_Holders データをインポートする
IMPORT EXCEL TO s_Pcard_Holders "s_Pcard_Holders.fil" FROM "Pcard_Holders.xlsx" TABLE "Pcard_Holders$" CHARMAX 150 KEEPTITLE
COMMENT
**********************
** スクリプトのこの部分は、分析対象となるデータを準備します。
**********************
END
SET FOLDER /Data/_2_Prepared_tables
COMMENT*** 後の結合で主要フィールドとして使用できるように、s_Pcard_Holders テーブルと s_Pcard_Transactions テーブルで card_number フィールドを調和させます
OPEN s_Pcard_Holders
DEFINE FIELD c_card_number COMPUTED STRING(card_number, 16)
OPEN s_Pcard_Transactions
DEFINE FIELD c_card_number COMPUTED STRING(card_number, 16)
COMMENT*** s_Pcard_Transactions テーブルの 2018 の日付を抽出し、これを p_Pcard_Transactions_2018 に送信します
OPEN s_Pcard_Transactions
EXTRACT FIELDS ALL IF BETWEEN(transaction_date, `20180101` , `20181231 235959`) TO "p_Pcard_Transactions_2018"
OPEN p_Pcard_Transactions_2018
COMMENT*** s_Pcard_Holders で必要なフィールドを抽出し、これを p_Pcard_Holders に送信します
OPEN s_Pcard_Holders
EXTRACT FIELDS employee_number employee_name email_address c_card_number limit_transaction limit_monthly TO "p_Pcard_Holders"
OPEN p_Pcard_Holders
COMMENT
**********************
** スクリプトのこの部分はデータを分析し、調達カードがその月々の限度額を超えているかどうかを特定します。カードが月々の限度額を超えている場合は、統制ができておらず、追跡と改善が必要ということになります。
**********************
END
SET FOLDER /Data/_3_Results_tables
COMMENT*** 月々の限度額を超えるカードを特定できるように、計算済みフィールドを作成し、各トランザクションが行われた月を判断します
OPEN p_Pcard_Transactions_2018
DEFINE FIELD c_month COMPUTED ZONED(MONTH(transaction_date),2)
COMMENT*** カードと月別にトランザクションをグループでまとめ、各カード当たりの月額合計を計算します。
OPEN p_Pcard_Transactions_2018
SUMMARIZE ON c_card_number c_month SUBTOTAL transaction_amount TO "t_SumTransByCardMonth.fil" OPEN PRESORT
COMMENT*** t_SumTransByCardMonth を関連付けて各カードの月々の限度額を決定します
OPEN p_Pcard_Holders
INDEX ON c_card_number TO "Pcard_Holders_on_card_number"
OPEN t_SumTransByCardMonth
DEFINE RELATION c_card_number WITH p_Pcard_Holders INDEX Pcard_Holders_on_card_number
COMMENT*** 月々の限度額を超えた場合の問題をフィルター処理し、抽出します
OPEN t_SumTransByCardMonth
SET FILTER TO transaction_amount > p_Pcard_Holders.limit_monthly
EXTRACT FIELDS ALL TO "r_CardsOverMonthlyLimit.fil"
OPEN r_CardsOverMonthlyLimit
COMMENT*** r_CardOverMonthlyLimit を p_Pcard_Holders テーブルと結合し、月々の限度額を超えた従業員を特定します。
OPEN r_CardsOverMonthlyLimit
OPEN p_Pcard_Holders SECONDARY
JOIN PKEY c_card_number FIELDS c_month c_card_number COUNT transaction_amount SKEY c_card_number WITH email_address employee_name employee_number limit_monthly TO "r_EmployeesOverMonthlyLimit" PRESORT SECSORT
CLOSE SECONDARY
OPEN "r_EmployeesOverMonthlyLimit"
COMMENT*** r_CardOverMonthlyLimit を p_Pcard_Holders テーブルと結合し、月々の限度額を超えた従業員を特定します。
OPEN r_CardsOverMonthlyLimit
OPEN p_Pcard_Holders SECONDARY
JOIN PKEY c_card_number FIELDS c_month c_card_number COUNT transaction_amount SKEY c_card_number WITH email_address employee_name employee_number limit_monthly TO "r_EmployeesOverMonthlyLimit" PRESORT SECSORT
CLOSE SECONDARY
OPEN "r_EmployeesOverMonthlyLimit"
COMMENT
**********************
** スクリプトのこの部分により、データがリザルト アプリにエクスポートされます。
**********************
END
COMMENT*** 月々の限度額を超える従業員のレコードをリザルトにエクスポートします
OPEN r_EmployeesOverMonthlyLimit
EXPORT FIELDS c_month c_card_number COUNT email_address employee_name employee_number limit_monthly transaction_amount ACLGRC TO "XXXXXX@us" OVERWRITE
COMMENT*** 2018 からの Pcard トランザクションをリザルトにエクスポートします
OPEN p_Pcard_Transactions_2018
EXPORT FIELDS transaction_number transaction_date transaction_amount source_currency merchant_number merchant_name merchant_location MCC country_code c_month c_card_number billing_currency account_id ACLGRC TO "XXXXXX@us" OVERWRITE
2. アナリティクス ヘッダーをスクリプトに追加する
アナリティクス ヘッダーは、Analytics スクリプトの最初にコメント ブロックで囲まれた一連のタグです。アナリティクス ヘッダーは、ロボットで実行する予定の、アナリティクス スクリプトで必要です。
タグは、アナリティクス スクリプトの入力、出力、および命令を定義するアナリティクス ヘッダー内の宣言コマンドです。タグにより、アナリティクス スクリプトは、即時、またはスケジュールされた時刻のいずれかに無人で実行できます。
ヒント
アナリティクス ヘッダーでは、ロボットでアナリティクス スクリプトを実行する方法が説明されています。一部のタグは、ロボットによって情報を受け取るために使用され、他のタグは、アナリティクス スクリプトで何を生成するべきかを指定します。たとえば、ロボットがインポートするためにどのファイルが必要か、またはエンド ユーザーにどの結果テーブルを利用できるようにする必要があるをロボットに伝える必要があるでしょう。
例
シナリオ
現在、あなたは暫定的に Analytics スクリプトを実行します。このスクリプトを自動的に実行するようプログラミングしたいと考えています。こうすると、分析を手動で実行するような時間のかかるタスクから解放されるでしょう。
プロセス
アナリティクス ヘッダーを次のタグを含む Pcard_Review に追加することで、定期スクリプトをアナリティクス スクリプトに変換します:
- FILE ロボットで実行するアナリティクス スクリプトに入力値を提供する Excel ファイルを指定します
- PASSWORD アナリティクス スクリプトのパスワード入力パラメーターを作成します
- RESULT LOG アナリティクス スクリプトを実行するたびに確実にログが生成されるようにします
- RESULT TABLE アナリティクス スクリプトがロボットで正常に実行すると、エンド ユーザーが確実に結果テーブルを利用できるようにします
アナリティクス ヘッダーに PASSWORD タグが含まれるようになったため、データをリザルトにエクスポートするスクリプトの部分に PASSWORD 構文も追加します。
メモ
EXPORT コマンドのパスワード入力パラメーターとパスワード パラメーターは、同じ数値 ID を使用してリンクされます。
//PASSWORD 1 Diligent One アクセス トークン
.
.
.
EXPORT ... PASSWORD 1
.
.
.
EXPORT ... PASSWORD 1
結果: アナリティクス ヘッダーと更新された PASSWORD 構文を持つ、Pcard レビュー スクリプト
COMMENT
//ANALYTIC TYPE 分析 Pcard_Review
この分析は、月々の Pcard 限度額を超えたすべてのカードと従業員を特定し、例外とトランザクションをリザルトにエクスポートします。
//FILE Pcard_Holders.xlsx
//FILE Pcard_Transactions.xlsx
//PASSWORD 1 Diligent One アクセス トークン
//RESULT TABLE r_CardsOverMonthlyLimit
//RESULT LOG
END
COMMENT
*************************************************
*** スクリプト名: Pcard_Review
*** 説明: このスクリプトは次のことを実行します:
*** 1 - Pcard_Holders と Pcard_Transactions 情報をインポートする
*** 2 - 分析のために上記のテーブルを準備する
*** 3 - 月々の限度額を超える従業員とカードを特定する
***
*** 作成者: 名前、Vandelay - 今日の日付
*** バージョン: 1.0
*************************************************
END
SET SAFETY OFF
SET SESSION
CLOSE PRIMARY
CLOSE SECONDARY
COMMENT
**********************
** スクリプトのこの部分は、Pcard レビューに必要な Pcard_Holders テーブルと Pcards_Transactions テーブルをインポートします。
**********************
END
SET FOLDER /Data/_1_Source_tables
COMMENT*** Pcard_Transactions データをインポートする
IMPORT EXCEL TO s_Pcard_Transactions "Pcard_Transactions.fil" FROM "Pcard_Transactions.xlsx" TABLE "Pcard_Transactions$" CHARMAX 150 KEEPTITLE
COMMENT*** Pcard_Holders データをインポートする
IMPORT EXCEL TO s_Pcard_Holders "s_Pcard_Holders.fil" FROM "Pcard_Holders.xlsx" TABLE "Pcard_Holders$" CHARMAX 150 KEEPTITLE
COMMENT
**********************
** スクリプトのこの部分は、分析対象となるデータを準備します。
**********************
END
SET FOLDER /Data/_2_Prepared_tables
COMMENT*** 後の結合で主要フィールドとして使用できるように、s_Pcard_Holders テーブルと s_Pcard_Transactions テーブルで card_number フィールドを調和させます
OPEN s_Pcard_Holders
DEFINE FIELD c_card_number COMPUTED STRING(card_number, 16)
OPEN s_Pcard_Transactions
DEFINE FIELD c_card_number COMPUTED STRING(card_number, 16)
COMMENT*** s_Pcard_Transactions テーブルの 2018 の日付を抽出し、これを p_Pcard_Transactions_2018 に送信します
OPEN s_Pcard_Transactions
EXTRACT FIELDS ALL IF BETWEEN(transaction_date, `20180101` , `20181231 235959`) TO "p_Pcard_Transactions_2018"
OPEN p_Pcard_Transactions_2018
COMMENT*** s_Pcard_Holders で必要なフィールドを抽出し、これを p_Pcard_Holders に送信します
OPEN s_Pcard_Holders
EXTRACT FIELDS employee_number employee_name email_address c_card_number limit_transaction limit_monthly TO "p_Pcard_Holders"
OPEN p_Pcard_Holders
COMMENT
**********************
** スクリプトのこの部分はデータを分析し、調達カードがその月々の限度額を超えているかどうかを特定します。カードが月々の限度額を超えている場合は、統制ができておらず、追跡と改善が必要ということになります。
**********************
END
SET FOLDER /Data/_3_Results_tables
COMMENT*** 月々の限度額を超えるカードを特定できるように、計算済みフィールドを作成し、各トランザクションが行われた月を判断します
OPEN p_Pcard_Transactions_2018
DEFINE FIELD c_month COMPUTED ZONED(MONTH(transaction_date),2)
COMMENT*** カードと月別にトランザクションをグループでまとめ、各カード当たりの月額合計を計算します。
OPEN p_Pcard_Transactions_2018
SUMMARIZE ON c_card_number c_month SUBTOTAL transaction_amount TO "t_SumTransByCardMonth.fil" OPEN PRESORT
COMMENT*** t_SumTransByCardMonth を関連付けて各カードの月々の限度額を決定します
OPEN p_Pcard_Holders
INDEX ON c_card_number TO "Pcard_Holders_on_card_number"
OPEN t_SumTransByCardMonth
DEFINE RELATION c_card_number WITH p_Pcard_Holders INDEX Pcard_Holders_on_card_number
COMMENT*** 月々の限度額を超えた場合の問題をフィルター処理し、抽出します
OPEN t_SumTransByCardMonth
SET FILTER TO transaction_amount > p_Pcard_Holders.limit_monthly
EXTRACT FIELDS ALL TO "r_CardsOverMonthlyLimit.fil"
OPEN r_CardsOverMonthlyLimit
COMMENT*** r_CardOverMonthlyLimit を p_Pcard_Holders テーブルと結合し、月々の限度額を超えた従業員を特定します。
OPEN r_CardsOverMonthlyLimit
OPEN p_Pcard_Holders SECONDARY
JOIN PKEY c_card_number FIELDS c_month c_card_number COUNT transaction_amount SKEY c_card_number WITH email_address employee_name employee_number limit_monthly TO "r_EmployeesOverMonthlyLimit" PRESORT SECSORT
CLOSE SECONDARY
OPEN "r_EmployeesOverMonthlyLimit"
COMMENT*** r_CardOverMonthlyLimit を p_Pcard_Holders テーブルと結合し、月々の限度額を超えた従業員を特定します。
OPEN r_CardsOverMonthlyLimit
OPEN p_Pcard_Holders SECONDARY
JOIN PKEY c_card_number FIELDS c_month c_card_number COUNT transaction_amount SKEY c_card_number WITH email_address employee_name employee_number limit_monthly TO "r_EmployeesOverMonthlyLimit" PRESORT SECSORT
CLOSE SECONDARY
OPEN "r_EmployeesOverMonthlyLimit"
COMMENT
**********************
** スクリプトのこの部分により、データがリザルト アプリにエクスポートされます。
**********************
END
COMMENT*** 月々の限度額を超える従業員のレコードをリザルトにエクスポートします
OPEN r_EmployeesOverMonthlyLimit
EXPORT FIELDS c_month c_card_number COUNT email_address employee_name employee_number limit_monthly transaction_amount ACLGRC TO "XXXXXX@us" OVERWRITE PASSWORD 1
COMMENT*** 2018 からの Pcard トランザクションをリザルトにエクスポートします
OPEN p_Pcard_Transactions_2018
EXPORT FIELDS transaction_number transaction_date transaction_amount source_currency merchant_number merchant_name merchant_location MCC country_code c_month c_card_number billing_currency account_id ACLGRC TO "XXXXXX@us" OVERWRITE PASSWORD 1
3. スクリプトをロボットにアップロードする
Analytics でアナリティクス スクリプトを作成したら、これをロボット アプリのロボットにアップロードし、必要なタスクの自動化をテストし、構成することができます。スクリプトを Analytics からロボットにアップロードするアクションは、スクリプトのコミットと呼ばれます。
ヒント
Analytics でツールを使用して、アナリティクス ヘッダー構文を検証し、それが正しいことを確認します。スクリプトをロボットにコミットする前に検証を実行し、アナリティクス スクリプトが実行時に失敗しないようにします。
例
シナリオ
あなたは、ロボット アプリで自動的にアナリティクス スクリプトを実行したいと考えています。スクリプトをロボット アプリにアップロードして開始する必要があります。
プロセス
Analytics メイン メニューから、[ファイル > スクリプトのコミット]を選択します。組織を選択し、新しいロボットに Pcard レビュー 2018 と言う名前を付け、[作成]をクリックします。
最後に、次のコミット メッセージを入力し、[OK]をクリックします。
これは、Pcard のレビューを自動化するために使用されるスクリプトである、Pcard_Review の最初のアップロードです。
結果
アナリティクス スクリプトをロボットに正常にアップロードしました。
次の手順
自動的にアナリティクス スクリプトを実行する方法について知る
ロボット アプリを使用して、Analytics で構築されたスクリプトを使用した定期タスクを自動化し、あなたとチームの時間とリソースを自由に使い、より戦略的な性質の作業を実行します。
詳細については、分析のスケジューリングを参照してください。
アカデミーのコースを受講する
ACL 270 学習パスを受講して、引き続きこの記事で紹介したコンセプトに関する知識を確立しましょう。
アカデミーは、Diligent のオンライントレーニングリソースセンターです。Diligent One サブスクリプションのユーザーは、アカデミーコースを無償で受講できます。詳細については、アカデミーを参照してください。