ワークフローの最適化
最適化は、高度なワークフローを確認し、実行を高速化するための変更を提案します。何かが実行される前にすべての変更を確認でき、必要なものを選択でき、あとから結果を元に戻すこともできます。
最適化は高度な(DAG)ワークフローで動作します。標準ワークフローの場合は、先に高度なワークフローに変換… を選択してください。高度なワークフローを参照してください。
ワークフローを最適化する
Section titled “ワークフローを最適化する”- ワークフローリストで、高度なワークフローを右クリックし、最適化… を選択します。ワークフローが実行中または一時停止中でないこと、および書き込みアクセス権があることが必要です。
- ワークフローの最適化ウィンドウに、34ステップ → 30ステップ · 12ステップを並列実行可能のような見出しが表示されます。ワークフローに実行履歴がある場合は、1回の実行あたり約11秒高速化も表示されます。
- 見出しの下には変更ごとに1行が表示されます。各行には、チェックボックス、対象のステップ、ワークフローにとっての意味、短縮される時間(実時間での実行時間の変化として測定)が含まれます。すべてチェックされています。不要なものはチェックを外してください。
- 最適化できませんリストには、最適化の対象外としたステップと、それぞれの具体的な理由が表示されます。ステップを最適化できない理由を参照してください。
- N件の変更を適用を選択します。
ワークフローに改善できる点が残っていない場合は、ウィンドウにその旨が表示されます。
2種類の変更
Section titled “2種類の変更”データリネージから依存関係を再構築する
Section titled “データリネージから依存関係を再構築する”最適化は、各ステップが読み取るテーブルと書き込むテーブルを調べ、ステップが使用するテーブルを扱うステップだけを待つように接続を引き直します。テーブルを共有しないステップは並列に実行されます。
- ステップは無関係なステップを待たなくなるため、無関係なステップが失敗しても停止しなくなります。失敗は新しい依存関係に沿って波及します。
- ここから実行のような、ステップ範囲を指定した部分実行は、新しい依存関係に従います。
- 同時に実行されるステップの数には、引き続きサーバーによる上限があります。
- テーブルを名前またはパスで指定するステップも、テーブルIDを使用するステップと同じように解釈されます。名前は、プロジェクト内のちょうど1つのテーブルに一致する必要があります。複数のテーブルに一致する名前、変数を使用する参照、別のプロジェクトのテーブルは追跡できません。
- 無効なステップには順序が設定されることはなく、並列実行できるステップの数にも含まれません。
- スケジュールまたは別のワークフローがこのワークフローのステップ範囲を実行している間は、最適化はこの変更を含めません。
抽出ステップの連鎖を1つにマージする
Section titled “抽出ステップの連鎖を1つにマージする”Extract Data ステップの連鎖(各ステップが直前のステップの書き込んだテーブルを読み取る)は、最初のソースを読み取り、最後の結果を書き込む1つのステップになります。
マージは、適用する前に検証されます。最適化は、元のステップとマージ後のステップを現在のデータに対して一時的なスクラッチテーブルへ実行し、2つの結果を行単位で比較します。両者が同一の場合にのみマージを適用します。検証中に、ワークフローとそのテーブルが変更されることはありません。
- 名前の変更に続くフィルター(たとえば Select ステップに続くフィルター)は、1つのステップにマージできます。
- 連鎖全体をマージできない場合、最適化はマージ可能な最長の部分を提案します。
- マージされた連鎖の途中にあるテーブルは、ワークフローから書き込まれなくなります。削除はされずに保持され、変更内容にそのテーブル名が示されます。
- 結果が異なる、または検証できないマージは適用されず、結果にその理由が表示されます。マージには、データを持つソーステーブルが必要です。
ステップを最適化できない理由
Section titled “ステップを最適化できない理由”最適化できませんの各行には、それぞれの原因が示されます。
| 原因 | 意味 |
|---|---|
| 集計 | ステップが行を集計するため、隣接するステップに組み込めません。 |
| フィルターが2つ | フィルターを2つ含む連鎖は、1つのステップにできません。 |
| 丸められる可能性のある浮動小数点のフィルター | マージすると通過する行が変わる可能性があるため、フィルターはそのままになります。 |
| ユーザーコードを実行するステップ | 式やスクリプトなどのステップは、同等であることを検証できません。 |
| 複数のステップが読み取るテーブル | 連鎖の途中にあるテーブルが、ほかの場所で必要とされています。 |
| 無効なステップ | 無効なステップはマージされず、順序も設定されません。 |
| 実行コンテナーのメンバー | 実行コンテナー内のステップは、1つの単位として実行されます。 |
| 行数を取得できない | ソーステーブルの行数をリアルタイムでも読み取れないため、検証用にマージの規模を見積もれません。 |
| テーブルを特定できない | ステップのテーブル名が、どのテーブルにも一致しない、または複数に一致する、変数を使用している、あるいは別のプロジェクトを指しています。 |
| 行レベルセキュリティまたはサイズが大きすぎる | テーブルが行レベルセキュリティで管理されているか、自動で検証するには大きすぎます。 |
キャンバス上でステップをグループ化するだけのビジュアルコンテナーは、マージの妨げになりません。マージによってコンテナーからステップが削除される場合は、マージされたステップがその場所に入り、空になったコンテナーは削除されます。元に戻すと、レイアウトは正確に復元されます。
進行状況を確認する
Section titled “進行状況を確認する”適用すると、ワークフローを最適化中にフェーズが表示されます。検証中(6回中3回目の実行)…、結果を比較中…、適用中… の順です。完了すると、結果には適用済みの内容(各マージが検証された行数を含む)と、未適用の内容(それぞれの理由付き)が一覧表示されます。
最適化が検証している間にワークフローが変更された場合、影響を受けた変更はスキップされ、ウィンドウにその件数が表示されます。適用に失敗した場合、ワークフローは変更前の状態に復元されます。
変更のコミット中に開始された実行は、破棄されるのではなく、しばらく遅延されます。
最適化を元に戻す
Section titled “最適化を元に戻す”ワークフローを右クリックして最適化を元に戻す… を選択するか、結果の最適化を元に戻すを使用します。確認すると、ワークフローのステップ、設定、レイアウトが最適化前の状態に戻ります。それ以降にワークフローに加えた変更は失われます。
元に戻すには復元ポイントが必要ですが、すべてのテナントで利用できるわけではありません。復元ポイントのないテナントでは、最適化を適用できません。
APIとAIアシスタントによる最適化
Section titled “APIとAIアシスタントによる最適化”最適化は、REST APIと、AIアシスタント向けの workflow_optimize ツールからも利用でき、プレビュー、適用、元に戻す手順は同じです。