メインコンテンツへスキップ
見出し画像
Photo bynkgw045

【第191回】 dataviews.io に 送信ログテンプレートが追加

    Nobuyuki Watanabe

    私の記事でも何度か紹介した Salesforce MVP ズザンナ・ヤルチンスカさんが制作・運営している Marketing Cloud アプリ「dataviews.io」に、送信ログテンプレートが追加されました。

    これまではデータビューのみの表示でしたが、この新機能によりさらに強力なツールへと進化しています。

    ■ 送信ログ テンプレート

    送信ログテンプレートが、データビューと同様に表示できるようになりました。画面上部の「Display SendLog Templates」スイッチをオンにするだけで、簡単に送信ログテンプレートが表示されます。

    ■ 送信ログ が クエリジェネレーター で利用可能に

    送信ログもクエリジェネレーターで利用可能になりました。これにより、送信ログを購読者データビューやジャーニーデータビューと結合して、SQL クエリを自動生成することができます。

    ※クエリを使用する際は、送信ログDE名(SendLog_Name)を、ご自身の送信ログDE名に置き換えてください。

    クエリジェネレーターの使い方

    クエリジェネレーターは、大多数のデータビューの右上にあるチェックボックスを選択し、右上の「Generate Query」ボタンをクリックすることで、簡単にクエリを結合し、生成できる便利な機能です。

    画像

    試しに SendLog、Subscribers、Sent、Job、Journey、Journey Activity の 6 つにチェックを入れて「Generate Query」ボタンをクリックしてみます。

    すると「クエリがクリップボードに保存されました」と表示されますので、貼り付けてみます。すると、以下のように自動的に連結されたクエリが表示されるわけですね。これが クエリジェネレーター 機能です。

    SELECT
        SendLog.JobID,
        SendLog.ListID,
        SendLog.BatchID,
        SendLog.SubID,
        SendLog.TriggeredSendID,
        SendLog.ErrorCode,
        _Sent.AccountID,
        _Sent.OYBAccountID,
        _Sent.SubscriberID,
        _Sent.SubscriberKey,
        _Sent.EventDate AS SentEventDate,
        _Sent.Domain,
        _Sent.TriggererSendDefinitionObjectID,
        _Sent.TriggeredSendCustomerKey,
        _Subscribers.DateUndeliverable,
        _Subscribers.DateJoined,
        _Subscribers.DateUnsubscribed AS SubscribersDateUnsubscribed,
        _Subscribers.EmailAddress,
        _Subscribers.BounceCount,
        _Subscribers.SubscriberType AS SubscribersSubscriberType,
        _Subscribers.Status AS SubscribersStatus,
        _Subscribers.Locale,
        _Job.AccountUserID,
        _Job.EmailID,
        _Job.FromName,
        _Job.FromEmail,
        _Job.SchedTime,
        _Job.PickupTime,
        _Job.DeliveredTime,
        _Job.EventID,
        _Job.IsMultipart,
        _Job.JobType,
        _Job.JobStatus,
        _Job.ModifiedBy,
        _Job.ModifiedDate,
        _Job.EmailName,
        _Job.EmailSubject,
        _Job.IsWrapped,
        _Job.TestEmailAddr,
        _Job.Category,
        _Job.BccEmail,
        _Job.OriginalSchedTime,
        _Job.CreatedDate AS JobCreatedDate,
        _Job.CharacterSet,
        _Job.IPAddress,
        _Job.SalesForceTotalSubscriberCount,
        _Job.SalesForceErrorSubscriberCount,
        _Job.SendType,
        _Job.DynamicEmailSubject,
        _Job.SuppressTracking,
        _Job.SendClassificationType,
        _Job.SendClassification,
        _Job.ResolveLinksWithCurrentData,
        _Job.EmailSendDefinition,
        _Job.DeduplicateByEmail,
        _JourneyActivity.VersionID,
        _JourneyActivity.ActivityID,
        _JourneyActivity.ActivityName,
        _JourneyActivity.ActivityExternalKey,
        _JourneyActivity.JourneyActivityObjectID,
        _JourneyActivity.ActivityType,
        _Journey.JourneyID,
        _Journey.JourneyName,
        _Journey.VersionNumber,
        _Journey.CreatedDate AS JourneyCreatedDate,
        _Journey.LastPublishedDate,
        _Journey.JourneyStatus
    FROM [SendLog_Name] AS SendLog
    LEFT JOIN _Sent 
        ON SendLog.JobID = _Sent.JobID 
        AND SendLog.ListID = _Sent.ListID 
        AND SendLog.BatchID = _Sent.BatchID
        AND SendLog.SubID = _Sent.SubscriberID
    LEFT JOIN _Subscribers 
        ON SendLog.SubID = _Subscribers.SubscriberID
    LEFT JOIN _Job 
        ON SendLog.JobID = _Job.JobID
    LEFT JOIN _JourneyActivity 
        ON SendLog.TriggeredSendID = _JourneyActivity.JourneyActivityObjectID
    LEFT JOIN _Journey 
        ON _JourneyActivity.VersionID = _Journey.VersionID

    これらをすべて実行すると、逆に使いづらいので、ある程度必要そうなデータに絞って Query Studio で実行してみます。

    SELECT
        SendLog.JobID,
        _Sent.SubscriberKey,
        _Sent.EventDate AS SentEventDate,
        _Subscribers.EmailAddress,
        _Sent.Domain,
        _Subscribers.Status AS SubscribersStatus,
        _Job.EmailName,
        _Job.EmailSubject,
        _JourneyActivity.ActivityName,
        _Journey.JourneyName,
        _Journey.VersionNumber
    
    FROM [SendLog_Name] AS SendLog
    LEFT JOIN _Sent 
        ON SendLog.JobID = _Sent.JobID 
        AND SendLog.ListID = _Sent.ListID 
        AND SendLog.BatchID = _Sent.BatchID
        AND SendLog.SubID = _Sent.SubscriberID
    LEFT JOIN _Subscribers 
        ON SendLog.SubID = _Subscribers.SubscriberID
    LEFT JOIN _Job 
        ON SendLog.JobID = _Job.JobID
    LEFT JOIN _JourneyActivity 
        ON SendLog.TriggeredSendID = _JourneyActivity.JourneyActivityObjectID
    LEFT JOIN _Journey 
        ON _JourneyActivity.VersionID = _Journey.VersionID
    
    WHERE DATEDIFF(MM, _Sent.EventDate, GETDATE()) <= 6

    ・「SendLog_Name」の部分は、皆さんの環境に合わせて 送信ログの名前 に変更してください。
    ・6 ヶ月分のデータが重たくタイムアウトする場合は、期間を 1 ヶ月などに短縮することを検討してください。

    すると、以下のように 送信ログ の JobID から購読者情報や、メール情報、ジャーニー情報を引っ張ってこれるわけですね。

    画像

    ・ データビューの保存期間は最大でも 6 ヶ月のため、上のサンプルクエリのように 6 ヶ月以内に絞ってクエリを実行することをお勧めします。
    ・ 上のクエリで表示されるメールアドレスは、現在、すべての購読者に登録されているメールアドレスが表示されます。配信当時のメールアドレスを表示するには 送信ログ で配信当時のメールアドレスを保持している必要があります。

    こちらは重要なクエリなので、日本語表記対応やシステム時間に対して 15 時間プラスしたものも以下に記載しておきます。

    SELECT
        SendLog.JobID,
        _Sent.SubscriberKey,
        DATEADD(hh, 15, _Sent.EventDate) AS SentEventDate,
        _Subscribers.EmailAddress,
        _Sent.Domain,
        _Subscribers.Status AS SubscribersStatus,
        _Job.EmailName COLLATE Japanese_CS_AS_KS_WS AS [EmailName],
        _Job.EmailSubject COLLATE Japanese_CS_AS_KS_WS AS [EmailSubject],
        _JourneyActivity.ActivityName COLLATE Japanese_CS_AS_KS_WS AS [ActivityName],
        _Journey.JourneyName COLLATE Japanese_CS_AS_KS_WS AS [JourneyName],
        _Journey.VersionNumber
    
    FROM [SendLog_Name] AS SendLog
    LEFT JOIN _Sent 
        ON SendLog.JobID = _Sent.JobID 
        AND SendLog.ListID = _Sent.ListID 
        AND SendLog.BatchID = _Sent.BatchID
        AND SendLog.SubID = _Sent.SubscriberID
    LEFT JOIN _Subscribers 
        ON SendLog.SubID = _Subscribers.SubscriberID
    LEFT JOIN _Job 
        ON SendLog.JobID = _Job.JobID
    LEFT JOIN _JourneyActivity 
        ON SendLog.TriggeredSendID = _JourneyActivity.JourneyActivityObjectID
    LEFT JOIN _Journey 
        ON _JourneyActivity.VersionID = _Journey.VersionID
    
    WHERE DATEDIFF(MM, _Sent.EventDate, GETDATE()) <= 6

    ・「SendLog_Name」の部分は、皆さんの環境に合わせて 送信ログの名前 に変更してください。
    ・6 ヶ月分のデータが重たくタイムアウトする場合は、期間を 1 ヶ月などに短縮することを検討してください。

    おまけ ①:メールアクティビティの ActivityID を指定する場合(※ WHERE に追加してください。)

    AND _JourneyActivity.ActivityID = '****************'

    おまけ ②:メールアクティビティの TriggeredSendCustomerKey を指定する場合(※ WHERE に追加してください。)

    AND _Job.TriggeredSendCustomerKey = '******'

    いかがでしたでしょうか。

    さすが Salesforce MVP の仕事!って感じですよね。無料でこの機能を提供し続けているのは本当に素晴らしいことだと思います。今後もアップデートがかかるとのことですので、期待して待ちましょう。

    今回は以上です。


    前回の記事はこちら

    私の note のトップページはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資格に関する実践的な情報を発信しています。これらの記事が、皆さまの学習や日々の業務に少しでもお役に立てば幸いです。