コンテンツにスキップ

ワークフローの最適化

最適化は、高度なワークフローを確認し、実行を高速化するための変更を提案します。何かが実行される前にすべての変更を確認でき、必要なものを選択でき、あとから結果を元に戻すこともできます。

最適化は高度な(DAG)ワークフローで動作します。標準ワークフローの場合は、先に高度なワークフローに変換… を選択してください。高度なワークフローを参照してください。

  1. ワークフローリストで、高度なワークフローを右クリックし、最適化… を選択します。ワークフローが実行中または一時停止中でないこと、および書き込みアクセス権があることが必要です。
  2. ワークフローの最適化ウィンドウに、34ステップ → 30ステップ · 12ステップを並列実行可能のような見出しが表示されます。ワークフローに実行履歴がある場合は、1回の実行あたり約11秒高速化も表示されます。
  3. 見出しの下には変更ごとに1行が表示されます。各行には、チェックボックス、対象のステップ、ワークフローにとっての意味、短縮される時間(実時間での実行時間の変化として測定)が含まれます。すべてチェックされています。不要なものはチェックを外してください。
  4. 最適化できませんリストには、最適化の対象外としたステップと、それぞれの具体的な理由が表示されます。ステップを最適化できない理由を参照してください。
  5. N件の変更を適用を選択します。

ワークフローに改善できる点が残っていない場合は、ウィンドウにその旨が表示されます。

データリネージから依存関係を再構築する

Section titled “データリネージから依存関係を再構築する”

最適化は、各ステップが読み取るテーブルと書き込むテーブルを調べ、ステップが使用するテーブルを扱うステップだけを待つように接続を引き直します。テーブルを共有しないステップは並列に実行されます。

  • ステップは無関係なステップを待たなくなるため、無関係なステップが失敗しても停止しなくなります。失敗は新しい依存関係に沿って波及します。
  • ここから実行のような、ステップ範囲を指定した部分実行は、新しい依存関係に従います。
  • 同時に実行されるステップの数には、引き続きサーバーによる上限があります。
  • テーブルを名前またはパスで指定するステップも、テーブルIDを使用するステップと同じように解釈されます。名前は、プロジェクト内のちょうど1つのテーブルに一致する必要があります。複数のテーブルに一致する名前、変数を使用する参照、別のプロジェクトのテーブルは追跡できません。
  • 無効なステップには順序が設定されることはなく、並列実行できるステップの数にも含まれません。
  • スケジュールまたは別のワークフローがこのワークフローのステップ範囲を実行している間は、最適化はこの変更を含めません。

抽出ステップの連鎖を1つにマージする

Section titled “抽出ステップの連鎖を1つにマージする”

Extract Data ステップの連鎖(各ステップが直前のステップの書き込んだテーブルを読み取る)は、最初のソースを読み取り、最後の結果を書き込む1つのステップになります。

マージは、適用する前に検証されます。最適化は、元のステップとマージ後のステップを現在のデータに対して一時的なスクラッチテーブルへ実行し、2つの結果を行単位で比較します。両者が同一の場合にのみマージを適用します。検証中に、ワークフローとそのテーブルが変更されることはありません。

  • 名前の変更に続くフィルター(たとえば Select ステップに続くフィルター)は、1つのステップにマージできます。
  • 連鎖全体をマージできない場合、最適化はマージ可能な最長の部分を提案します。
  • マージされた連鎖の途中にあるテーブルは、ワークフローから書き込まれなくなります。削除はされずに保持され、変更内容にそのテーブル名が示されます。
  • 結果が異なる、または検証できないマージは適用されず、結果にその理由が表示されます。マージには、データを持つソーステーブルが必要です。

ステップを最適化できない理由

Section titled “ステップを最適化できない理由”

最適化できませんの各行には、それぞれの原因が示されます。

原因 意味
集計 ステップが行を集計するため、隣接するステップに組み込めません。
フィルターが2つ フィルターを2つ含む連鎖は、1つのステップにできません。
丸められる可能性のある浮動小数点のフィルター マージすると通過する行が変わる可能性があるため、フィルターはそのままになります。
ユーザーコードを実行するステップ 式やスクリプトなどのステップは、同等であることを検証できません。
複数のステップが読み取るテーブル 連鎖の途中にあるテーブルが、ほかの場所で必要とされています。
無効なステップ 無効なステップはマージされず、順序も設定されません。
実行コンテナーのメンバー 実行コンテナー内のステップは、1つの単位として実行されます。
行数を取得できない ソーステーブルの行数をリアルタイムでも読み取れないため、検証用にマージの規模を見積もれません。
テーブルを特定できない ステップのテーブル名が、どのテーブルにも一致しない、または複数に一致する、変数を使用している、あるいは別のプロジェクトを指しています。
行レベルセキュリティまたはサイズが大きすぎる テーブルが行レベルセキュリティで管理されているか、自動で検証するには大きすぎます。

キャンバス上でステップをグループ化するだけのビジュアルコンテナーは、マージの妨げになりません。マージによってコンテナーからステップが削除される場合は、マージされたステップがその場所に入り、空になったコンテナーは削除されます。元に戻すと、レイアウトは正確に復元されます。

適用すると、ワークフローを最適化中にフェーズが表示されます。検証中(6回中3回目の実行)…、結果を比較中…、適用中… の順です。完了すると、結果には適用済みの内容(各マージが検証された行数を含む)と、未適用の内容(それぞれの理由付き)が一覧表示されます。

最適化が検証している間にワークフローが変更された場合、影響を受けた変更はスキップされ、ウィンドウにその件数が表示されます。適用に失敗した場合、ワークフローは変更前の状態に復元されます。

変更のコミット中に開始された実行は、破棄されるのではなく、しばらく遅延されます。

ワークフローを右クリックして最適化を元に戻す… を選択するか、結果の最適化を元に戻すを使用します。確認すると、ワークフローのステップ、設定、レイアウトが最適化前の状態に戻ります。それ以降にワークフローに加えた変更は失われます。

元に戻すには復元ポイントが必要ですが、すべてのテナントで利用できるわけではありません。復元ポイントのないテナントでは、最適化を適用できません。

APIとAIアシスタントによる最適化

Section titled “APIとAIアシスタントによる最適化”

最適化は、REST APIと、AIアシスタント向けの workflow_optimize ツールからも利用でき、プレビュー、適用、元に戻す手順は同じです。