この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

REST API による CRM Analytics レシピの作成、管理、スケジュール、実行

レシピは、Analytics REST API を使用して操作したり自動化したりできます。既存のレシピを検出して、レシピのバージョンを変更し、レシピをスケジュールしたり実行したりできます。

レシピの記述と検出

GET wave/recipes エンドポイントを使用すれば、すべての CRM Analytics レシピを取得できます。返されたレシピのコレクションは、次の基準で絞り込むことができます。

  • format — 現行のデータプレップレシピを指定するか (R3)、または従来のデータプレップレシピを指定します (R2)。
    1/wave/recipes?format=R2
  • licenseType — CRM Analytics ライセンスの種類である EinsteinAnalytics または Sonic を指定します。
    1/wave/recipes?licenseType=EinsteinAnalytics
  • pageSize — ページネーションのためにコレクション単位で返されるアイテムの数。最小値は 1、最大値は 200、デフォルトは 25 です。
    1/wave/recipes?pageSize=50
  • q — 検索語を使用して、名前やラベルでレシピを検索します。各用語はスペースで区切ります。ワイルドカードは、クエリ文字列の最後のトークンに自動的に付加されます。
    1/wave/recipes?q=My Recipe
  • sort — 返されたコレクションに適用される並び替え順の種別。有効値は、AppCreatedByCreatedDateLastModifiedLastModifiedByMruNameType です。
    1/wave/recipes?sort=Name

Lightning Web コンポーネントのワイヤアダプタの lightning/analyticsWaveApi getRecipes() は、Lightning Experience 内で同じ機能を提供します。

ヒント

既存のレシピを記述するには、recipeId (05vB から始まる) とレシピの形式 (R3 または R2) を指定します。

1/wave/recipes/05vB0000000xxxxxxx?format=R3

v48 以降で作成されたレシピは R3 のみで、R2 には変換できません。

重要

GET 要求によって、RecipeRepresentation 応答が返されます。この応答には、レシピの定義 (ノードと UI メタデータ)、スケジュールの属性、検証の詳細が含まれています。レシピの実行に使用する targetDataflowId も含まれています。たとえば、GET /wave/recipes/05vB0000000xxxxxxx?format=R3 によって、次の RecipeRepresentation JSON 応答が返されます。

1{
2    ...
3    "format" : "R3",
4    "id" : "05vB0000000xxxxxxx",
5    "label" : "MyTestRecipe",
6    "name" : "MyTestRecipe",
7    ...
8    "recipeDefinition" : {
9        ...
10    },
11    "scheduleAttributes" : {
12        ...
13    }, 
14    "targetDataflowId" : "02KB000000xxxxxxxx",
15    ...
16    "validationDetails" : [ ]
17}

RecipeRepresentation JSON レスポンスを使用することで、レシピを詳細に操作できます。

Lightning Web コンポーネントのワイヤアダプタの lightning/analyticsWaveApi getRecipes() は、Lightning Experience 内で同じ機能を提供します。

ヒント

レシピノードの検査

RecipeDefinition には、レシピ名、レシピの API バージョン、レシピ表示用の UI メタデータ (CRM Analytics Studio で使用)、RecipeNodeRepresentation オブジェクトの対応付けが含まれています。

ここでは、RecipeRepresentation JSON 応答の RecipeDefinition オブジェクトにある RecipeNodeRepresentation オブジェクトの対応付けについて詳しく確認します。このレスポンスの例は単純なレシピで、Opportunities sObject から作成されたデータを読み込み、そのデータを Closed Won で絞り込み、Opptys Closed Won という名前の新しいデータセットに結果を保存します。

1{
2    ...
3    "recipeDefinition": {
4        "nodes" : {
5            "LOAD_DATASET0" :  {
6                "action" : "load", 
7                "parameters": {
8                    "dataset" : {
9                        "label" : "Opportunities",
10                        "name" : "opportunity",
11                        "type" : "analyticsDataset"
12                    },
13                    "fields" : ["AccountId", "Amount", "OpenClosedWonLost", ...]
14                },
15                "sources" : []
16            },
17            "FILTER0" : {
18                "action" : "filter",
19                "parameters" : {
20                    "filterExpressions" : [ {
21                        "field" : "OpenClosedWonLost",
22                        "operands" : [ "Closed Won" ],
23                        "operator" : "EQUAL", 
24                        "type" : "TEXT"
25                    } ]
26                },
27                "sources": [ "LOAD_DATASET0" ]
28            },
29            "OUTPUT0" : {
30                "action" : "save", 
31                "parameters": {
32                    "dataset" : {
33                        "folderName" : "SharedApp",
34                        "label" : "Opptys Closed Won",
35                        "name" : "OpptysClosedWon",
36                        "type" : "analyticsDataset"
37                    },
38                    "fields" : []
39                },
40                "sources" : [ "FILTER0" ]
41            }
42        },
43        "ui" : { ... }, 
44        "version" : "52.0"
45    },
46    ...
47}
対応付けの各ノードエントリには、文字列の名前と RecipeNodeRepresentation が記述されています。RecipeNodeRepresentation には、ノードのアクション (action)、パラメータ (parameters)、ソース (sources) が含まれています。各ノード種別には、アクションに応じて異なるパラメータが指定されています。各ノード種別の詳細は、「Recipe Node Representation」のリファレンスを参照してください。

save アクションの dataset 属性に含まれる label 属性は、ユーザが Analytics Studio で探索可能なデータセットの表示名です。

重要

レシピの削除

レシピを削除するには、DELETE /wave/recipes/<recipeId> エンドポイントを使用します。このアクションにより、レシピと関連するデータフロージョブが削除されます。リクエストボディは必須ではなく、応答は、成功またはエラーのメッセージになります。

Lightning Web コンポーネントのワイヤアダプタの lightning/analyticsWaveApi deleteRecipe() は、Lightning Experience 内で同じ機能を提供します。

ヒント

レシピの履歴の使用

ユーザがレシピを更新して保存するたびに、レシピの変更点が時系列で追跡され、バージョン履歴が作成されます。レシピの履歴をすべて表示するには、GET /wave/recipes/<recipeId>/histories エンドポイントを使用します。

現在のレシピを以前のバージョンに戻すには、戻す履歴の ID を取得し、AssetReviewHistoryInputRepresentation 要求で PUT /wave/recipes/<recipeId> エンドポイントを使用します。
1{
2    "historyId" : "0RmB0000000xxxxxxx",
3    "historyLabel" : "Reverting to version x"
4}
アセットのバージョン履歴の詳細は、「履歴 API を使用した CRM Analytics アセットの以前のバージョンのバックアップおよび復元」を参照してください。

レシピのスケジュール

scheduleAttributes は RecipeRepresentation に含まれていますが、スケジュールを更新するには、/wave/asset/<assetId>/schedule のエンドポイントを使用する必要があります。

現在のスケジュールを確認するには、GET /wave/asset/<assetId>/schedule を使用します。<assetId> はレシピの ID です。この要求によって、ScheduleRepresentation 応答が返されます。

スケジュールを作成または更新するには、PUT /wave/asset/<assetId>/schedule を使用します。ScheduleInputRepresentation 要求の例については、「データフロー、レシピ、データ同期のスケジュール」を参照してください。

スケジュールを削除するには、DELETE /wave/asset/<assetId>/schedule を使用します。

レシピの実行

レシピを実行するには、スケジュールの有無にかかわらず、/wave/dataflowjobs POST エンドポイントを使用します。

POST は、データフロージョブを開始するために、dataflowIdcommand を取得します。1 つのレシピの場合、dataflowId は、RecipeRepresentationtargetDataflowId です。複数のレシピの場合、targetDataflowId は 02KB で始まります。

GET /wave/recipes/05vB0000000xxxxxxx?format=R3 応答から targetDataflowId を取得したら、これを POST /wave/dataflowjobs JSON リクエストボディで使用します。
1{
2    "dataflowId": "02KB000000xxxxxxxx",
3    "command": "start"
4}
実行中のレシピデータフロージョブを停止するには、/wave/dataflowjobs/<dataflowjobId> PATCH エンドポイントを使用し、command に stop を指定します。
1{
2    "command": "stop"
3}

レシピ通知

レシピジョブ通知は、ジョブの実行時間が長くなったり、失敗したりした場合に、ユーザに警告を送信するものです。すべてのレシピは、デフォルトの通知レベルが warnings で作成されます。レシピの通知レベルを確認するには、GET /wave/recipes/<recipeId>/notification エンドポイントを使用します。通知レベルや長時間アラートのタイミングを更新するには、PUT /wave/recipes/<recipeId>/notification エンドポイントを RecipeNotificationInputRepresentation 要求と共に使用します。
1{
2    "notificationLevel" : "Always",
3    "longRunningAlertInMins" : 90
4}