---
title: Snowflake ストリーミングコネクタ構成ガイド
description: この記事では、Snowflake ストリーミングコネクタの構成方法について説明します。
url: https://docs.tealium.com/ja/server-side-connectors/snowflake-streaming-connector/
---
## API情報

このコネクタは以下のベンダーSDKを使用しています：

* Snowflake Ingest SDK バージョン：4.4.2

## 動作原理

Snowflake ストリーミングコネクタは、強力なSnowflake Snowpipe Streaming機能を活用して、イベントデータと訪問データをほぼリアルタイムでSnowflakeのステージングテーブルに直接インポートし、10秒未満のデータ遅延で処理と分析のために即座に利用可能にします。データセット全体または特定の属性をステージングテーブルに送信し、ビジネスニーズに合わせたカスタマイズ可能なデータ統合を実現します。

Snowpipe Streamingを使用することで、データのアクセス性と分析能力をSnowflake内で向上させるとともに、遅延とコストを削減します。サードパーティの統合を排除し、Snowpipe Streamingのサーバーレス計算モデルを使用することで、Snowflake ストリーミングコネクタはコスト効率の良い、安全な接続を提供します。

Snowflake ストリーミングコネクタは、以下のようなユースケースを解放します：

* アイデンティティ：クレンジングされた正規化されたリアルタイムのアイデンティティデータを使用して、アイデンティティグラフを作成し、活性化します。
* インサイト：豊富で高品質な統合データを活用して、差別化されたインテリジェンスを向上させ、活性化します。
* AI：リアルタイムデータレイヤーを使用してAIイニシアティブを情報提供し、活性化します。
* 同意：常に顧客のプライバシーと好みを尊重することを確認しながら、インサイトと活性化を保証します。

### ステージングテーブル

Tealiumからデータを受け取ることを目的としたSnowflakeのステージングテーブルには、選択されたコネクタアクションに応じて特定の列が必要です。

**Send Entire Event Data**または**Send Entire Visitor Data**アクションを使用する場合、ステージングテーブルにはデータセットを受け取るための`VARIANT`列とタイムスタンプを受け取るための列が必要です。タイムスタンプ列は送信されるタイムスタンプデータ形式をサポートする必要があります。

**Send Custom Event Data**または**Send Custom Visitor Data**を使用する場合、ステージングテーブルには各データタイプのための列が必要です。各データ属性は列に割り当てられる必要があります。各属性が受け入れられるSnowflakeデータタイプであり、このデータタイプを受け取るために列が適切にフォーマットされていることを確認してください。タイムスタンプをマッピングするには、別のタイムスタンプ列を追加する必要があります。

詳細については、[Snowflake: サポートされているJavaデータタイプ](https://docs.snowflake.com/en/user-guide/data-load-snowpipe-streaming-overview#supported-java-data-types)を参照してください。

### データタイプ

以下の表は、Snowflake ストリーミングコネクタによってサポートされるデータタイプをまとめたものです：

| **Snowflake データタイプ** | **サポート状況** |
| --- | --- |
| 数値データタイプ | ✓ |
| 文字列およびバイナリデータタイプ | ✓ |
| 論理データタイプ |✓ |
| 日付および時間データタイプ | ✓ |
| 配列 | ✓ |
| オブジェクト | ✓ |
| バリアント |✓|
| ベクター | ✗|
| 地理 | ✗|
| 幾何 | ✗ |

### テーブルと列の構成

コネクタは以下のテーブルまたは列の構成をサポートしていません：

* 照合順序が構成された列
* `TRANSIENT`または`TEMPORARY`テーブル
* `AUTOINCREMENT`または`IDENTITY`列構成があるテーブル
* デフォルトの列値が`NULL`でない場合

### 許可するIPアドレス

Snowflakeは、どのシステムからのリクエストを受け入れるかについて厳格なルールを持っています。[Tealium IPアドレス]()をSnowflakeの許可リストに追加してください。


<blockquote>
`us-west-1`およびサーバーサイドプロファイルリージョンのアドレスを許可リストに追加する必要があります。これらのアドレスを許可リストに追加しない場合、データの取得時にエラーが発生することがあります。Tealiumはコネクタ構成中に`us-west-1`のIPアドレスを使用します。
</blockquote>


## ベストプラクティス

Snowflake ストリーミングコネクタのための以下のSnowflakeテーブル構成を推奨します：

* テーブルごとに1つのイベントフィード
* テーブルごとに1つのオーディエンス


<blockquote>
複数のフィードまたはオーディエンスによるテーブルの同時書き込みは、パフォーマンスエラーを引き起こす可能性があります。
</blockquote>


## Snowflake ネイティブアプリ

TealiumはSnowflakeマーケットプレイスで無料のネイティブアプリを提供しています：[Tealium Snowflake Connector](https://app.snowflake.com/marketplace/listing/GZSOZ70FXN/tealium-tealium-snowflake-connector)。

このアプリには、TealiumからSnowflakeへのストリームデータの構成と管理を支援するユーティリティが含まれています。スキーマ、テーブル、ビューの作成など、初期のランディングテーブル構成タスクを自動化します。

ネイティブアプリはオプションであり、このガイドの構成手順を置き換えるものではありません。手動で構成を行うには、以下の指示に従ってください。


<blockquote>
Tealium Snowflakeアプリは現在、訪問ペイロードデータのみを変換します。イベントペイロードデータはサポートされていません。
</blockquote>

## 構成

コネクターマーケットプレイスにアクセスし、新しいコネクターを追加してください。コネクターを追加する一般的な手順については、[コネクターについて](https://docs.tealium.com/about-connectors/)を参照してください。

コネクターを追加した後、以下の構成を構成します：

* **認証タイプ**: 接続の認証タイプを選択します。可能な値は：`Private key` または `Public key`。
* **ユーザー名**: Snowflakeアカウントのユーザー名。`OWNERSHIP` または `INSERT` 権限がデータを受信するSnowflakeテーブルに必要です。
* **ロール**: (オプション) 接続後にロールを切り替える必要がある場合は、アカウントロールを指定します。Tealium Snowflake Connectorネイティブアプリを使用していて、アプリケーションロールが直接ユーザーに付与されている場合は空白のままにします。
* **アカウント識別子**: アカウント識別子は、次の形式でアカウントURLを構築するために使用されます：`ACCOUNT_IDENTIFIER.snowflakecomputing.com`。アカウント識別子にアンダースコアが含まれている場合は、ダッシュ形式を使用します：
    * アンダースコアを含むURL: `https://acme-marketing_test_account.snowflakecomputing.com`
    * ダッシュを含むURL: `https://acme-marketing-test-account.snowflakecomputing.com`
* 私有鍵認証の場合：
    * **Private Key**: 顧客が生成した私有鍵。暗号化された私有鍵と暗号化されていない私有鍵の両方をサポートします。Snowflakeの私有鍵の生成方法については、[Snowflake: キーペア認証およびキーペアローテーション](https://docs.snowflake.com/en/user-guide/key-pair-auth#generate-the-private-key)を参照してください。
<blockquote>
私有鍵が暗号化されている場合は、Private Key Passphraseを提供する必要があります。
</blockquote>

    * **Private Key Passphrase**: 暗号化された私有鍵のパスフレーズ。私有鍵が暗号化されていない場合は値を割り当てないでください。
    * 私有鍵を使用するには：
        1. Snowflakeで公開鍵を生成します。詳細については、[公開鍵の生成](https://docs.snowflake.com/en/user-guide/key-pair-auth#generate-a-public-key)を参照してください。
        1. 上記のユーザーに`ALTER USER`コマンドを使用して公開鍵を割り当てます。ユーザーの所有者またはSECURITYADMINロール以上のユーザーのみがユーザーを変更できます。詳細については、[Snowflakeユーザーに公開鍵を割り当てる](https://docs.snowflake.com/en/user-guide/key-pair-auth#assign-the-public-key-to-a-snowflake-user)を参照してください。
        1. 新しい公開鍵でユーザーを更新するクエリを実行します。
* 公開鍵認証の場合：
    * **Key Algorithm**: キーペアを生成するアルゴリズムを選択し、**Generate**をクリックします。キーのフィンガープリントが以下に表示されます。新しいキーを生成するには、**Regenerate**をクリックします。`RSA-2048`, `RSA-3072`, `RSA-4096`がサポートされています。
    * 公開鍵を使用するには：
        1. **Download Public Key**をクリックして、以下の公開鍵をダウンロードします。
        1. ファイルからキーをコピーします。
        1. Snowflakeインスタンスで次のクエリを実行します：
        ```ALTER USER [your username] SET RSA_PUBLIC_KEY = [your public key from the file].```
        1. **Done**をクリックして新しい接続を作成します。
* **IcebergテーブルのSnowpipeストリーミングを有効にする**: Snowflakeのターゲットテーブルが管理されているIcebergテーブルの場合、このオプションを有効にします。


<blockquote>
Snowflakeは公開鍵と私有鍵のローテーションをサポートしています。詳細については、[キーペアローテーションの構成](https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-rotation)を参照してください。
</blockquote>


## アクション

| アクション名 | AudienceStream | EventStream |
| --- | :---: | :---: |
| カスタムイベントデータの送信 | ✗ | ✓ |
| 全イベントデータの送信 | ✗ | ✓ |
| カスタム訪問データの送信 | ✓ | ✗ |
| 全訪問データの送信 | ✓ | ✗ |
| 全ログイベントの送信 | ✗ | ✓ |
| ログイベントの送信 | ✗ | ✓ |

次のセクションでは、各アクションでサポートされているパラメータをリストアップしています。

### カスタムイベントデータの送信

#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 | データを挿入するテーブルの名前。|
|イベントパラメータ | イベントパラメータをSnowflakeテーブルの列にマッピングします。|

### 全イベントデータの送信

#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 | データを挿入するテーブルの名前。|
| ペイロードを記録する列 | イベントデータを記録するために**VARIANT**列を選択します。|
| タイムスタンプ | タイムスタンプ変数を送信する列を選択します。|
| タイムスタンプ属性 | (オプション) デフォルトでは、コネクタはアクションの現在のタイムスタンプを送信します。異なる形式を送信したい場合は、タイムスタンプとして割り当てる属性を選択します。詳細については、[Snowflake: サポートされているJavaデータタイプ](https://docs.snowflake.com/en/user-guide/data-load-snowpipe-streaming-overview#supported-java-data-types)を参照してください。属性が割り当てられ、空の値が生成された場合、コネクタは現在のタイムスタンプを送信します。 |
| 追加のイベントデータ | 次のパラメータは、Tealium iQおよびEventStreamを使用する場合にのみ利用可能です。<ul><li>**First-party Cookies** - イベントでキャプチャされたファーストパーティクッキー情報を含めます。</li><li>**DOM** - イベントでキャプチャされたDOMデータを含めます。</li><li>**Meta** - イベントでキャプチャされたメタデータを含めます。</li></ul> |

### カスタム訪問データの送信

#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 |データを挿入するテーブルの名前。 |
|訪問パラメータ | 訪問パラメータをSnowflakeテーブルの列にマッピングします。|

### 全訪問データの送信

#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 | データを挿入するテーブルの名前。 |
| 訪問データを記録する列 | 訪問データを記録するために**VARIANT**列を選択します。 |
| 現在の訪問データを含める | このオプションを選択すると、訪問データと現在の訪問データの両方がSnowflakeに送信されるデータに含まれます。 |
| タイムスタンプ | タイムスタンプ変数を送信する列を選択します。|
| タイムスタンプ属性 | (オプション) デフォルトでは、コネクタはアクションの現在のタイムスタンプを送信します。異なる形式を送信したい場合は、タイムスタンプとして割り当てる属性を選択します。詳細については、[Snowflake: サポートされているJavaデータタイプ](https://docs.snowflake.com/en/user-guide/data-load-snowpipe-streaming-overview#supported-java-data-types)を参照してください。属性が割り当てられ、空の値が生成された場合、コネクタは現在のタイムスタンプを送信します。 |
| 訪問データと現在の訪問データを含める | 現在の訪問データを訪問データと一緒に含めるために選択します。 |

### 全ログイベントの送信

#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 | データを挿入するSnowflakeテーブルの名前。 |
| ペイロードを記録する列 | ペイロードを記録する列を選択します。 |
| タイムスタンプを記録する列 | タイムスタンプを記録する列を選択します。 |

### ログイベントの送信
#### パラメータ

| **パラメータ** | **説明** |
| --- | --- |
| データベース名 | 必要なテーブルを含むSnowflakeデータベース。 |
| スキーマ名 | テーブルで使用されるスキーマの名前。 |
| テーブル名 | データが挿入されるSnowflakeテーブルの名前。 |
| ログイベントリソース属性 | テレメトリが記録されるエンティティに関する情報をキャプチャするフィールド。 |
| ログイベントHTTP属性 | ログシステム内のHTTPリクエストとレスポンスを記録するフィールド。`http`配列全体を単一の列にマッピングするには、`http`属性をマッピングします。ターゲット列が**VARIANT**型の場合、生の配列が送信されます。それ以外の場合は文字列に変換されます。 |
| ログイベント結果属性 | 操作の結果を記録するフィールドで、成功したかエラーが発生したかを詳細に説明します。 |
| ログイベントその他の属性 | ログされたイベントに関する追加のメタデータを提供するフィールド。 |

## チャンネルの削除

Tealiumが作成したチャンネルを削除するには、CSV形式でチャンネルのリストを提供します。チャンネルのリストを取得するには、Snowflakeインスタンスで**SHOW CHANNELS**を実行します。Tealiumによって作成されたすべてのチャンネルを削除するには、リストを空白のままにします。

チャンネルを削除するための構成手順は以下の通りです：

1. **Server-Side > Connect > Event Connectors** または **Server-Side > Connect > Audience Connectors** に移動します。
1. Snowflakeコネクタを選択します。
1. **Remote Configuration** の下で **Drop Channel** をクリックします。
1. 次の情報を入力します：  
    * **データベース名**  
        (必須) テーブルのSnowflakeデータベース名。
    * **スキーマ名**  
        (必須) テーブルで使用されるスキーマの名前。
    * **テーブル名**  
        (必須) Snowflakeテーブルの名前。
    * **チャンネル名**  
        削除するSnowflakeチャンネルの名前をCSV形式で。チャンネル名が提供されていない場合、すべてのチャンネルが削除されます。
1. **Drop** をクリックします。

テーブルのリストが大きく、削除に30秒以上かかる場合、チャンネルが削除されなかったという誤ったエラーが発生することがあります。チャンネルが正常に削除されたことを確認するために、Snowflakeインスタンスで **SHOW CHANNELS** を実行することをお勧めします。