コンテンツにスキップ

Savant分析の移行

PlaidCloudはSavantのドロップイン代替です。Savantのすべてのエージェント、式、設定はPlaidCloudに変換され、実行できます。コンバーターは、Savant Labsの分析エクスポートを実行可能な高度なワークフローに変換します。各Savantエージェントをワークフローステップ、プロジェクト変数、またはキャンバスオブジェクトにマッピングし、元のグラフを保持して、変換できなかったものを明示した変換レポートを返します。

変換が読み取るのは、指定したエクスポートファイルと、ソースにバインドしたファイルのヘッダーだけです。Savantのソースや宛先が接続するシステムには接続しません。

  • Savantの各エージェントは、対応するワークフローステップになります。上流と下流の関係は保持されます。すべてのエージェントとそのマッピングティアは、Savant変換マトリックスに一覧表示されています。
  • Savantの分析パラメーターはプロジェクト変数になり、エージェント設定内での参照はPlaidCloudの変数構文に書き換えられます。
  • ノートとグループは、キャンバス上のノートとグループとして取り込まれます。
  • 各ソースは、バインド方法に応じて、インポートステップになるか、既存のテーブルを読み取ります。
  • Savantのすべてのエージェントタイプが完全に変換されます。どのオプションにもマッピングがあります。Savant自体が失敗する構成や、ドキュメント化されていない構成は、名前付きのプレースホルダーステップとして取り込まれます。未変換の構成のプレースホルダーを参照してください。
  1. SavantからJSONのエクスポートで分析をエクスポートします。
  2. 読み取り可能なドキュメントアカウントに.jsonファイルをアップロードします。
  3. ワークフローを受け取るPlaidCloudプロジェクトを選択します。そのプロジェクトへの書き込みアクセス権が必要です。
  4. 分析のソースファイルを読み取るドキュメントアカウントとベースフォルダーを選択します。

変換は、Analyzeアプリ、REST API、またはMCPツールカタログから実行できます。3つとも同じフィールドを受け付けます。

  1. Analyzeを開き、Tools → Savant分析をインポートを選択します。
  2. ターゲットプロジェクトと、ドキュメントアカウントにアップロードしたSavantエクスポートファイル(.json) を選択します。
  3. ソースを読み込むを選択します。ウィンドウに、エクスポート内の各ソースノードが一覧表示されます。
  4. ソースをすでにあるデータに接続するには、ソースを選択してバインド… ボタンを選択します。ターゲットプロジェクト内のテーブルを読み取るにはプロジェクトテーブルを、ドキュメントアカウントからファイルを読み取るにはドキュメントを選択します(Excelの場合は任意でワークシート名を指定します)。バインドを削除するにはバインド解除を選択します。
  5. 未バインドソースのディレクトリで、バインドされていないソースのファイルを読み取るドキュメントアカウントとベースフォルダーを選択します。
  6. 変換オプションで、ワークフロータイプを選択し、未変換のプレースホルダーを許可するかどうかを選択します。オブジェクトのプレフィックスで、必要に応じてワークフロー、ステップ、テーブルのプレフィックスを設定します。
  7. 変換を選択します。

変換が完了すると、ウィンドウに変換レポートが表示されます。レポートには、ワークフロー名とテーブルのプレフィックス、警告、バインドされていないソースのファイルをアップロードするドキュメントパスの表、確認が必要なステップが含まれます。ソースの一覧を読み込めない場合は、ソースごとに、ノードIDとバインドするテーブルのanalyzetable_IDを指定した行を追加します。

REST APIとMCPツールでは、次のフィールドを使用します。

フィールド 必須 内容
source_account_id はい Savantのエクスポートを保持しているドキュメントアカウント。
source_file_path はい そのアカウント内にあるエクスポートのパス。
project_id はい ワークフローを作成するプロジェクト。
document_account_id はい バインドされていないソースの読み取り元となるドキュメントアカウント。
document_account_path はい バインドされていないソース用の、そのアカウント内のベースフォルダー。空の値または/はアカウントのルートを表し、先頭の/は無視されます。..やドットで始まるセグメント、波括弧、ドライブ文字やURLスキーム、制御文字を含むパスは拒否されます。
workflow_prefix いいえ ワークフロー名に付けるプレフィックス。
step_prefix いいえ ステップ名に付けるプレフィックス。
table_prefix いいえ テーブル名に付けるプレフィックス。デフォルトはワークフロー自身の名前です。既存のテーブル名を再利用することになるプレフィックスは、何かを作成する前に拒否されます。使用されたプレフィックスは変換レポートで返されます。
workflow_type いいえ advanced(デフォルト)はグラフをDAGキャンバス上に配置します。standardは直列のステップリストを生成します。
source_bindings いいえ ソースを既存のデータにバインドします。ソースのバインドを参照してください。
destination_bindings いいえ 宛先を、ドキュメントアカウント、接続テーブル、Googleスプレッドシート、Tableauデータソース、Slackチャンネル、またはメールの宛先に振り分けます。RESTとMCPのみ。宛先を参照してください。
api_bindings いいえ APIエージェントの相対URLの送信先(ベースURLまたはREST接続)を指定します。RESTとMCPのみ。APIリクエストのバインドを参照してください。
allow_unconverted_placeholders いいえ プレースホルダーの実行時の動作を制御します。未変換の構成のプレースホルダーを参照してください。

フィールドをJSONボディとして次のエンドポイントに送信します。

POST /rest/v1/analyze/savant/convert
{
"source_account_id": "<document account id>",
"source_file_path": "/savant/quarterly-margin.json",
"project_id": "<project id>",
"document_account_id": "<document account id>",
"document_account_path": "/savant-inputs"
}

source_bindingsを作成する前にエクスポートのソースノードを一覧表示するには、source_account_idとsource_file_pathを次のエンドポイントに送信します。

POST /rest/v1/analyze/savant/sources

レスポンスの各エントリには、ソースのnode_id、name、connectorが含まれます。

MCP接続のAIエージェントは、同じフィールドを指定してsavant_convertツールを呼び出します。エージェントの接続方法はAIエージェント(MCP)を参照してください。このツールはプロジェクトを変更するため、承認する前に呼び出し内容を確認してください。

Savantのエクスポートには、データも認証情報も接続も含まれていないため、3つの変換時パラメーターでユーザーの環境に接続します。それぞれ、SavantのノードIDまたは名前からターゲットへのマップです。使用できないバインドがあると、何かが作成される前に変換全体が拒否されます。

パラメーター バインド対象 セクション
source_bindings ソースエージェントからテーブルまたはファイルへ ソースのバインド
destination_bindings 宛先エージェントからファイル、テーブル、シート、Tableauデータソース、Slackチャンネル、メールへ 宛先
api_bindings 相対URLを持つAPIエージェントからベースURLまたはREST接続へ APIリクエストのバインド

Savantのエクスポートには、データの取得元は記述されていますが、データ自体も認証情報も含まれていません。source_bindingsを使用して、各ソースをPlaidCloudにすでにあるデータに接続します。キーは、ソースのノードID、データセットID、または名前です。値は次のいずれかです。

  • ターゲットプロジェクト内のテーブルのanalyzetable_ID。変換後のワークフローはそのテーブルを直接読み取ります。
  • ドキュメントアカウントからファイルを読み取るための、account、path、および任意でsheetを持つオブジェクト。
"source_bindings": {
"Sales": "analyzetable_1234",
"Budget": { "account": "<document account id>", "path": "/finance/budget.xlsx", "sheet": "FY27" }
}

読み取れないバインドは拒否されます。どのソースにも一致しないキーは警告として報告されます。

エクスポート内のソースファイルパスは/で始まっていても、.archiveのようなドットフォルダーを経由していても変換されます。XMLを読み取るソースはXMLテキストを変換し、XMLドキュメントソースにはSavantのファイルコンテキスト列も含まれます。

バインドのないソースは、まだデータのないインポートステップになり、変換レポートにその警告が表示されます。このステップは次の場所から読み取ります。

<document_account_path>/savant/<workflow id>/<source name>.csv

そのパスにファイルをアップロードして、ワークフローを実行します。ファイルが配置されるまでは、インポートステップは警告付きで完了して空のテーブルを作成し、ワークフローは続行します。

ほとんどのエージェントは、手作業で作成するステップに変換されます。すべてのエージェントはSavant変換マトリックスに一覧表示されています。次のエージェントには特に注意が必要です。

Savantエージェント 変換後 注意事項
Infer Agent(gen_aiと、LLMサービスを使用するレガシーのservice) プロンプトタスクを使用するAI/NLPステップ。プロンプトは入力フィールドに対して行ごとに1回実行され、回答はすべての入力列の横にあるAI Answer列に入ります。行数の上限は最大行数になり、ソースが空の場合は警告が出て空のテーブルが書き込まれます。Max New Rowsは新しい行にのみ回答し、以前の実行の回答を保持します。 回答するのはLLMであるため、出力がSavantと完全に同一になることはなく、実行ごとに変わる可能性があります。呼び出しごとにコストがかかります。AIプロバイダーを参照してください。失敗したバッチは、行を保持したまま回答を空にして警告します。
Vision Agent(vision) Document Read Blobステップ、Image OCR、続いてAI/NLPのプロンプトタスク。各ドキュメントは、プロバイダーがその種類とサイズを受け付ける場合は、画像またはPDFとしてプロバイダーに渡されます。それ以外の場合、ステップはそのPDFのテキストレイヤー、またはOCRテキストを送信します。 Infer Agentと同じLLMに関する注意事項があります。ドキュメント全体がPlaidCloudからプロバイダーに送られるため、変換時に警告が出ます。TIFFファイルとBMPファイルはOCRテキストとして送信され、ドキュメントの最大サイズの設定はありません。見つからないドキュメントはスキップされ、ステップはそのパスとともに警告します。
API Agent(apiServiceと、APIサービスを使用するレガシーのservice) 入力行ごとに1つのリクエストを送信するRESTリクエストステップと、すべての入力行を保持する結合。生のレスポンスボディはテキスト列に入り、その横にステータス列が付きます。期間あたりのクォータは小数のMax req/secになります。相対URLは、api_bindingsでバインドしたベースURLまたはREST接続に結合されます。行のフィールドから得られるホスト、ポート、パスは、行ごとに補完されます。次URL、Linkヘッダー、オフセット、ページによるページングに従い、ページング値(開始位置、ページサイズ、パラメーター名)は入力フィールドまたはパラメーターから指定できます。 GET以外のメソッドは、ワークフローが実行されるたびに、入力行ごとに1回、稼働中のシステムに対して実行されます。最初の実行の前に対象を確認してください。GET以外のリクエストは自動では再試行されません。失敗したリクエストは、ステータス付きの行として残ります。認証情報を伴うリクエストは、行のフィールドからホストを取得できません。認証情報は認証情報を持つAPIステップの説明に従って処理されます。
Recursion Agent(hierarchy) 各行を親の連鎖に沿って任意の深さまでたどり、ルートまでのパス上のIDにわたって各ノードを集計する(ノード自身を含む)Hierarchy Closureステップ。DepthとPathを書き込みます。親が空白の行、または自身を親とする行はルートです。 親IDにループがある場合は、繰り返されたノードで停止し、その前のすべての祖先を保持します。複数の親を持つ行は、それぞれが自身の値を保持します。
Search and Replace(search_replace) 選択したテキスト列に、大文字小文字の区別の有無と単語単位かどうかの設定に従って、各ルールを順に適用するTable Extract。各ルールは、一致したテキストの置換、テキストを含むセル全体の置換、完全一致するセル全体の置換、セルへの追記のいずれかのモードで実行されます。 ルールはパターンではなくリテラルテキストです。
Split(split) Split Textステップ。任意の長さのリテラルの区切り文字で列または行に分割し、列数はワークフローの実行時にデータから決定されます。 なし。
Time Series(rollup) 期間式でグループ化するTable Extractと、レコードのない期間をゼロで埋めるPeriod Spine、アンチ結合、和集合。 日付がNULLのレコードは除外されます。スパインは100,000期間で停止します。
Format(format) 名前の変更、型の変更、非表示、補完を行うTable Extract、または行による名前の置換にはPromote Headerステップ。 テキストでない列の補完では、デフォルトが列の型にキャストされます。列を宣言しないソースに対するヘッダーの昇格では、CSV、Excel、XLS、JSON、Parquet、Avroのファイルのすべての列を読み取ります。列が宣言されていないファイルを参照してください。
Spatial Match Agent(spatial_match) intersects、within、contains、touches、crosses、overlaps、equals、disjointにはSpatial Match (executor)ステップ(複数ルールの組み合わせも可)、クロスマッチにはCross Join、最近傍マッチにはFind Nearest。 最近傍マッチは、Savantと同様に大圏距離で順位付けとフィルタリングを行います。最近傍ルールを他のルールと組み合わせた場合は、先に最近傍のレコードを探してから他のルールを適用します。ANDでは結果にすべてのルールを満たすレコードが残り、ORでは最近傍のレコードと他のルールに一致するレコードの和集合になります。件数も最大距離も指定されていない最近傍ルールは、最も近い1件のレコードを保持します。距離内マッチも変換されます。ルールに単位がない場合はキロメートルで、ポイントだけでなく任意のジオメトリ間の測地線距離を計測します。解析できないジオメトリはNULLまたは不一致となり、警告が出ます。
Spatial Summarize Agent(spatial_summarize) 和集合、交差、境界ボックスにはSpatial Combine、幾何学的な中心と、線またはポリゴンの構築にはSpatial Centroid、Spatial Point to Line、Spatial Line to Polygon。 3点未満から構築したポリゴンは空のポリゴンです。
Destination Agent(destination) バインドしたターゲットへのエクスポートステップ。バインドしない場合は、プロジェクトテーブルまたはファイル。宛先を参照してください。 制約が残る点を参照してください。

GEO_POINT、GEO_TYPE、GEO_SPATIAL_DISTANCEは式に変換されます。式全体がGEO_AREAやGEO_UNIONなどの別のGEO_*関数である編集は、Spatial Infoを含む、対応する空間ステップに変換されます。ジオメトリはWKTテキストとして扱われます。GEO_AREA、GEO_PERIMETER、およびマイル単位のGEO_SPATIAL_DISTANCEは、法定マイルを使用します。

Visionエージェントが読み取るドキュメントのようにバイナリファイルを読み取るソースは、バインドしたドキュメントの、またはバインドされていないソースのパスに存在すると想定されるファイルのドキュメント抽出に変換されます。

InferまたはVisionエージェントは、LLM接続を使用するAI/NLPステップに変換されます。コンバーターは、Anthropic、OpenAI、Gemini、Azure OpenAI、Grok、GitHub Modelsに対応しています。

  • コンバーターは、エージェントが指定するプロバイダーとモデルに対応する接続を、インポートするユーザーが閲覧できるLLM接続の中から選びます。ユーザーが閲覧できない接続を指定することはありません。AIアシスタント(MCP)経由の場合は、アシスタントのユーザーが閲覧できる接続が対象です。
  • プロバイダーに閲覧可能な接続がない場合、またはSavantのプロバイダーにPlaidCloudで一致するものがない場合(クラウドホスト型のモデルAPIや、Savantワークスペースの自前キー持ち込み型プロバイダー)は、ユーザーが閲覧できる場合にワークスペースのデフォルト接続がステップで使用されます。閲覧できない場合は接続を空欄のままにし、ステップは実行時にワークスペースのデフォルトを使用します。いずれの場合も変換レポートに警告が出るので、別の接続で回答させたい場合はステップで接続を選択してください。

Savantの宛先は、受け取ったテーブルをバインドしたターゲットに書き込みます。宛先は、RESTボディまたはMCP呼び出しのdestination_bindingsでバインドします。キーは宛先のノードIDまたは名前です。Analyzeウィンドウでは宛先をバインドできないため、そこで変換された宛先は、バインドされていない宛先で説明する未バインドの結果を書き込みます。

ターゲット バインド 結果
ドキュメントアカウント {account, path[, file_name]} 宛先の種類に応じた、CSV、TSV、TXT、Excel、Parquet、JSON、Avro、XML、PDF、またはTableau Hyperのファイル。そのアカウントに対するドキュメントストレージの書き込み権限が必要です。
接続上のテーブル {connection, table[, schema, replace]} Export: External Database Tablesステップ。接続の書き込み権限が必要です。テーブルを置き換えるにはreplace: trueが必要です。
Googleスプレッドシート {connection, spreadsheet_name[, sheet_name, replace]}、または{connection, spreadsheet_id[, sheet_name, replace]} Googleスプレッドシート接続上のGoogleスプレッドシートへのエクスポートステップ。タブは、デフォルトでは宛先が指定するタブで、指定がなければSheet1です。シートの行を置き換える宛先はタブをクリアするため、replace: trueが必要です。
Tableau {account, connection[, path, file_name, replace, datasource_name, tableau_project]} アカウントのフォルダーに書き込まれたTableau Hyperエクストラクトと、続くTableau接続上のPublish to Tableauステップ。データソースを置き換える場合や、一致キーで行を変更する場合は、replace: trueが必要です。
Slack {connection[, channel]} CSVがドキュメントアカウントに書き込まれ、その後Notify via Slackステップがチャンネルにアップロードします。接続にはボットトークンが必要で、チャンネルはバインド、またはなければエクスポートから取得したチャンネルIDである必要があります。
メール {email_to: [...]}と、エクスポートに記載された宛先も使用する場合はemail_export_recipients: true CSVが添付ファイルとして送信されます。メールの書き込み権限が必要です。

Googleスプレッドシート、Tableau、またはSlackの接続は、テーブル接続と同じ方法で確認されます。その接続を閲覧でき、接続の書き込み権限を持っている必要があり、そうでない場合は変換が拒否されます。

  • 追記する、ファイルまたはテーブルの宛先は、以前のファイルを読み戻して新しい行とともに書き直します。上書きすることはありません。
  • アップサート、更新、groupReplaceの宛先は、宛先の一致キーでマージします。ファイルまたはテーブルは読み戻して書き直され、Tableauデータソースは一致する行がその場で変更されます。
  • 追記とマージは、値ごとに分割された既存のファイル、ヘッダーなし(行は位置で一致)のファイル、左上のセルを基準にしたExcelファイル、UTF-8以外の文字セットのファイルでも動作します。分割では、各値の書き込み先のファイルを読み戻してその中でマージし、他のファイルはそのままにします。
  • Tableauの宛先は、SavantのモードをPublish to Tableauステップの6つのモードにマッピングします。appendとinsertは行を追加し、replaceは上書きし、upsert、update、groupReplaceはキーで一致させます。既存のデータを変更するモードは、バインドがreplace: trueと指定している場合にのみ公開されます。そうでない場合、宛先は新しいデータソースを公開し、レポートにその旨が記載されます。
  • 出力エンコーディングを持つ宛先は、そのJava文字セットでファイルを書き込みます。文字セットにない文字は、Savantと同様に?として書き込まれます。Javaのエイリアス、CESU-8、バイトオーダーマーク付きの形式に対応しています。まれな文字セット(たとえばx-ISCII91やJIS_X0212)は書き込めず、その場合ファイルはUTF-8で書き込まれてレポートに警告が出ます。UTF-8以外の文字セットでの分割は、フォルダーに変換されます。
  • エクスポートのファイル名は、バインドしたフォルダーの内側に収まっている必要があります。

AI呼び出し元がバインドできるもの

Section titled “AI呼び出し元がバインドできるもの”

AIアシスタント(MCP)経由の変換では、次の部分を除いた同じ形式をバインドでき、除かれた部分にはそれぞれ該当部分を示す警告が出ます。

除かれる内容 代わりの動作
テーブル、シート、Tableauデータソースのreplace 追記する宛先は、バインドしたテーブルまたはシートへの追記を続けます。置換する宛先はCSVを書き込みます。Tableauの宛先は新しいデータソースを公開します。
メールの宛先 メールの代わりにCSVが書き込まれます。
Slack Slackへの投稿の代わりにCSVが書き込まれます。

これらをバインドするには、AnalyzeアプリまたはREST APIから変換するか、アシスタント経由ではなくご自身でサインインしてください。

バインドのない宛先は、対応するPlaidCloud側のものを書き込み、元のターゲットを示してDestination target unboundという警告を出します。変換がターゲットのシステムに接続することはありません。

宛先 結果
データベース、ウェアハウス、またはSaaSのターゲット(Oracle、汎用データベース、Looker Studio、NetSuite、SAP、および接続がバインドされていないGoogleスプレッドシート、Tableau、Slack) 宛先ノードの名前が付いた、プロジェクト内のテーブル。
ファイルストレージ(S3、GCS、Box、SFTP、SharePoint、Google ドライブ、OneDrive) 宛先のファイルタイプのファイルが、バインドされていないソース用に指定したアカウントの下のドキュメントフォルダーに書き込まれます。フォルダーはターゲットフォルダーを反映します。認証情報と共有トークンはパスから取り除かれます。
メール バインドされていないソース用に指定したドキュメントアカウントへのCSV。

警告には、実際のターゲットに到達するために何をバインドすべきかが示されます。バインドが使用できない宛先は、CSVを書き込み、元のターゲットをメッセージに含めてFallback, target not writtenという警告を出します。そのCSVに依存する前に確認してください。通常のCSV宛先は、それ自身のファイルを書き込みます。

フィールドの値ごとにファイル、サブフォルダー、タブを書き込む宛先は、CSV、Excel、Parquet、PDFのファイルとGoogleスプレッドシートのタブを分割します。

  • ParquetとPDF。 値ごとに1つのファイル。
  • Googleスプレッドシート。 値ごとに1つのタブ。
  • テンプレート。 テンプレートワークブックが、すべての値のワークブックの元になります。テンプレートがない場合は警告が出て、テンプレートなしでワークブックが書き込まれます。
  • NULL値。 分割値がNULLの場合は、破棄されず、専用のファイルまたはタブに書き込まれます。
  • 入力にないフィールド。 入力が持たないフィールドでの分割または並べ替えは、Savantが失敗するため、フィールド名を示して拒否されます。
  • 値の中の/または\。 スラッシュまたはバックスラッシュを含む分割値は、ファイル名やタブ名にできないため、無害化されます。変更された値には、-に続く値のMD5ハッシュの先頭6文字という固定の6文字のサフィックスが、ファイル拡張子の前に付きます。変更が不要な値はそのままの名前です。

エクスポートされる値と行の順序

Section titled “エクスポートされる値と行の順序”
  • プレーンな数値とブール値。 CSV、TSV、TXTのエクスポートでは、数値はプレーンな数値、ブール値はtrueとfalseとして書き込まれ、タイムスタンプに+00:00は付きません。
  • 安定した行の順序。 並べ替えを行う宛先は、実行のたびに同じ行の順序で書き込みます。同順位の扱いは毎回同じで、分割とパートのルートも並べ替えられます。Parquet、Googleスプレッドシート、Tableau、テーブルのターゲットは行の順序を保持しません。

Excelの宛先は、次のオプションをマッピングします。

  • フィールド値ごとのタブ。 フィールドの各値がシートになります。空白の値はSheet1に入り、名前が重複するシートには数字のサフィックスが付きます。
  • テンプレートからの書式。 実行のたびに、まず同じフォルダーの<name>_template.xlsxをワークブックの上にコピーしてから書き込むため、ワークブックは常に置き換えられます。テンプレートがない場合、コピーは警告を出し、ワークブックはテンプレートなしで書き込まれます。
  • 左上のセル。 行は、そのセルを起点としてワークブックに書き込まれます。
  • モードcreate。 実行のたびに、宛先の書き込みモードに従ってファイルを書き込みます。

/v2/customersのようにURLが相対のAPIエージェントには、送信先のホストがありません。api_bindingsでバインドしてください。キーはAPIノードのIDまたは名前、または独自のバインドを持たないすべてのAPIノードを表す*です。値は次のいずれかです。

  • 文字列、または{"base_url": "https://host/path"}としてのベースURL。相対URLはこれに結合されます。URLは、公開ホストを持つhttpまたはhttpsで、ユーザー、クエリ、フラグメントを含んではいけません。
  • {"connection": "<REST connection id>"}。リクエストはそのREST接続のホストに送信され、その認証情報を伴います。接続の書き込み権限が必要で、接続は閲覧可能なREST接続である必要があります。
"api_bindings": {
"*": "https://api.example.com/v1",
"Customers": { "connection": "<REST connection id>" }
}

一致しないキーは警告になり、使用できないバインドは拒否されます。バインドのない相対URLは、名前付きのプレースホルダーのままです。

接続の書き込み権限がないAIアシスタント(MCP)では、接続のバインドは警告とともに無視され、結合されるはずだった相対URLはプレースホルダーのままになります。ベースURLをバインドするか、AnalyzeアプリまたはREST APIから変換してください。

入力フィールドから得られるホスト、ポート、パスにはバインドは不要です。行ごとに補完され、各値は使用時に検証されます。レポートには、行が指定しうるホストが一覧表示されます。認証情報を伴うリクエストは、行のフィールドからホストを取得できません。データが選んだホストに認証情報を送信することは拒否されます。

ページングも変換されます。レスポンス内の次ページURL、Linkヘッダー、オフセット、ページ番号は、それぞれRESTリクエストステップのページングモードになり、すべてのページを読み取ります。ページング値は入力フィールド({{Field}})またはパラメーター({{Param}})から指定でき、10.0のような数値テキストとして書かれた値は数値として読み取られます。

APIエージェントのヘッダー、URLパス、クエリ、ボディにある認証情報は、インポートが作成するPlaidCloudのREST接続に移されます。RESTリクエストステップはその接続を参照するため、認証情報がステップ内に残ることはありません。

  • レスポンスのconnectionsには、インポートが作成または再利用した接続が一覧表示され、インポートレポートにもその名前が記載されます。同じ分析を再度インポートすると、別の接続を作成するのではなく同じ接続が再利用されます。
  • URLのユーザー情報とヘッダーにある認証情報は、接続自身の認証フィールドまたはデフォルトヘッダーに入ります。パス、クエリ、ボディのシークレットは、接続に暗号化して保存され、その接続自身のhttpsホストへのリクエストに限り、実行時に補完されます。
  • 暗号化されていないhttp://エンドポイントは、認証情報とともには変換されません。認証情報は除かれ、変換レポートにコピーされなかった旨の警告が出ます。
  • AIアシスタント(MCP)経由のインポートでは接続は作成されません。認証情報は除かれ、その旨の警告が出ます。代わりにAnalyzeアプリまたはREST APIからインポートするか、認証情報を手作業でREST接続に追加して、ステップで選択してください。
  • 接続の書き込み権限がないユーザーも同じ結果になります。認証情報は除かれ、警告が出ます。
  • APIの認証情報スロットだけが、パラメーターを接続に移します。APIの認証情報が入る場所であるヘッダー、クエリ、パス、ボディで使用されるパイプラインパラメーターは、接続の暗号化されたsecret_valuesに移され、ステップは接続を通じてそれを参照します。パラメーターの名前にかかわらず、ワークフロー変数として作成されることはありません。
  • 名前にシークレットを示す語(password、token、secret、keyなど。ただしkeyはsortやpartitionのようなデータを示す語の後ろでは除く)を含むその他のパラメーターは、値が空白のワークフロー変数になり、警告が出ます。api_key_2のような名前も空白になります。インポートの後で、プロジェクト変数に値を設定してください。
  • max_tokensのように件数や上限を表す名前のパラメーターは、値を保持します。
  • 式、フィルター、置換値に入力されたシークレットは、ステップから除かれ、変換レポートに警告が出ます。パス、URL、40文字または64文字の16進ダイジェストは、その一部やシークレットを示す名前がそうでないことを示さない限り、保持されます。フォルダーの共有リンクと宛先のメールアドレスが、警告やノートに表示されることはありません。
  • 認証情報をそのまま返すレスポンスは、受信したとおりに保存されます。そのようなリクエストの出力テーブルは、機密として扱ってください。

JWT_ENCODEはJWT Encodeステップに変換されます。リテラルの署名キーは、ステップにバインドされた専用の接続に入り、トークンは実行時に署名されるため、キーがステップの設定に現れることはありません。AIアシスタント経由の場合や接続の書き込み権限がない場合は、キーは除かれ、トークンはNULLになり、接続を作成する権限を持って再度インポートするよう警告が出ます。

データ行の列ヘッダーへの昇格

Section titled “データ行の列ヘッダーへの昇格”

replace names with rowに設定されたFormatエージェントは、Promote Headerステップに変換されます。実行時に、選択した行(1から数えます)が列名になり、その行は削除されます。レコードの順序を持たないソースにはノートが付きます。どの行が列名になるかが、実行ごとに変わる可能性があるためです。その行が名前を付けているが後続のステップのどれにも言及されていない列は、読み取る列を列挙しているステップより先には引き継がれません。

列が宣言されていないファイル

Section titled “列が宣言されていないファイル”

列が宣言されていないソースでは、次の列が保持されます。

  • インポート時にバインドされたCSV、TSV、TXTソースは、ファイルのヘッダーにあるすべての列を保持します。
  • それ以外のファイルタイプ、およびバインドされていないソースは、後続のステップが名前を挙げている列のみを保持し、変換レポートに警告が出ます。
  • そのようなソースに対して昇格されたヘッダーは、CSV、Excel、XLS、JSON、Parquet、Avroのファイルのすべての列を読み取ります。

そのようなソースが昇格されたヘッダーにのみ接続されている場合、インポートはすべての列を位置で読み取るImport Delimitedステップになります。昇格されたヘッダーの後でエクスポートや結合を行うステップは、実行時にテーブルが持つすべての列を引き継ぎます(Table Extractの実行時に指定された列も引き継ぐを参照)。

これらの変換は次のように動作します。

エージェント 動作
Blend(blend) OR結合された述語、contains、is-part-ofで結合します。内部結合を除く外部結合のブレンドと、不一致の出力は、対応する結合ストリームに変換されます。どの演算子でも、右側の重複キーは出力から除かれます。
Dedupe(deduplicate) 各グループ化のグループ内で、キーごとに最初のレコードを保持します。重複フラグは重複グループのすべてのメンバーに印を付け、重複は2番目のストリームにルーティングすることもできます。出口が1つだけ接続されている場合は、Savantと同じ動作になります。
Summarize(summarize) ウィンドウ集計は、グループをまとめる代わりに、すべての行に集計値を追加します。
Sample(sample) グループごと、または全体の最初のN行、ランダムなパーセントまたは行数、あるいはN行おきに1行。
Time Series(rollup) グループごとに、任意の開始日と終了日の間の、日、週、月、四半期、年、10年の期間。月の期間はYYYY-MMというラベルになり、レコードのない期間はゼロで表示されます。日付がNULLのレコードは除外されます。
Pivot(pivot) COUNTは行数を数えます。
XML(xml) SELECTは要素を抽出し、パスには名前空間を含めることができ、TO_JSONはXMLをJSONに変換します。述語、属性テスト、ワイルドカード、count()、name()、contains()などの関数を含め、あらゆるXPath 1.0のパスが変換され、XML解析ステップはそれをXPathとして読み取ります。processNsがオフの場合、名前はプレフィックスを含めてリテラルに照合されます。変換時に存在しないXMLファイルは、ワークフローの実行時にルート要素が解決されます。
JSON(json) 幅の広い列にフラット化します。有効なJSONでないテキストはNULLになり、配列はテキストとして出力されます。
Split(split) 列または行に分割し、列数はワークフローの実行のたびにデータから読み取られます。

次の式関数は、Savantの結果に従います。

関数 動作
DATE_DIFF 週と四半期はSavantと同じ方法で数えます。
PAD 対象の幅より長い値は切り詰めません。
テキストに対する+ テキストを連結します。型が宣言されていないソースの列は数値として読み取られるため、+は加算になり、その旨がノートに記載されます。
行への分割 空の要素も行として保持します。
並べ替えなしのLAST 行が到着した順序での最後の行を返します。ウェアハウスはその順序を保証しないというノートが付きます。
JOIN_STR 小数は、末尾のゼロ埋めなしで、Savantが書き込むとおりに結合します。
JSON_FORMAT JSONを整形して出力します。Snowflakeでは、JSONを1行にコンパクトに書き込みます。
JSON_SET Savantのキーの順序を保持します。
GREATESTとLEAST NULLの引数をスキップします。結果がNULLになるのは、すべての引数がNULLの場合のみです。
ROUNDUP 次の整数ステップに切り上げるため、負の数はゼロに向かって丸められます。-1.5は-1になります。ROUNDDOWNは変わりません。
DURING_DAYLIGHT_SAVINGとDURING_STANDARD NULLを入力するとNULLが出力されます。
日付形式を指定したTO_TEXT 形式トークンをSavantと同じように読み取ります。YYYY、w、uはISOの週年、週、曜日で、ゾーンまたは時代を表す文字はUTC時刻の場合と同じように書き込まれます。
TO_TEXTと数値からテキストへの出力 12.0000000000ではなく、12のようなプレーンな数値を書き込みます。
数値パターンを指定したTO_TEXT JavaのDecimalFormatと同じように、偶数への丸め(バンカーズラウンディング)で整形します。##0.##E0のような指数パターンも含まれます。
TO_TEXTと、行ごとの形式による日付解析 形式を各行から読み取ります。
小数秒、狭い月、週ベースの日付トークン 変換されます。週トークンはISO週として読み取られます。
2桁の年(yy、y) 現在の年から80年前〜20年後の範囲で読み取られます。
REGEX_MATCH 部分一致です。パターンはテキスト全体ではなく、テキストのどこかに一致します。

TO_TEXTと日付形式は、Text Functionステップで変換されます。式がなく、コンパイル済みステップのみを持つ編集は、それらのステップを順に適用し、それぞれが次のステップに渡すものとして変換され、変換レポートに想定した順序が記載されます。Savant自体が失敗するもの、または変換するものがないものについては、コンバーターが名前を挙げて拒否し、ステップはプレースホルダーになります。対象は、TransformまたはFilterの式内にある単純な集計関数またはウィンドウ関数(計算またはSummarize内では変換されます)、md5またはsha1以外のリテラルのアルゴリズムを指定したHASH、PlaidCloudが読み取れない正規表現の構文(文字クラス内の文字クラス、文字クラスの積集合、未知の\p{}プロパティ)、式もコンパイル済みステップもないTransformの編集(プロンプトだけを持つCopilotの編集など)、XPath 1.0ではないXMLパス、認証情報を伴い行のフィールドからホストを取得するAPIリクエストです。それぞれの理由は、Savant変換マトリックスに記載されています。

式関数は、sha1、NOT_TRUE、LEVENSHTEIN、夏時間関数(DST)、n番目の一致を取る正規表現関数でも変換されます。DAY_OF_WEEKは日曜日を7として数え、DAY_NAMEは曜日の名前を返します。

レスポンスには変換レポートが含まれます。レポートには、高、中、低の信頼度で変換されたステップ数と変換されなかったステップ数の概要、警告、および他のノードに吸収されたノードが記載されます。ワークフローを実行する前に読んでください。すべてのプレースホルダー、バインドされていないソースと一致しなかったバインド、使用されたテーブルのプレフィックスが記載されています。

未変換の構成のプレースホルダー

Section titled “未変換の構成のプレースホルダー”

コンバーターが再現できない構成は、エージェントの名前を持つプレースホルダーステップとして作成され、変換レポートにその名前が記載されます。プレースホルダーは、コンバーターが名前を挙げて拒否する構成(Savant変換マトリックスを参照)や、API構成がないなど、エクスポートが十分に記述していない構成に対して作成されます。デフォルトでは、プレースホルダーはワークフローがそこに到達した時点で失敗します。そのため、実際には行われていない処理について、実行が成功と報告されることはありません。

allow_unconverted_placeholdersをtrueに設定すると、各プレースホルダーが代わりにパススルーステップとしてインポートされます。この場合、実行はそのステップを越えて続行し、プレースホルダーの出力はその入力になります。その結果が重要な場合は、ネイティブステップでその機能を作り直してください。

  1. プロジェクト内の新しいワークフローを開きます。
  2. Savantのパラメーターから作成されたプロジェクト変数を設定します。
  3. バインドされていないソースのファイルを、レポートに記載されたパスにアップロードします。
  4. ワークフローを実行し、各ステップの出力テーブルを確認します。

ここに挙げるのは、Savantとの既知の相違点のすべてです。変換レポートでは、該当するものがそれぞれ示されます。

  • 日付形式。 [、]、'、\、^のリテラルを含む形式のTO_DATEまたはTO_DATETIMEは、テキストを9999-12-30または9999-12-31として読み取る場合に、ウェアハウスが保持する最後のタイムスタンプを超えてしまい、レポートに警告が出ます。
  • シークレットパラメーター。 名前にシークレットを示す語が含まれる、または値が認証情報のように見えるパラメーターは、設計上、値が空白のプロジェクト変数になります。変数に値を設定してください。
  • 宣言されていないパラメーター。 ノードが使用していてもエクスポートで宣言されていないパラメーターは、空の値を持つプロジェクト変数として取り込まれます。
  • Snowflake での JSON_FORMAT。 JSONを1行にコンパクトに書き込みます。
  • 行の順序。 並べ替えられたParquet、Googleスプレッドシート、Tableau、テーブルのターゲットは行の順序を保持しません。
  • GoogleスプレッドシートとTableau。 どちらに公開する場合も、destination_bindingsでアカウントをバインドする必要があります。