メむンコンテンツぞスキップ
芋出し画像
Photo bypeishum

【第174回】 Marketing Cloud SQL 超入門2- Dataview の䜿甚、日付関数

    Nobuyuki Watanabe

    前の蚘事では、Markeitng Cloud SQL の基本ず SELECT、FROM、WHERE に぀いお孊習したした。

    そこでは Marketing Cloud で SQL を䜿甚する目的に぀いお觊れたした。以䞋のような事䟋に沿っお孊習するず良いずいう話でしたね。

    ① デヌタ゚クステンション内のデヌタを調査したい
    ② デヌタビュヌを䜿甚しお、゚ンゲヌゞ関䞎した顧客を知りたい
    ③ デヌタビュヌを掻甚しお、別の配信リストを䜜りたい
    ④ 2 ぀以䞊のデヌタ゚クステンションを組み合わせお、別のデヌタ゚クステンションを䜜成したい

    そしお、① に぀いおは孊習枈みですので、今回は ②「デヌタビュヌを䜿甚しお、゚ンゲヌゞ関䞎した顧客を知りたい」に぀いお孊習したす。


    ■ Dataviewデヌタビュヌずは

    デヌタビュヌずは、Marketing Cloud の暙準機胜で、珟時点の賌読者の情報メヌルアドレスや賌読者ステヌタス、ゞャヌニヌ情報ゞャヌニヌ名やアクティビティ名、たた、各連絡先の送信・開封・クリック・バりンス・賌読取り消しなどの履歎が自動的に保存されるシステムデヌタテヌブルのこずです。

    珟時点の賌読者の情報やゞャヌニヌ情報などに぀いおは保存期限はありたせんが、各連絡先の送信・開封・クリック・バりンス・賌読取り消しなどの履歎に぀いおは、6 か月間ずいう保存期限があり、その期間を過ぎたデヌタに関しおは、自動的に削陀されたす。

    ■ Dataview の Help ペヌゞはこちら

    たた、前の蚘事でも玹介したしたが、Salesforce MVP のズザンナ・ダルチンスカさんが䜜成しおくれた「dataviews.io」ずいうサむトがずおも䟿利ですので、ブックマヌクに入れおおきたしょう。「Display details」ずいうボタンを抌せば、各項目の説明も分かりたす。


    ■ ゚ンゲヌゞ関䞎した顧客を知る

    たず、゚ンゲヌゞ関䞎した顧客を知る方法ずしおは、Email Studio のトラッキングから確認ができたす。

    画像

    䜆し、ここでは階局的に深いペヌゞたで探っおいかないず、そのデヌタが取埗できないのず、それらをすぐに配信リストずしお掻甚するこずが難しい点で、むマむチ䜿いづらい感じがありたす。

    そこで SQL ずデヌタビュヌを掻甚しおみたす。たず、以䞋の 5 ぀のデヌタビュヌを確認したしょう。

    ① 送信 ・・・ _Sent
    ② 開封 ・・・ _Open
    ③ クリック ・・・ _Click
    ④ バりンス ・・・ _Bounce
    â‘€ 賌読取り消し ・・・ _Unsubscribe

    ※ 最倧 6 ヶ月分のデヌタのみ保存されたす。
    ※ デヌタヌビュヌ名は、倧文字・小文字は区別されたせん。

    デヌタビュヌでは、アンダヌスコア _ プレフィックスを付ける必芁がありたす。このアンダヌスコア _ が付いおいるこずで、通垞のデヌタ゚クステンションずの区別を付けおいたす。

    前述の通り、゚ンゲヌゞメントデヌタは、自動的に 6 ヶ月分のデヌタが保存されたすので、以䞋のように、条件を䜕も指定しないで取埗した堎合は、最倧枠期間での 6 ヶ月分のデヌタがすべお取埗されたす。

    SELECT SubscriberKey, EventDate
    FROM _Sent

    実際、Query Studio で詊しおみたすず、䞋図の通り、6 ヶ月分のアカりントから送信されたすべおの送信履歎が取埗できたした。しかし、実際の運甚で䜿甚する堎合では「どのメヌルから送信されたものであるか」の条件で指定しおあげる必芁がありそうです。

    画像

    どのメヌルから送信されたかを知るには、以䞋の項目を䜿甚したす。

    ■ Email Studio 送信の堎合JobID を䜿甚
    ■ Journey Builder 送信の堎合TriggeredSendCustomerkey を䜿甚

    ※ 今回玹介しおいる 5 ぀のデヌタビュヌうち、_Unsubscribe に関しおは、TriggeredSendCustomerkey の項目が存圚しないので、JobID を䜿甚しお取埗するこずになりたす。

    さお、それでは JobID や TriggeredSendCustomerkey の倀は、どこで取埗できるかに぀いおですが、これらは、䞡方ずもトラッキングの画面から取埗できたす。

    ■ JobID の衚瀺堎所

    JobID ずは「メヌル送信ごずに付䞎される ID」のこずです。Email Studio 送信の堎合は、以䞋のトラッキングの画面から取埗できたす。

    画像

    SQL ク゚リで JobID を指定する堎合、以䞋の通り、WHERE で指定したす。

    SELECT SubscriberKey, EventDate
    FROM _Sent
    WHERE JobID = '284295'
    
    ※ ID は数字型のため、クォヌテヌションは付けおも付けなくおもどちらでも問題ありたせん。

    これで、このメヌル配信の賌読者キヌ顧客 IDが取埗できたしたね。

    画像

    ■ TriggeredSendCustomerkey の堎所

    Journey Builder 送信でも JobID は存圚しおいたすが、Email Studio 送信の堎合ず仕組みが少し異なり、そのメヌルアクティビティ䞊のメヌルコンテンツの内容が倉わるたで、同じ JobID が䜿甚されたす。

    この「メヌルコンテンツの内容が倉わるたで」ずは、䟋えば、
    ① 同じゞャヌニヌのバヌゞョン内でメヌルコンテンツの線集を行ったり
    ② 実行䞭のゞャヌニヌを新しいバヌゞョンに倉えおアクティブ化した堎合
    に JobID が倉曎ずなりたす
    。

    この時、メヌルコンテンツの線集をしただけで JobID が倉曎されるこずは、ナヌザヌにずっお䞍本意であるこずが倚いため、このケヌスでは、JobID ではなく、TriggeredSendCustomerkey を䜿甚したす。

    この TriggeredSendCustomerkey も、Email Studio のトラッキング画面から取埗できたす。以䞋の通り、Journey Builder Sends の トラッキングレポヌトにおいお、External Key ず衚瀺されおいる箇所になりたす。

    画像

    SQL ク゚リで TriggeredSendCustomerkey を指定する堎合も、以䞋の通り、WHERE で指定したす。

    SELECT SubscriberKey, EventDate
    FROM _Sent
    WHERE TriggeredSendCustomerkey = '84505'
    
    ※ Key は数字型のため、クォヌテヌションは付けおも付けなくおもどちらでも問題ありたせん。

    これで、このゞャヌニヌのメヌルアクティビティで配信された賌読者キヌが取埗できたしたね。

    画像

    ちなみに TriggeredSendCustomerkeyは、ゞャヌニヌビルダヌのメヌルアクティビティ䞊からも探すこずができたす。Journey Builder のメヌルアクティビティを開いお、アクティビティ・サマリヌに移動したら、䞀番䞋にある「詳现オプション」の箇所に衚瀺されおいたす。

    画像

    さお、これで、基本的なデヌタビュヌぞのアクセス方法が孊べたしたね。ここで取埗できた゚ンゲヌゞメントデヌタを䜿っお、メヌルアドレスを持った配信リストに転化する方法に぀いおは、SQL を孊ぶ目的の ③「デヌタビュヌを掻甚しお、別の配信リストを䜜りたい」ぞ繋がりたすので、たた次回の蚘事で曞いおみたいず思いたす。

    それでは、今回の蚘事では、最埌に SQL の日付関数に぀いお觊れおおきたいず思いたす。


    ■ SQL の日付関数

    ① DATEADD日時の加算

    実は、先ほどから デヌタビュヌで取埗しおいる EventDate送信日、開封日、クリック日などは、15 時間前CST タむムゟヌンの時間で取埗されおいたす。぀たり、日本時間でデヌタを取埗するは 15 時間を足しおあげる必芁がありたす。

    この時間の加算は、すべおの日付項目に察しお行う必芁はありたせん。通垞のデヌタ゚クステンションに栌玍されおいる日付デヌタは、すでに、日本時間で衚蚘されおいるず思いたすので 15 時間プラスの䜜業は䞍芁です。

    䞻に芚えおおくべきは、以䞋の 2 ぀に぀いおです。これらを「システム時間」ず呌んだりしたす。

    ■ デヌタビュヌの EventDate ・・・ 送信日、開封日、クリック日など
    ■ GETDATE() ・・・ 珟圚の日時を返す関数

    この 2 ぀に察しおは、15 時間プラスするず芚えおおいおください。これらがすべおではありたせんが、この 2 ぀が頻出したす。

    䜙談になりたすが、Marketing Cloud Connect で DateTime 型で連携されおいる項目も、Salesforce CRM 偎で衚瀺されおいる時間に察しお、15 時間マむナスで連携されたす。これらを Marketing Cloud で䜿甚するには、15 時間プラスする必芁がありたす。※ Date 型の堎合は問題になりたせん。

    ■ Marketing Cloud Connect における 日付型ず日付時間型の扱いに぀いお

    さお、この 15 時間をプラスするには、DATEADD() ずいう関数を䜿いたす。

    ※ DATEADD() を䜿甚する際は、以䞋のように AS を䜿甚しお「゚むリアス」別名を付けおください。

    DATEADD(hh, 15, EventDate) AS [EventDate]
    DATEADD(hh, 15, GETDATE()) AS [GetDate]

    ここでは「匕数」ずいう関数に倀を枡すための情報のようなものを ( ) 内にカンマ区切りで蚘茉するのですが、以䞋のような圢ずなりたす。

    DATEADD(①加算する時間の単䜍,②加算する数字,③どの項目に加算するか)

    ① の「加算する時間の単䜍」に関しおは、曞き方はいく぀かありたすが、䞀旊以䞋で芚えおみおください。

    ■ 幎 ・・・ yyyy
    ■ 月 ・・・ mm
    ■ 日 ・・・ dd
    ■ 時 ・・・ hh

    これで日時の補正ができるようになりたした。

    SELECT SubscriberKey
    , DATEADD(hh, 15, EventDate) AS [EventDate]
    FROM _Sent
    WHERE JobID = '284295'

    ② CONVERT日時の時間郚分の䞞め

    続いお玹介するのが、時間の䞞め䜜業です。この「時間の䞞め」ずは、日時のデヌタから時間のデヌタを切り捚おお、日付のみのデヌタにするこずだず思っおください。

    デヌタビュヌの EventDate や GETDATE() 関数で取埗される珟圚の日時には、時間のデヌタが含たれたす。Marketing Cloud においおは、この時間のデヌタは、あたり良い意味を持ちたせん。そのため、時間のデヌタを切り捚おおしたうこずが掚奚されたす。

    もし「時間の䞞め」を行っおいない堎合、WHERE で EventDate = '2024-06-26' ず指定した堎合は、時間が 0:00 のデヌタしか取埗されおきたせん。

    この時間の䞞め䜜業をするには、CONVERT() ずいう関数を䜿甚したす。匕数は以䞋のような圢です。今回は日付に関連したすので、①は date になりたす。

    CONVERT(①date,②倉換する項目,③日付圢匏)

    泚意点ずしおは、②に぀いおは、①で説明した 15 時間プラスの補正した埌の倀を入れる必芁がありたす。よっお䞋蚘のようになりたす。

    CONVERT(date, DATEADD(hh, 15, EventDate), ③日付圢匏) AS [EventDate]

    ③日付圢匏 に関しおは、様々な日付圢匏があるわけですが、「111」で芚えおください。ちなみに「111」ずは「yyyy/mm/dd」ずいう日付圢匏です。

    よっお、最終的には以䞋の圢になりたす。

    CONVERT(date, DATEADD(hh, 15, EventDate), 111) AS [EventDate]

    Date ず DateTime を䞊べお取埗するず、以䞋のような圢です。

    SELECT SubscriberKey
    , CONVERT(date, DATEADD(hh, 15, EventDate), 111) AS [EventDate]
    , DATEADD(hh, 15, EventDate) AS [EventDateTime]
    FROM _Sent
    WHERE JobID = '284295'
    画像

    ③ DATEDIFF日時の差

    ①② でおおよその凊理はできるようになったかず思いたすが、DATEDIFF() ずいう日時の差を出す関数を知っおおくず䟿利です。

    䟋えば、今日から過去 30 日分のデヌタを取埗する堎合に䜿えたす。

    DATEDIFF(dd, CONVERT(date, DATEADD(hh, 15, EventDate), 111), CONVERT(date, DATEADD(hh, 15, GETDATE()), 111)) <= 30

    DATEDIFF(①調査する時間の単䜍,②開始時間の項目,③終了時間の項目)

    この匕数の ①「調査する時間の単䜍」に関しおも、DATEADD() の時同様、以䞋で芚えおください。

    ■ 幎 ・・・ yyyy
    ■ 月 ・・・ mm
    ■ 日 ・・・ dd
    ■ 時 ・・・ hh

    この DATEDIFF() の時でも、CONVERT() を䜿っお時間を䞞めおおかないず、䞭途半端な時間で日付の範囲が蚭定されおしたいたすので、CONVERT() を入れるようにするこずず、もしシステム時間の日時項目を䜿う堎合は 15 時間プラスしおおくこずも忘れずにお願いしたす。

    それでは、以䞋の SQL ク゚リを実行しおみたす。

    SELECT SubscriberKey
    , CONVERT(date, DATEADD(hh, 15, EventDate), 111) AS [EventDate]
    , DATEADD(hh, 15, EventDate) AS [EventDateTime]
    FROM _Sent
    WHERE DATEDIFF(dd, CONVERT(date, DATEADD(hh, 15, EventDate), 111), CONVERT(date, DATEADD(hh, 15, GETDATE()), 111)) <= 30

    これで過去 30 日間で送信された人を取埗できたした。

    ここで、_Sent の郚分を _Open に倉えれば、過去 30 日間に䜕らかのメヌルを開封した人が取埗できたすし、_Click にすれば、過去 30 日間にクリックした人が取埗できたす。


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

    だいぶ SQL の䜿い方を掎めお来たのではないでしょうか。次の蚘事では、ここで取埗できたデヌタを配信リストに転化する方法に぀いお曞いおみたす。

    今回は以䞊です。


    次の蚘事はこちら

    前回の蚘事はこちら

    私の note のトップペヌゞはこちら

     
     
     
    Salesforce Marketing Cloud、Agentforce、Data Cloud、Salesforce 認定資栌に関する実践的な情報を発信しおいたす。これらの蚘事が、皆さたの孊習や日々の業務に少しでもお圹に立おば幞いです。