For AI agents: the complete documentation index is available at https://docs.dataplatform.ovh.net/ja/llms.txt, the full documentation bundle is available at https://docs.dataplatform.ovh.net/ja/llms-full.txt, and this page is available as Markdown at https://docs.dataplatform.ovh.net/ja/tutorials-custom-event-handling.md.
  • 🇯🇵 日本語
  • イベント処理アクションの作成

    この記事では、イベントを処理するアクションを作成するために必要な手順を説明します

    目的

    この記事では、外部のデータを使用してData Processing Engineで定義されたアクションやワークフローをトリガーするためのアクションを作成する手順について説明します。

    イベント処理テーブル

    アクションが外部イベントによって呼び出される場合、イベント呼び出しをプロジェクトの参照用にアーカイブすることをお勧めします。この記事では、データモデルにあるevent_handleというテーブルの例を使用します。

    • テーブル名: event_handle
    • テーブル説明: このテーブルには、イベントの内容を保存するための4つの属性が含まれています。
    属性名タイプ
    event_id数値38123461
    event_name文字列Rebecca
    event_content文字列Walked in the store
    date日付2020-05-21 11:34:23 PM
    Warning

    この例で提供されている名前は、テーブル、その属性、および以下のすべてのオブジェクト名(アクションや関数)についてです。もちろん、オブジェクトに異なる名前を付けることを選択することができます。ただし、その後のコードセクションを更新して、異なるオブジェクトを参照するようにしてください。

    一般的に、イベントを処理するカスタムアクションを作成する予定の場合、これは良いベストプラクティスです。これは、すべてのトリガーされたイベントをアーカイブするために使用します。このようなテーブルを作成するには、Lakehouse Managerコンポーネントに移動し、上記の表に示されている属性に従ってテーブルを作成します。

    Lakehouse Managerでデータモデルを作成する

    イベント処理アクションの設定

    カスタムアクションを作成するには、Data Processing Engineコンポーネントに移動し、新しいカスタムアクションを作成し、アクション名Event handleと入力します。以下に示すサンプルPythonコードは、アクションがプラットフォーム外部(通常はAPIエンドポイント)でトリガーされた場合にイベントの本文を管理する方法を示しています。

    カスタムアクションの設定で、関数名(メイン関数として実行するPython関数を指定する)をevent_handleに変更します。最後に、以下のコードサンプルをカスタムコードエディタにコピー&ペーストします。

    import logging
    import pandas as pd
    from datetime import datetime
    from forepaas.dwh import bulk_insert
    from forepaas.dwh import connect
    
    logger = logging.getLogger(__name__)
    
    def event_handle(event):
        logger.info(f"Start inserting event to default_dataset/event_handle")
        logger.info(f"event_type = {event.type}, number of rows = {len(event.content)}")
        if type(event.content) is not list:
            raise Exception("When playing this action you need to send rows")
    
        # Create dataframe
        df = pd.DataFrame(event.content)
        df["date"] = datetime.now().strftime("%Y-%m-%d")
    
        # Connect to destination database and insert dataframe to table
        destination = connect("dwh/default_dataset/")
        stats, error = bulk_insert(destination, "event_handle", df)
    
        logger.info(f"End insert of event: stats={stats}, error={error}")
    
    Info

    IDEのようなインターフェースでより快適に作業したい場合は、ページの上部にあるAdvancedモードをクリックしてオンラインコードエディタに切り替えることができます。PythonスクリプトのソースコードとJSONファイルの設定を更新できます。

    アクションとワークフローの起動

    アクションが外部から起動された場合の受信イベント情報を処理する方法を知ったので、次にトリガーイベントを設定する方法を見てみましょう。これにより、アクションやワークフローのジョブをプログラムで開始できます。

    必須パラメータ

    ジョブを起動するには3つのパラメータが必要です。これらは、当然ながら自分の環境構成に応じて設定する必要があります。すべてのパラメータは、{}括弧を使用してコードサンプルに示されています。

    パラメータ名
    subdomainプロジェクトのサブドメインtest
    action_idアクションの一意の参照5eaf0db7f6f51d5255974217
    token認証トークンxxxxx

    プロジェクトサブドメイン

    プロジェクトのサブドメインを取得するには、プロジェクトのURLを確認します。例えば、DPEコンポーネントを開いた状態でURLをコピー&ペーストすると、次のようになります。

    https://{project_subdomain}.eu.dataplatform.ovh.net/dpe/#/

    サブドメインは、プロジェクトのURLのパスの最初の参照です。

    アクションIDまたはワークフローID

    開始したいアクションのアクションIDを取得するには、アクションを編集する際のアクションのURLでも確認できます。そのためには、トリガーしたいアクションを編集するにはクリックし、URLは次のようになります。

    # Action's URL
    https://{project_subdomain}.eu.dataplatform.ovh.net/dpe/#/action/{action_id}
    
    # Workflow's URL
    https://{project_subdomain}.eu.dataplatform.ovh.net/dpe/#/workflow/{workflow_id}

    認証トークン

    認証トークンを生成するには、Identity Access Managerコンポーネントから特定のAPI&シークレットキーを作成する必要があります。その方法を学ぶには、次の専用記事を参照してください。

    API / シークレットキーの作成

    コードサンプル

    cURL
    Python 3+
    curl --request POST \
      --url 'https://{subdomain}.eu.dataplatform.ovh.net/dpe/v3/actions/{action_id}/start?app_id=55c1423560702d6426490f38&type=cam&token={token}' \
      --header 'content-type: application/json' \
      --data '[
    	{
    		"event_name": "Rebecca",
    		"event_id": 1,
    		"event_content": "imperdiet ornare."
    	},
    	{
    		"event_name": "Veronica",
    		"event_id": 2,
    		"event_content": "Nullam ut nisi a odio"
    	},
    	{
    		"event_name": "Aurelia",
    		"event_id": 3,
    		"event_content": "amet"
    	},
    	{
    		"event_name": "Yardley",
    		"event_id": 4,
    		"event_content": "ornare placerat, orci lacus vestibulum"
    	},
    	{
    		"event_name": "Dakota",
    		"event_id": 5,
    		"event_content": "nulla. Cras eu tellus eu"
    	}
    ]'
    Info

    ワークフローとアクションは、同じプロセスを使用して等しくトリガーできます。呼び出しの一部として送信されたデータを使用するには、ワークフローにイベント処理アクションが含まれていることを確認してください。また、ワークフローの正しいURLを使用することを確認してください(アクションまたはワークフローIDのセクションを参照)。

    この記事が役立ったことを願っています。質問があればお知らせください。改善案があればお知らせください。

    さらに詳しく

    当社のソリューションを実装するためのトレーニングや技術サポートが必要な場合は、営業担当者にお問い合わせください。または、このリンクをクリックして、プロフェッショナルサービスの専門家にプロジェクトのカスタム分析を依頼する見積もりを取得してください。

    Data Platformを構築しているチームと直接やり取りし、質問をする、フィードバックを提供する、専用のDiscordチャネルに参加してください。

    OVHcloudサービスについてサポートが必要な場合は、ヘルプセンターでリクエストを作成してください。

    コミュニティに参加してください。