Snowflakeデータソースについて
この記事では、SnowflakeデータをTealiumにインポートする方法について説明します。
SnowflakeデータソースはEarly Access中であり、選ばれた顧客のみが利用可能です。この機能を試してみたい場合は、Tealiumサポート担当者に連絡してください。
要件
この機能には以下が必要です:
- Tealium EventStreamまたはTealium AudienceStream
- Snowflakeアカウント
USAGE
権限を持つSnowflakeロールとユーザータイプはLEGACY_SERVICE
です。
詳細については、認証を参照してください。
動作方法
Snowflakeデータソースを使用して、Snowflakeテーブルまたはビューからほぼリアルタイムの速度で大量データをインポートします。インポートされたデータは変換され、Tealiumの属性にマッピングされ、ターゲットアクティベーションのためのエンリッチメントされたオーディエンスを作成するために使用できます。
始めるには、Snowflakeテーブルまたはビューごとに1つのSnowflakeデータソースを作成し、データセットのためのクエリモードとSQLのWHERE
句をカスタマイズします。次に、データベースの列をTealiumの属性にマッピングします。Snowflakeソースからインポートされた各行はTealiumでイベントとして処理されます。
プロファイルごとに最大10個のクラウドデータウェアハウスデータソースを有効にすることができます。
認証
キーペア
RSAキーペアを使用して接続を認証するには、Tealiumが暗号化されていないキーを生成できます。この生成された公開キーは、SnowflakeテーブルまたはビューにアクセスするSnowflakeユーザーに割り当てる必要があります。
セキュリティ要件に基づいて、RSA-2048、RSA-3072、またはRSA-4096のキーアルゴリズムから選択できます。
キーが生成された後、公開キーのファイルをダウンロードし、Snowflakeユーザーにキーを割り当てます。ユーザーの公開キーが正しく割り当てられたことを確認する必要がある場合は、キーのフィンガープリントも提供されます。
詳細については、Snowflakeデータソースの管理を参照してください。
シングルファクターパスワード(レガシー)
このオプションは新しい接続には利用できず、このタイプの接続を持つ既存の顧客のみがサポートされています。
基本的なユーザー名とパスワードを使用して接続を認証するには、この統合のために特別にサービスユーザーを作成します。サービスユーザーはSnowflakeユーザーオブジェクトでTYPE = SERVICE
またはLEGACY_SERVICE
と宣言されます。これらのタイプのユーザーはSnowflake MFAポリシーの対象ではありません。
詳細については、Snowflake: シングルファクター認証をブロックする段階的アプローチを参照してください。
サービスユーザーを作成するためのSQLコマンドの例は次のとおりです:
CREATE USER my_legacy_service_user
COMMENT = 'Tealiumに接続するためのサービスユーザー'
PASSWORD = 'YOUR_LONG_PASSWORD_HERE'
DISABLED = FALSE
MUST_CHANGE_PASSWORD = FALSE
TYPE = LEGACY_SERVICE;
GRANT ROLE TEALIUM_READER TO USER my_legacy_service_user;
SHOW USERS;
レート制限
Snowflakeからのインポートは通常、アカウントごとに秒間500イベントに制限されていますが、変動する場合があります。標準の属性サイズ制限も適用されます。詳細については、属性について > サイズ制限を参照してください。
バッチサイズ
Snowflakeデータソースはデータをバッチでインポートし、バッチあたりの最大行数は1,000行です。この動作は、クエリモードを選択する際に考慮することが重要です。
Snowflakeテーブル
各Snowflakeデータソースは、一つのSnowflakeテーブルまたはビューからデータをインポートすることをサポートしています。複数のSnowflakeテーブルからデータをインポートするには、Snowflakeでビューを作成し、データソース構成でそのビューを選択します。Snowflakeのビューについての詳細は、Snowflake: ビューの概要を参照してください。
データタイプ
Snowflakeデータソースは、すべてのSnowflakeデータタイプをサポートしています。データが正しくインポートされるように、次のガイドラインに従ってSnowflakeデータタイプをマッピングしてください:
Snowflake | Tealium |
---|---|
数値データタイプ | 数値属性 |
文字列およびバイナリデータタイプ | 文字列属性 |
論理データタイプ | ブール属性 |
日付および時間データタイプ | 日付属性 |
配列 | 文字列の配列、数値の配列、またはブールの配列 |
オブジェクト、バリアント、地理、ジオメトリ、ベクターデータタイプ | 文字列属性 |
Snowflakeデータタイプについての詳細は、Snowflake: データタイプの概要を参照してください。
イベント
デフォルトのTealium データ収集の操作順序では、Snowflakeデータソースからのイベントはイベント受信ステップの前に処理され、操作の順序は変更されません。
Snowflakeデータソースのイベントは、他のデータソースからのイベントと同様にEventStreamおよびAudienceStreamに送信されますが、次の重要な例外があります:
- ブラウザ固有の属性:ユーザーエージェントなどのブラウザ固有の属性は入力されません。
- エンリッチメント:AudienceStreamの事前読み込み属性に対するエンリッチメントは実行されませんが、「最初の訪問」属性を除きます。
- 関数:データ変換関数は実行されません。
- シングルページ訪問:受信イベントはシングルページ訪問/訪問の基準から除外されます。他のデータソースからのシングルページ訪問および訪問はAudienceStreamに保持されません。詳細については、AudienceStreamでのシングルページ訪問はどのように処理されますか? (Tealiumログインが必要)を参照してください。
- 訪問の長さ:Snowflakeデータソースイベントによって開始された訪問は60秒間続きます。
- 訪問IDマッピング:Snowflakeデータソース構成でAudienceStream訪問ID属性をマッピングする場合、訪問IDは選択した列の値に直接構成され、追加のエンリッチメントは必要ありません。
クエリモード
Snowflakeデータソースは、Snowflakeテーブルまたはビューからデータをインポートする方法を制御するために、3つのクエリモードをサポートしています。各モードはタイムスタンプ列、インクリメント列、またはその両方を使用して、インポートする行を決定します。
列の要件
クエリモードを効果的に使用するためには、次のいずれかが必要です:
- タイムスタンプ列
行が追加または変更されたときに現在の時間に構成されるタイムスタンプ列。この列は次のいずれかのSnowflakeデータタイプでなければなりません:TIMESTAMP_LTZ
,TIMESTAMP_TZ
, またはTIMESTAMP_NTZ
。
詳細については、Snowflake: 日付&時間を参照してください。 - インクリメント列
追加される行ごとに値が増加する数値列。自動インクリメント列の推奨定義は次のとおりです:詳細については、Snowflake: 数値データタイプを参照してください。COL1 NUMBER AUTOINCREMENT START 1 INCREMENT 1
利用可能なクエリモード
使用事例の要件に合わせてモードを選択します。これらのモードの動作例については、クエリモードの例を参照してください。
タイムスタンプ + インクリメント(推奨)
このモードは、タイムスタンプ列とインクリメント列の両方を使用して、新規または変更された行をインポートします。次の条件を満たす行がインポートされます:
- 前回のインポートより新しいタイムスタンプがある場合、および/または
- 最後にインポートされた行よりも大きいインクリメント値がある場合。
このモードは、すべての行が意図した通りにインポートされることを最も確実に保証します。
タイムスタンプ
このモードはタイムスタンプ列を使用して、新規または更新された行をインポートします。前回のインポートより新しいタイムスタンプがある行がインポートされます。
テーブルに挿入または更新操作ごとにタイムスタンプ列が構成されている場合、このモードを使用します。
ただし、同じタイムスタンプを持つ行の数がバッチサイズを超える場合、一部の行はインポートされない可能性があることに注意してください。
インクリメント
このモードは、インクリメント列を使用して行をインポートします。前回のインポートからの最大値よりも大きいインクリメント値を持つ行がインポートされます。前回のインポートからの最大値以下のインクリメント値を持つ行はスキップされます。このモードは、既存の行の変更を検出しません。
テーブルにタイムスタンプ列がない場合は、このモードを使用してください。
自動インクリメント列を使用するのではなく、自分でインクリメント列を管理する場合は、値が常に増加するようにしてください。
クエリモードの例
次の例は、行のバッチ処理とクエリモードがどのように連携するかを示しています。以下の表では、modification_time
がタイムスタンプ列で、customer_id
がインクリメント列です。
customer_id |
modification_time |
customer_segment |
---|---|---|
1 |
01Apr 13:00 |
A |
2 |
01Apr 13:00 |
B |
… | … | … |
1000 |
01Apr 13:00 |
D |
1001 |
01Apr 13:00 |
E |
1002 |
02Apr 14:00 |
A |
Snowflakeデータソースは、一度に1,000行のデータを取得し、バッチデータからタイムスタンプおよび/またはインクリメント列の最大値をマークします。
- タイムスタンプ + インクリメント モードを使用する場合: データソースは1-1000行を取得します。次にデータソースがデータを取得する際には、
modification_time
が01Apr 13:00
でcustomer_id
が1000
より大きい行、またはmodification_time
が01Apr 13:00
より大きい行を探します。 - インクリメント モードを使用する場合: データソースは1-1000行を取得し、
1000
の最大インクリメント値をマークします。次のインポートでは、最初のインポート以降に変更された場合でも、1-1000行はスキップされます。例のcustomer_id
をインクリメントする新しい行のみが処理されます。 - タイムスタンプ モード (
modification_time
が例) を使用する場合: データソースは1-1000行を取得し、01Apr 13:00
の最大タイムスタンプをマークします。次のインポートでは、01Apr 13:00
より大きいタイムスタンプの行がインポートされます。この場合、1001
行は同じタイムスタンプ値であるため、前回のデータバッチで取得されたためスキップされます。
SQLクエリ
Snowflakeデータソースのクエリ構成で、Tealiumにインポートしたい列を選択します。処理の追加条件を使用するには、SQLのWHERE
句を使用します。このオプションはクエリにWHERE
文を追加します。WHERE
文は基本的なSQL構文をサポートします。
WHERE
句は複数のテーブルからのサブクエリをサポートしていません。複数のSnowflakeテーブルからデータをインポートするには、Snowflakeでビューを作成し、データソース構成でビューを選択します。詳細については、Snowflake: ビューの概要を参照してください。
列マッピング
列マッピング構成は、Snowflakeテーブルの各列に対応するイベント属性を決定します。
列名はしばしばCustomer Data Hubの属性名と異なるため、このマッピングはデータが適切にインポートされることを保証します。たとえば、テーブルにはpostalCode
という列があるかもしれませんが、対応するイベント属性はcustomer_zip
という名前ですので、それらを関連付けるマッピングが必要です。
SnowflakeデータタイプをTealiumデータタイプにマッピングする情報については、データタイプセクションを参照してください。
訪問IDマッピング
インポートされたデータがウェブ、モバイル、またはHTTP APIなどの他のソースと繋がるようにするために、Snowflakeテーブルの各行に一意の訪問IDの列があることを確認してください。その後、訪問ID列と対応するイベント属性を訪問ID属性(AudienceStreamでの訪問識別のための一意の属性タイプ)にマッピングします。マッピングされたイベント属性の値はtealium_visitor_id
属性に割り当てられ、既存の訪問プロファイルに直接マッチします。
AudienceStreamでの訪問IDマッピングについての詳細は、Tealiumデータソースを使用した訪問識別を参照してください。
許可するIPアドレス
Snowflakeアカウントに厳格なシステム要求ルールがある場合は、TealiumのIPアドレスをSnowflakeの許可リストに追加してください。
最終更新日 :: 2025年April月29日