【第48回】 20 分以上の処理時間がかかっている SQL クエリを検索する方法
2022 年 10 月の「Winter '23」で新たにリリースされた Automation Studio 用のデータビューは活用できていますか?
Automation Studio 用のデータビュー
・Automation Instance(_AutomationInstance)
・Automation Activity Instance(_AutomationActivityInstance)
このデータビューの登場で、これまで Salesforce のサポートに問い合わせていたような Automation Studio 関連のトラブルが、少しは自分で解決できるようになります。いくつか通常のデータビューとは異なる仕様があるので、簡単にまとめてみます。
■ Automation Instance
テナント内のすべてのオートメーションの全体像を把握し、オートメーションの正常性を確認して、オートメーションの効率と成功率を向上させます。
このデータ ビューで何を知ることができる?
・最近実行されたオートメーション
・オートメーションが実行された時間
・オートメーションの期間
・オートメーションが成功したか、スキップされたか、または失敗したか
・オートメーションが失敗した理由
・ファイルドロップ型のオートメーションの開始に使用したファイル名
使用時の注意点
・過去 31 日間に実行されたオートメーションのみが対象となります。
・データ ビューのスコープは単一のビジネスユニットに限られます
・日付データのタイムゾーンは UTC です。
追記:2024 年 10 月 7 日
こちらの記事は、Winter '25(2024 年 10 月 4 日から 10 月 25 日の間にリリース)のアップデートにより、それまでは、取得できる範囲が「1 日前~ 31 日前」に限られていましたが、「当日分のデータ」を取得できるようになりました。それに合わせて記事を修正しています。
■ Automation Activity Instance
Automation Studio のアクティビティの正常性を確認して、オートメーションの効率と成功率を向上させます。頻繁に失敗したり長時間実行されたりするアクティビティを特定して失敗を防ぎます。
このデータ ビューで何を知ることができる?
・アクティビティが実行された時間
・アクティビティの実行期間
・アクティビティが成功したか失敗したか
・アクティビティが失敗した理由
使用上の注意点
・過去 31 日間に実行されたオートメーションのみが対象となります。
・データ ビューのスコープは単一のビジネスユニットに限られます
・日付データのタイムゾーンは UTC です。
追記:2024 年 10 月 7 日
こちらの記事は、Winter '25(2024 年 10 月 4 日から 10 月 25 日の間にリリース)のアップデートにより、それまでは、取得できる範囲が「1 日前~ 31 日前」に限られていましたが、「当日分のデータ」を取得できるようになりました。それに合わせて記事を修正しています。
※この 2 つのデータビューの使用上の注意点は、どちらのデータビューでも同じ内容ですが、他のデータビューに比べると、少し独特なので、しっかりと理解しておくことが重要です。
さて、この note のタイトルとした「20 分以上の処理時間がかかっている SQL クエリアクティビティを知る方法」に関してですが、以下の SQL を使って Query Studio 上で確認ができます。
この SQL は、すべてデータビュー内のフィールドしか使用していませんので、どのインスタンスでも同じコードで利用できます。お試しください。
SELECT
b.AutomationName COLLATE japanese_cs_as_ks_ws AS [Automation_Name],
b.ActivityInstanceStep AS [Activity_Step],
b.ActivityName COLLATE japanese_cs_as_ks_ws AS [Activity_Name],
DateAdd(hh, 9, b.ActivityInstanceStartTime_UTC) AS [Start_Time],
DateAdd(hh, 9, b.ActivityInstanceEndTime_UTC) AS [End_Time],
b.Duration AS [Duration]
FROM
(
SELECT
a.AutomationName,
a.ActivityInstanceStep,
a.ActivityName,
a.ActivityInstanceStartTime_UTC,
a.ActivityInstanceEndTime_UTC,
DateDiff(Minute, a.ActivityInstanceStartTime_UTC, a.ActivityInstanceEndTime_UTC) AS Duration
FROM
_AutomationActivityInstance a
WHERE
a.ActivityType = 300
) b
WHERE
b.Duration >= 20コード内の ActivityType = 300 とは「クエリアクティビティ」を指していますので、こちらは変更不要です。
最下部の WHERE 句の Duration(期間)が 20 であれば、20 分以上かかっているクエリアクティビティを指します。こちらは、0 分から 30 分の範囲で調整してください。
この SQL は過去 31 日以内に 20 分間を超えたことがある SQL クエリアクティビティを検索します。
最後に
この SQL を使用して、事前に負荷の高い SQL クエリアクティビティを特定し、その処理を分割するなどして、1 つの SQL クエリアクティビティが 30 分のタイムアウトにならないように改善しましょう。レコードが追加・更新されることで、徐々にファイル内のレコード数が増えて行き、それを放置することで、タイムアウトエラーになることもありますので、定期的にチェックして、オートメーションをメンテナンスして行きましょう。

今回は以上です。
