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

【第192回】 送信ログのクエリにプリヘッダーを組み合わせる方法

    Nobuyuki Watanabe

    前回の記事で紹介したクエリを用いることで、「送信ログ」と「データビュー」を通して、以下の項目を各購読者の送信ジョブごとに取得できるようになりました。

    ・ ジョブ ID
    ・ 購読者キー
    ・ 送信日
    ・ メールアドレス
    ・ メールドメイン
    ・ 現在の購読者ステータス
    ・ メール名
    ・ メールの件名
    ・ ジャーニーアクティビティ名
    ・ ジャーニー名
    ・ ジャーニーバージョン番号

    このクエリは非常に便利なものなので、再度紹介します。

    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 ヶ月などに短縮することを検討してください。

    🚀 プリヘッダーの取得方法

    しかし、このクエリでは「Preheader(プリヘッダー)」が取得できていません。なぜなら、JOB のデータビューには「EmailSubject(メール件名)」は存在するものの、プリヘッダーが存在しないためです。

    ここでカスタムでプリヘッダーを取得したい場合は、Intelligence Reports の Reports 機能を使用して取得しましょう。以下に簡単な手順を示します。

    1.  Intelligence Reports の Reports を開き、Rows のフィールドに「Email Job ID」と「Email Pre Header」を設定します。

    2.  CSV 形式で SFTP にエクスポートします。

    3.  エクスポートしたデータをデータエクステンションにインポートします。

    4.  インポートしたデータエクステンションとデータビューをクエリすることで、プリヘッダーを取得できます。

    それでは、実際にこの手順で Intelligence Reports の操作を行ってみます。


    🚀 Intelligence Reports の操作

    まず、Intelligence Reports の Reports の新規作成画面にアクセスします。

    画像

    まずは、レポート名を決めて、Export Format を CSV に設定します。Time Period は取得期間の範囲ですが、デフォルトが過去 30 日分ですので、こちらは必要に応じて調整して下さい。あとは Dimension の箇所に「Email Job ID」と「Email Pre Header」を設定します。

    画像

    続いて、Advanced Report Settings をクリックして、CSV ファイル名を設定してください。ここに Preheader と入力すれば、毎回 Preheader.csv が生成され、上書きで更新されます。Headers のチェックは必ず外してください。余計なヘッダーが付いてしまい、取り込みの時に邪魔になります。

    画像

    続いて、レポートを日次でスケジュール化して、SFTP に自動的にエクスポートします。Report Scheduling の Active にチェックを入れてください。Delivery Hour はデフォルトで 午前 0 時が入力されていますので、今回は、一旦そのままで設定します。SFTP 情報を入力してください。Import ディレクトリを設定する場合は「/Import」とし、頭の「/」は削除しないようにしてください。

    すべての設定が完了したら、Add As New Scheduler をクリックします。

    画像

    これでスケジュールがセットされました。それでは試しに、Save & Run ボタンをクリックして、設定を保存しながら、一回実行(Run)してみます。

    画像

    一回実行が開始され、Status の部分がぐるぐる回ります。

    画像

    その後、Success と表示されれば、Import ディレクトリにエクスポートが完了しています。

    画像

    SFTP に CSV ファイルがエクスポートされているのを確認しました。

    画像

    それでは、次に格納用のデータエクステンションを作成します。Email Job ID(数字型)、Email Pre Header(テキスト型:4,000字)という項目名を作成して、インポートを実行してみます。

    画像

    インポートは、差分更新となりますので「追加と更新」で実行して下さい。

    画像

    インポートの実行後、Email Pre Header がジョブ ID ごとに取得できました。

    画像

    最後にプリヘッダーを含んだクエリを実行してみます。

    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],
        Preheader.[Email Pre Header] COLLATE Japanese_CS_AS_KS_WS AS [PreHeader],
        _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  /* replace SendLog_Name with your SendLog DE name */
    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
    LEFT JOIN Preheader 
        ON SendLog.JobID = Preheader.[Email Job ID]
    
    WHERE DATEDIFF(MM, _Sent.EventDate, GETDATE()) <= 6

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

    以下の通り、プリヘッダーが取得できました。成功です。

    画像

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

    実は、Intelligence Reports でしか取得できない項目も多く存在します。今回は、Intelligence Reports の Reports 機能の説明も交えながら紹介しました。一度、どのような項目が取得できるのかに関しては、確認しておくことをオススメします。ヘルプドキュメントにその一覧が掲載されています。

    さて、今回の設定についてですが、一度、オートメーションを設定してしまえば、自動的にプリヘッダーが差分更新されて行きますが、注意点として、Intelligence Reports で新規分のデータが生成されるタイミングは 1 日 1 回の不定期であり、標準レポートや Email Studio のトラッキングのようにリアルタイムに近い形にはなっていません。よって、必ずしも「前日分のプリヘッダー」が取得できているとは限りませんので、その点は注意して下さい。 

    今回以上です。


    次の記事はこちら

    前回の記事はこちら

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

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