見出し画像

【第238回】 Data Cloud : Date 型と DateTime 型における設定のポイント

本記事は、以前に「Data Cloud:Marketing Cloud 連携 TIPS まとめ」で書きましたが、非常に重要な内容を含んでいますので、単独の記事にしました。これを機に Date 型と DateTime 型に関して、理解を深めましょう。


Data Cloud を活用する上で、特に注意が必要なデータ型は何でしょうか?

私が最も重要だと考えるのは Date 型DateTime 型 です。これらはデータのインポートやマッピングの精度に直結するだけでなく、日常的な運用や分析結果の正確性にも大きな影響を与えます。そのため、設定の際には細心の注意が欠かせません。

今回は、この Date 型DateTime 型 を扱う上で押さえておきたいポイントを整理しました。ぜひ参考にしてください。



1. DMO 標準項目とのマッピング要件

Data Cloud の標準オブジェクトである Individual DMO(データモデルオブジェクト) には、Birth Date(誕生日)などの日付項目が含まれています。ただし、これら一部の項目は Date 型ではなく DateTime 型でのみマッピング可能 であり、Date 型では対応できません。

そのため、データストリームの設定時にインポートするファイルの日付データが自動的に Date 型 と判定された場合でも、DateTime 型 に変更する必要があります。

Tips:DLO(データレイクオブジェクト)と DMO(データモデルオブジェクト)のマッピングで、型の違いが許されるのは唯一、数値型の DLO 項目をテキスト型の DMO 項目に対応付ける場合のみです。


2. Date ⇔ DateTime 型の変更時の注意点

Date 型と DateTime 型を切り替える際の最大のポイントは、Data Cloud が自動判定したフォーマット(書式)をそのまま使うことです。

  • 例:Date 型 → DateTime 型
    自動判定が Date 型「MM/dd/yyyy」だった場合、DateTime 型に変更する際も「MM/dd/yyyy」を指定します。

  • 例:DateTime 型 → Date 型
    自動判定が DateTime 型「MM/dd/yyyy HH:mm:ss ZZZ」だった場合、Date 型に変更する際も「MM/dd/yyyy HH:mm:ss ZZZ」を指定します。

一見、DateTime 型の場合は「時分秒」まで必ず入力しなければならないと考えがちですが、不要です。自動判定されたフォーマットをそのまま利用することが推奨されています。

Tips:インポート後には、実際に「時分秒」まで正しく取り込まれているか確認しましょう。もし取り込みに不備がある場合は、「日時パターンの文字列」(例:MM、dd など)を見直し、フォーマットを調整してください。

参考:Date および DateTime の書式のヘルプドキュメント


3. Salesforce 製品間のフォーマットの違い

Salesforce CRM の Date 型の項目は、Date 型で自動判定され、DateTime 型の項目は、DateTime 型で自動判定されます。一方で、Marketing Cloud の Date  型は、すべて DateTime 型で自動判定される点に注意が必要です

Tips:Marketing Cloud の場合、Datetime 型として自動判定された場合であっても、その項目の用途に応じては Date 型に変更した方が良い場合があります。その場合は、適切に変更してください。


4. DateTime 型のタイムゾーン変換

日付データがインポートされる時、Date 型は「固定値」として扱われますが、DateTime 型は「タイムゾーン変換」の対象となります。

まず、DateTime 型のデータは、データ内にタイムゾーンの値を持っていない場合は、UTC タイムゾーンとしてインポートされます(← 重要)

次に「タイムゾーン変換」とは、DateTime 型の項目が Data Cloud で設定されている組織のタイムゾーンに影響を受け、変更されることを指します。

影響を受けるとは、具体的に言いますと、Data Cloud に設定されている組織のタイムゾーンが JST(日本標準時)の場合、UTC タイムゾーン から JST タイムゾーン に変更されて、画面に表示されるということです

少し分かりづらいので、以下の 2 つの処理に分けて考えてみましょう。

処理 ①:UTC タイムゾーンでインポートされる時
処理 ②:タイムゾーン変換が行われる時


処理 ①:UTC タイムゾーンでインポートされる時

※ 現在の組織のタイムゾーンが JST(日本標準時)の場合を例にします。

  • Marketing Cloud データ:Marketing Cloud のローカルタイムは CST です。CST と UTC の差は 6 時間のため、+ 6 時間されて UTC でインポートされます

  • Salesforce CRM データ JST と UTC の差は 9 時間のため、- 9 時間されて UTC でインポートされます

  • Salesforce CRM データの例外:元が  Date 型の項目を DateTime 型に変更してインポートする場合でも「固定値」でインポートになりますので、± 0 時間となり、- 9 時間とはなりません

  • Cloud Storage データ:UTC でそのままの値がインポートされます。この場合は、± 0時間のまま UTC でインポートされます

これは、まだタイムゾーン変換前の状態ですが、この時点でかなり複雑ですね。次に、タイムゾーン変換後に移ります。


処理 ②:タイムゾーン変換が行われる時

  • Marketing Cloud の DateTime データは、+ 6 時間されて UTC でインポートされました。その後、UTC から JST に「タイムゾーン変換」されることで、+ 9 時間されますので、合計 + 15 時間されて画面表示 となります。

■ インポートデータ: + 6 時間
■ 画面表示データ:+ 15 時間(JST 環境の場合)

  • Salesforce CRM の DateTime データは、CRM 組織のタイムゾーンが JST の場合、まず - 9 時間されて、UTC でインポートされました。その後、UTC から JST に「タイムゾーン変換」されることで、+ 9 時間されますので、画面表示としては ± 0 時間 となります。

■ インポートデータ: - 9 時間(JST 環境の場合)
■ 画面表示データ:± 0時間

  • また先ほど、Salesforce CRM には例外があることをお伝えしました。Birth Date への対応のために、元が Date 型である項目を DateTime 型にするような場合です。このような元が Date 型である場合は、「固定値」でインポートされるので - 9 時間されませんがタイムゾーン変換はされますので、画面表示としては + 9 時間 となります。

■ インポートデータ: ± 0 時間
■ 画面表示データ:+ 9時間(JST 環境の場合)

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、+ 9 時間されて表示されます。

■ インポートデータ: ± 0 時間
■ 画面表示データ:+ 9時間(JST 環境の場合)

いかがでしたでしょうか。かなり混乱しますよね。

ちなみに、上の画面表示は Data Explorer の表示の例です。実は、使うツールによっても、表示内容が変わってきます。次項で説明します。


5. 各種ツールごとの表示内容の違い

※ 現在の組織のタイムゾーンが JST(日本標準時)の場合を例にします。

① Data Explorer

前項で説明した通り、Data Explorer においては、DateTime 型の日付は、UTC タイムゾーンのまま表示されずに、「タイムゾーン変換」後の値が画面に表示されます。

  • Marketing Cloud の DateTime データは +15 時間されて表示されます。

Salesforce CRM に関しては以下の通りです。

  • DateTime ⇒ DateTime そのままの場合は、± 0 時間です。

  • Date ⇒ DateTime に変更している場合は、+ 9 時間です。

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、+9 時間されて表示されます。

Tips:「秒 以下の値」に関しては、画面上の表示は省略されますが、データとしては引き続き保持されています。「秒 以下の値」を持っている場合、フィルター機能を使用する場合、正しく抽出できない場合があります。

② Profile Explorer

Profile Explorer においても、DateTime 型の日付は、UTC タイムゾーンのまま表示されずに、「タイムゾーン変換」後の値が画面に表示されます。

  • Marketing Cloud の DateTime データは +15 時間されて表示されます。

Salesforce CRM に関しては以下の通りです。

  • DateTime ⇒ DateTime そのままの場合は、± 0 時間です。

  • Date ⇒ DateTime に変更している場合は、+ 9 時間です。

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、+9 時間されて表示されます。

③ Reports

Reports に関しても、DateTime 型の日付は、UTC タイムゾーンのまま表示されずに、「タイムゾーン変換」後の値が画面に表示されている ことが分かります。

  • Marketing Cloud の DateTime データは +15 時間されて表示されます。

Salesforce CRM に関しては以下の通りです。

  • DateTime ⇒ DateTime そのままの場合は、± 0 時間です。

  • Date ⇒ DateTime に変更している場合は、+ 9 時間です。

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、+9 時間されて表示されます。

Tips:「秒 以下の値」に関しては、画面上の表示は省略されますが、データとしては引き続き保持されています。「秒 以下の値」を持っている場合、フィルター機能を使用する場合、正しく抽出できない場合があります。

④ Query Editor

これまで ①②③ とも「タイムゾーン変換」後の値が使用されていました。ここで、いよいよ ①②③ とは異なるものが登場します。Query Editor においては、DateTime 型の日付は「タイムゾーン変換」前の値(UTC タイムゾーン)を使用します

  • Marketing Cloud の DateTime データは +6 時間されて表示されます。

Salesforce CRM のデータは、2 つに分かれます。

  • DateTime ⇒ DateTime そのままの場合は、- 9 時間です。

  • Date ⇒ DateTime に変更している場合は、± 0時間です。

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、± 0 のそのままの値で表示されます。

Tips:Query Editor の WHERE 句で DateTime 型の日付をフィルターする場合は、この Query Editor で表示された「タイムゾーン変換」前の値に対して、実行する必要がありますが、もし DateTime 型のデータをクエリする場合は、以下の形式を参考にしてください。

WHERE "date__c" = cast('2025-01-21 02:15:48' as timestamp(1))

⑤ Segments

さて、この Segments においては、実際に配信データを作成するという重要な場面だと思いますので、しっかりと把握しておく必要があります。

結論から言うと、①②③ と同じグループで、「タイムゾーン変換」後の値を使用します。但し、DateTime の「時分秒」の部分は省略され、使用できません。つまり、00:00:00 AM から 23:59:59 PM の間 を取得する仕様です

Tips:タイムゾーンの変換の結果、日付を跨いでしまった場合、実際にデータソースにあった日付とは異なった日付になる可能性があります。

Marketing Cloud:2025-02-22 10:00:00 というデータがあるとします。これは、Data Cloud では、+ 15 時間されますので 2025-02-23 01:00:00 です。つまり、Segments では、2025/2/22 ではなく、2025/2/23 で抽出されます。

解決策:必要に応じて「数式項目」を作成するなどしてください。

  • Marketing Cloud の DateTime データは +15 時間 されたもののが使用されます

Salesforce CRM に関しては以下の通りです。

  • DateTime ⇒ DateTime そのままの場合は、± 0 時間 されたもののが使用されます

  • Date ⇒ DateTime に変更している場合は、+ 9 時間 されたもののが使用されます

  • Cloud Storage(Amazon S3 や Google Cloud Storage)の DateTime データは、データの値にタイムゾーンの値を持たない場合、+9 時間 されたもののが使用されます。


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

Date 型と DateTime 型の扱いは、Data Cloud を活用するうえで非常に重要です。特に、データを取り込む際のフォーマットやタイムゾーンのズレに注意し、運用や分析に影響を与えないよう適切に管理しましょう。特に、フォーマットを間違えて入力すると、その後、正しくデータを取り込めませんので、必ず自動判定されたものを活用してください。

これらは、少しややこしく感じるかもしれませんが、今後さまざまなコネクタを使用してデータを取り込む際には、DateTime のデータにどの程度のズレが生じているかを必ず確認することが重要です。

これらの注意点を習慣化することで、正確なデータ管理と安定した運用を実現できます。ぜひ実践してみてください。

最後に、「タイムゾーン変換」の内容が取り散らかってしまったので、その部分だけ、まとめて記載しておきます。

Marketing Cloud
■ インポートデータ: + 6 時間
■ 画面表示データ:+ 15 時間(JST 環境の場合)

Salesforce CRM(DateTime型 ⇒ DateTime型)
■ インポートデータ: - 9 時間(JST 環境の場合)
■ 画面表示データ:± 0時間

Salesforce CRM(Date 型 ⇒ DateTime型)
■ インポートデータ: ± 0 時間
■ 画面表示データ:+ 9時間(JST 環境の場合)

Cloud Storage(Amazon S3 や Google Cloud Storage)
■ インポートデータ: ± 0 時間
■ 画面表示データ:+ 9時間(JST 環境の場合)

タイムゾーン変換後 の DateTime を使用するツール
■ Data Explorer
■ Profile Explorer
■ Reports
■ Segments

タイムゾーン変換前 の
DateTime を使用するツール
■ Query Editor

今回は以上です。


Click here for English version

次の記事はこちら

前回の記事はこちら

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