REST API による Tableau CRM レシピの作成、管理、スケジュール、実行
レシピの記述と検出
GET wave/recipes エンドポイントを使用すれば、すべての Tableau CRM レシピを取得できます。返されたレシピのコレクションは、次の基準で絞り込むことができます。
-
format — 現行のデータプレップレシピを指定するか (R3)、または従来のデータプレップレシピを指定します (R2)。
1/wave/recipes?format=R2 -
licenseType — Tableau CRM ライセンスの種類である EinsteinAnalytics または Sonic を指定します。
1/wave/recipes?licenseType=EinsteinAnalytics -
pageSize — ページネーションのためにコレクション単位で返されるアイテムの数。最小値は 1、最大値は 200、デフォルトは 25 です。
1/wave/recipes?pageSize=50 -
q — 検索語を使用して、名前やラベルでレシピを検索します。各用語はスペースで区切ります。ワイルドカードは、クエリ文字列の最後のトークンに自動的に付加されます。
1/wave/recipes?q=My Recipe -
sort — 返されたコレクションに適用される並び替え順の種別。有効値は、App、CreatedBy、CreatedDate、LastModified、LastModifiedBy、Mru、Name、Type です。
1/wave/recipes?sort=Name
既存のレシピを記述するには、recipeId (05vB から始まる) とレシピの形式 (R3 または R2) を指定します。
1/wave/recipes/05vB0000000xxxxxxx?format=R3GET 要求によって、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 レスポンスを使用することで、レシピを詳細に操作できます。
レシピノードの検査
RecipeDefinition には、レシピ名、レシピの API バージョン、レシピ表示用の UI メタデータ (Tableau 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}レシピの削除
レシピを削除するには、DELETE /wave/recipes/<recipeId> エンドポイントを使用します。このアクションにより、レシピと関連するデータフロージョブが削除されます。リクエストボディは必須ではなく、応答は、成功またはエラーのメッセージになります。
レシピの履歴の使用
ユーザがレシピを更新して保存するたびに、レシピの変更点が時系列で追跡され、バージョン履歴が作成されます。レシピの履歴をすべて表示するには、GET /wave/recipes/<recipeId>/histories エンドポイントを使用します。
1{
2 "historyId" : "0RmB0000000xxxxxxx",
3 "historyLabel" : "Reverting to version x"
4}レシピのスケジュール
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 は、データフロージョブを開始するために、dataflowId と command を取得します。1 つのレシピの場合、dataflowId は、RecipeRepresentation の targetDataflowId です。複数のレシピの場合、targetDataflowId は 02KB で始まります。
1{
2 "dataflowId": "02KB000000xxxxxxxx",
3 "command": "start"
4}1{
2 "command": "stop"
3}レシピ通知
1{
2 "notificationLevel" : "Always",
3 "longRunningAlertInMins" : 90
4}