[Ultimate]{class="badge positive"}

Snowflake ストリーミングソース

IMPORTANT
  • Snowflake ストリーミングソースは、Real-Time CDP Ultimateを購入したユーザーがAPIで利用できます。

  • Amazon Web Services(AWS)でAdobe Experience Platformを実行する際に、Snowflake ストリーミングソースを使用できるようになりました。 AWS上で動作するExperience Platformは、現在、一部のお客様にご利用いただけます。 サポートされているExperience Platform インフラストラクチャについて詳しくは、Experience Platform マルチクラウドの概要を参照してください。

Adobe Experience Platform を使用すると、データを外部ソースから取得しながら、Experience Platform サービスを使用して、受信データの構造化、ラベル付け、拡張を行うことができます。 アドビのアプリケーション、クラウドベースのストレージ、データベースなど、様々なソースからデータを取り込むことができます。

Experience Platformでは、Snowflake データベースからのストリーミングデータをサポートしています。

Snowflake ストリーミングソースについて

Snowflake ストリーミングソースは、SQL クエリを定期的に実行し、結果セットの各行に出力レコードを作成することで、データを読み込むことで機能します。

Kafka Connectを使用すると、Snowflake ストリーミングソースは、各テーブルから受信した最新のレコードを追跡して、次のイテレーションの正しい場所で開始できるようにします。 ソースは、この機能を使用してデータをフィルタリングし、各反復のテーブルから更新された行のみを取得します。

前提条件

次の節では、Snowflake データベースからExperience Platformにデータをストリーミングする前に完了する必要のある前提条件の手順を概説します。

IP アドレスの許可リスト

ソースをExperience Platformに接続する前に、リージョン固有のIP アドレスをードに追加する必要があります。 詳しくは、Experience PlatformへのIP アドレスの許可リストに加えるに関するガイドを参照してください。

以下のドキュメントでは、APIまたはユーザーインターフェイスを使用してAmazon RedshiftをExperience Platformに接続する方法について説明します。

必要な資格情報の収集

Flow ServiceがSnowflakeと接続するには、次の接続プロパティを指定する必要があります。

基本認証
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2
資格情報 説明
account

Snowflake アカウントの完全なアカウント ID (アカウント名またはアカウント検索ツール)にサフィックス snowflakecomputing.comが追加されています。 アカウント IDは、様々な形式にすることができます。

  • {ORG_NAME}-{ACCOUNT_NAME}.snowflakecomputing.com (例:acme-abc12345.snowflakecomputing.com
  • {ACCOUNT_LOCATOR}.{CLOUD_REGION_ID}.snowflakecomputing.com (例:acme12345.ap-southeast-1.snowflakecomputing.com
  • {ACCOUNT_LOCATOR}.{CLOUD_REGION_ID}.{CLOUD}.snowflakecomputing.com (例:acme12345.east-us-2.azure.snowflakecomputing.com

詳しくは、Snowflake document on account identifiersを参照してください。

warehouse Snowflake ウェアハウスは、アプリケーションのクエリ実行プロセスを管理します。 各Snowflake ウェアハウスは互いに独立しており、Experience Platformにデータを取り込む際に個別にアクセスする必要があります。
database Snowflake データベースには、Experience Platformに取り込むデータが含まれています。
username Snowflake アカウントのユーザー名。
password Snowflake ユーザーアカウントのパスワード。
role (オプション)特定の接続に対してユーザーに提供できるカスタム定義の役割。 指定しない場合、この値はデフォルトでpublicになります。
connectionSpec.id 接続仕様は、ベース接続とソース接続の作成に関連する認証仕様などの、ソースのコネクタプロパティを返します。 Snowflakeの接続仕様IDは51ae16c2-bdad-42fd-9fce-8d5dfddaf140です。
キーペア認証

キーペア認証を使用するには、2048 ビット RSA キーペアを生成し、Snowflake ソースのアカウントを作成する際に次の値を指定する必要があります。

table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
資格情報 説明
account アカウント名は、組織内のアカウントを一意に識別します。 この場合、異なるSnowflake組織のアカウントを一意に識別する必要があります。 これを行うには、アカウント名の前に組織名を付ける必要があります。 例えば、orgname-account_name のようになります。 追加のガイダンスについては、​ アカウント IDの取得 Snowflake に関するガイドを参照してください。 詳しくは、Snowflake ドキュメントを参照してください。
username Snowflake アカウントのユーザー名。
privateKey Snowflake アカウントのBase64- エンコードされた秘密鍵。 暗号化された秘密鍵または暗号化されていない秘密鍵を生成できます。 暗号化された秘密鍵を使用している場合は、Experience Platformに対する認証時に秘密鍵パスフレーズも指定する必要があります。 詳しくは、 Snowflake 秘密鍵🔗の取得に関するガイドを参照してください。
passphrase パスフレーズは、暗号化された秘密鍵で認証する際に使用する必要がある追加のセキュリティレイヤーです。 暗号化されていない秘密鍵を使用している場合は、パスフレーズを指定する必要はありません。
database Experience Platformに取り込むデータを含むSnowflake データベース。
warehouse Snowflake ウェアハウスは、アプリケーションのクエリ実行プロセスを管理します。 各Snowflake ウェアハウスは互いに独立しており、Experience Platformにデータを取り込む際に個別にアクセスする必要があります。

これらの値について詳しくは、Snowflake キーペア認証ガイド ​を参照してください。

アカウント IDの取得 retrieve-your-account-identifier

Experience PlatformでSnowflake インスタンスを認証するには、Snowflake UI ダッシュボードからアカウント IDを取得する必要があります。

アカウント IDを見つけるには、次の手順に従います。

  • Snowflake アプリケーション UI ダッシュボード ​でアカウントに移動します。
  • 左側のナビゲーションで、ヘッダーから「Accounts」、「Active Accounts」の順に選択します。
  • 次に、情報アイコンを選択し、現在のURLのドメイン名を選択してコピーします。

秘密鍵を取得 retrieve-your-private-key

Snowflake接続にキーペア認証を使用する場合は、Experience Platformに接続する前に秘密鍵を生成する必要があります。

暗号化された秘密鍵を作成

暗号化されたSnowflake秘密鍵を生成するには、ターミナルで次のコマンドを実行します。

code language-shell
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8

成功した場合は、PEM形式で秘密鍵を受け取る必要があります。

code language-shell
|-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6T...
|-----END ENCRYPTED PRIVATE KEY-----
暗号化されていない秘密鍵を作成

暗号化されていないSnowflake秘密鍵を生成するには、ターミナルで次のコマンドを実行します。

code language-shell
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt

成功した場合は、PEM形式で秘密鍵を受け取る必要があります。

code language-shell
|-----BEGIN PRIVATE KEY-----
MIIE6T...
|-----END PRIVATE KEY-----

秘密鍵を生成したら、形式や内容に変更を加えずにBase64で直接エンコードします。 エンコードする前に、秘密鍵の末尾に余分なスペースや空白行(末尾の改行を含む)がないことを確認してください。

設定の確認

Snowflake データのソース接続を作成する前に、次の設定を満たしていることを確認する必要があります。

  • 特定のユーザーに割り当てられたデフォルトのウェアハウスは、Experience Platformに対する認証時に入力したウェアハウスと同じである必要があります。
  • 特定のユーザーに割り当てられたデフォルトのロールは、Experience Platformへの認証時に入力したデータベースと同じデータベースにアクセスできる必要があります。

役割とウェアハウスを確認するには:

  • 左側のナビゲーションで「Admin」を選択し、「Users & Roles」を選択します。
  • 適切なユーザーを選択し、右上隅の省略記号(...)を選択します。
  • 表示されるEdit user ウィンドウで、Default Roleに移動して、特定のユーザーに関連付けられている役割を表示します。
  • 同じウィンドウで、Default Warehouseに移動して、特定のユーザーに関連付けられているウェアハウスを表示します。

エンコードが完了したら、そのBase64 エンコードされた秘密鍵をExperience Platformで使用して、Snowflake アカウントを認証できます。

役割の設定 configure-role-settings

ソース接続が関連するSnowflake データベース、スキーマ、テーブルにアクセスできるように、デフォルトの公開役割が割り当てられている場合でも、役割に対する権限を設定する必要があります。 異なるSnowflake エンティティに対する様々な権限は次のとおりです。

Snowflake エンティティ
ロール権限を必要とする
ウェアハウス
運用、利用
データベース
使用状況
スキーマ
使用状況
テーブル
SELECT
NOTE
自動再開と自動休止は、ウェアハウスの詳細設定で有効にする必要があります。

役割と権限管理について詳しくは、Snowflake API リファレンス ​を参照してください。

Unix時間を日付フィールドに変換

Snowflake Streamingは、DATE フィールドを解析し、Unix エポック (1970-01-01)からの日数として書き込みます。 例えば、DATE値が0の場合は1970年1月1日を意味し、値が1の場合は1970年1月2日を意味します。 したがって、Snowflake Streaming ソースでマッピングを作成するファイルを準備する場合は、DATE列が整数で表されていることを確認してください。

​ データ準備データと時間関数を使用して、Unix時間をExperience Platformに取り込むことができる日付フィールドに変換できます。 次に例を示します。

dformat({DATE_COLUMN} * 86400000, "yyyy-MM-dd")

この関数の場合:

  • {DATE_COLUMN}は、エポック日整数を含む日付列です。
  • 86400000を掛けると、エポックな日数がミリ秒に変換されます。
  • 'yyyy-MM-dd’は、目的の日付形式を指定します。

この変換により、日付がデータセットで正しく表されるようになります。

制限事項とよくある質問 limitations-and-frequently-asked-questions

  • Snowflake ソースのデータ スループットは、1秒あたり2000 レコードです。

  • 価格は、倉庫の稼働時間と倉庫の規模によって異なります。 Snowflake ソース統合では、最小サイズのx小さいウェアハウスで十分です。 自動サスペンドを有効にして、使用していないときにウェアハウスが単独でサスペンドできるようにすることをお勧めします。

  • Snowflake ソースは、10秒ごとにデータベースに対して新しいデータをポーリングします。

  • 設定オプション:

    • ソース接続を作成する際に、Snowflake ソースのbackfill ブール値フラグを有効にできます。

      • backfillがtrueに設定されている場合、timestamp.initialの値は0に設定されます。 つまり、タイムスタンプ列が0 エポック時間を超えるデータが取得されます。
      • backfillがfalseに設定されている場合、timestamp.initialの値は–1に設定されます。 つまり、タイムスタンプ列が現在の時間(ソースの取り込みが開始される時間)より大きいデータが取得されます。
    • タイムスタンプ列は、タイプ TIMESTAMP_LTZまたはTIMESTAMP_NTZでフォーマットする必要があります。 タイムスタンプ列がTIMESTAMP_NTZに設定されている場合は、値が格納されている対応するタイムゾーンをtimezoneValue パラメーターを介して渡す必要があります。 指定しない場合、値はデフォルトでUTCになります。

      • TIMESTAMP_TZは、タイムスタンプ列またはマッピングで使用できません。

次の手順

NOTE
ストリーミングデータフローを作成または更新した後、データの損失やデータの削除の可能性のあるインスタンスを防ぐには、データの取り込みを5分間だけ一時停止する必要があります。

次のチュートリアルでは、APIを使用してSnowflake ストリーミングソースをExperience Platformに接続する手順について説明します。

recommendation-more-help
experience-platform-help-sources