Python スクリプト

Python スクリプトのアクションステップでは、プロセスマイニングデータにアクセスできるカスタムPythonコードを実行できます。これにより、データ変換、カスタム統合、専門的な処理に最大限の柔軟性が提供されます。

概要

Python スクリプトアクションステップを設定すると、システムは以下を行います:

  1. 選択したすべての分析からデータを収集
  2. このデータをPythonコードで利用可能にする
  3. 安全な環境でスクリプトを実行
  4. データの処理、変換、任意の場所への送信を可能にする

これは最も強力で柔軟なアクションステップで、組み込みオプション以上のカスタム機能が必要な上級ユーザーに適しています。

Python スクリプトを使用するタイミング

次のような場合に Python スクリプトを使用してください:

  • カスタムAPIやWebhookへデータを送信する
  • 他のシステムへエクスポートする前にデータを変換する
  • データベースやデータウェアハウスと連携する
  • カスタムファイル形式やレポートを作成する
  • mindzieStudio標準機能にない計算を行う
  • サードパーティサービス(Slack、Teams、Salesforceなど)と統合する

前提条件

Python スクリプトを使用する前に:

  1. 基本的なPythonプログラミング知識が必要
  2. アクションウィザードのデータステップで分析データを選択している
  3. 分析から利用可能なデータ構造を理解している

設定方法

アクションにPython スクリプトを追加するには、アクションステップセクションの**+**ボタンをクリックし、Python Scriptを選択します。

スクリプトエディタ

Python スクリプトダイアログにはコードエディタがあり、そこでPythonコードを記述します。スクリプトは以下にアクセスできます:

  • 選択した分析のすべてのデータ
  • 標準Pythonライブラリ
  • 一般的なデータ処理ライブラリ(pandas、requestsなど)

利用可能なデータ

スクリプトは選択された分析データを構造化された形式で受け取ります。アクセスできるのは:

  • 生のイベントログデータ
  • 計算された指標や統計
  • 分析結果やテーブル
  • 可視化データ

サンプルスクリプト

Webhookへデータ送信

import requests
import json

# 分析データにアクセス
data = get_analysis_data()

# Webhookへ送信
response = requests.post(
    'https://your-webhook-url.com/endpoint',
    json=data,
    headers={'Content-Type': 'application/json'}
)

if response.status_code == 200:
    print("Data sent successfully")
else:
    print(f"Error: {response.status_code}")

データベースにエクスポート

import pandas as pd
from sqlalchemy import create_engine

# 分析データをDataFrameとして取得
df = get_analysis_dataframe()

# データベースに接続
engine = create_engine('postgresql://user:pass@host:5432/database')

# テーブルにデータを書き込み
df.to_sql('process_metrics', engine, if_exists='replace', index=False)

print(f"Exported {len(df)} rows to database")

Slack通知の送信

import requests

# 主要指標を取得
metrics = get_analysis_data()
avg_duration = metrics['average_duration']
case_count = metrics['case_count']

# Slackへ送信
slack_message = {
    "text": f"Daily Process Summary: {case_count} cases processed, avg duration: {avg_duration}"
}

requests.post(
    'https://hooks.slack.com/services/YOUR/WEBHOOK/URL',
    json=slack_message
)

カスタムCSVエクスポート

import pandas as pd
from datetime import datetime

# データ取得
df = get_analysis_dataframe()

# データ変換
df['export_date'] = datetime.now().strftime('%Y-%m-%d')
df['source'] = 'mindzieStudio'

# カスタム場所に保存
filename = f"process_export_{datetime.now().strftime('%Y%m%d')}.csv"
df.to_csv(f'/exports/{filename}', index=False)

print(f"Exported to {filename}")

ベストプラクティス

  1. まず手動でスクリプトをテスト:スケジュール実行する前にPythonコードを開発・検証してください。Pythonノートブックでロジックを確認するのがおすすめです。

  2. エラーを適切に処理:try/exceptブロックを使ってエラーを捕捉しログを残してください。失敗したスクリプトは有益なエラーメッセージを返すべきです。

  3. 重要なステップをログに記録:print文で実行進捗を追跡しましょう。これらはアクションの履歴に表示されます。

  4. 資格情報を安全に管理:パスワードやAPIキーをスクリプトに直接書き込まないでください。環境変数や安全な保管方法を使いましょう。

  5. 実行時間を考慮:アクションにはタイムアウト制限があります。特に大規模データ処理は効率化してください。

  6. 処理前にデータを検証:期待するデータが存在するか確認し、欠損データは適切に処理してください。

よくあるパターン

エラー処理

try:
    data = get_analysis_data()
    process_data(data)
    print("Success")
except Exception as e:
    print(f"Error: {str(e)}")
    # 必要に応じてアラート送信
    send_error_notification(str(e))

データ検証

data = get_analysis_data()

if not data or len(data) == 0:
    print("No data available - skipping export")
    exit()

if 'required_column' not in data.columns:
    print("Missing required column")
    exit()

# 続行

条件付き処理

data = get_analysis_data()

# 閾値超過時のみアラート送信
if data['average_duration'] > 24:  # 単位:時間
    send_alert("Process duration exceeds 24 hours!")
else:
    print("Duration within acceptable range")

トラブルシューティング

スクリプトが実行されない

  • アクション履歴のエラーメッセージを確認
  • アクションが有効かつスケジュールされているか確認
  • Python構文が正しいか確認

データが利用できない

  • データステップで分析が選択されているか確認
  • 分析が実行されてデータが存在するか確認
  • スクリプト内のデータアクセス方法をチェック

スクリプトタイムアウト

  • コードを最適化
  • データを小分割で処理
  • 重い処理は外部システムへ移行を検討

外部サービスでのエラー

  • APIエンドポイントと認証情報を確認
  • 実行環境からのネットワーク接続を確認
  • 一時的な失敗に備えリトライロジックを追加

インポートエラー

  • 必須ライブラリが利用可能か確認
  • 追加Pythonパッケージが必要な場合はサポートに連絡

制限事項

  • スクリプトはサンドボックス環境で実行
  • 一部のシステムレベル操作は制限
  • 外部ネットワークアクセスはセキュリティポリシーで制限される場合あり
  • 実行時間は無制限を防ぐため制限あり

関連ドキュメント

サポート

Python スクリプトに関する問題が発生した場合:

  • メール:support@mindzie.com
  • スクリプトコード(機密情報は除く)を添付
  • アクション履歴のエラーメッセージを明記
  • 期待する動作と実際の動作を説明してください