[Ultimate]{class="badge positive"}

Flow Service APIを使用してSnowflake データをExperience Platformにストリーミングします

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

このチュートリアルでは、Flow Service APIを使用して、Snowflake アカウントからAdobe Experience Platformにデータを接続してストリーミングする方法について説明します。

はじめに

このガイドは、Adobe Experience Platform の次のコンポーネントを実際に利用および理解しているユーザーを対象としています。

  • ソース:Experience Platform を使用すると、データを様々なソースから取得しながら、Experience Platform サービスを使用して受信データの構造化、ラベル付け、拡張を行うことができます。
  • サンドボックス:Experience Platform には、単一の Experience Platform インスタンスを別々の仮想環境に分割して、デジタルエクスペリエンスアプリケーションの開発と発展に役立つ仮想サンドボックスが用意されています。

Experience Platform APIの使用

Experience Platform APIの呼び出しを正常に行う方法について詳しくは、Experience Platform APIの概要に関するガイドを参照してください。

必要な資格情報の収集

認証について詳しくは、Snowflake 概要を参照してください。

ベース接続の作成 create-a-base-connection

ベース接続は、ソースの認証情報、接続の現在の状態、一意のベース接続IDなど、ソースとExperience Platform間の情報を保持します。 ベース接続 ID により、ソース内からファイルを参照および移動し、データタイプやフォーマットに関する情報を含む、取り込みたい特定の項目を識別することができます。

ベース接続IDを作成するには、Snowflake認証情報をリクエスト本文の一部として提供しながら、/connections エンドポイントにPOST リクエストを行います。

API 形式

POST /connections

リクエスト

次のリクエストは、Snowflake のベース接続を作成します。

TIP
auth.specName値は、空白文字を含め、次の例と同じように入力する必要があります。
curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/connections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Snowflake base connection",
      "description": "Snowflake base connection",
      "auth": {
          "specName": "Basic Authentication for Snowflake",
          "params": {
              "account": "wixnnnd-ui60793.snowflakecomputing.com",
              "database": "ACME_DB",
              "warehouse": "ACME_WH",
              "username": "nikola15",
              "schema": "PUBLIC",
              "password": "xxxx",
              "role": "ACCOUNTADMIN"
          }
      },
      "connectionSpec": {
          "id": "51ae16c2-bdad-42fd-9fce-8d5dfddaf140",
          "version": "1.0"
      }
  }'
プロパティ
説明
auth.params.account
Snowflake ストリーミングアカウントの名前。
auth.params.database
データの取得元となるSnowflake データベースの名前。
auth.params.warehouse
Snowflake ウェアハウスの名前。 Snowflake ウェアハウスは、アプリケーションのクエリ実行プロセスを管理します。 各ウェアハウスは互いに独立しており、Experience Platformにデータを取り込む際には個別にアクセスする必要があります。
auth.params.username
Snowflake ストリーミングアカウントのユーザー名。
auth.params.schema
(オプション) Snowflake ストリーミングアカウントに関連付けられているデータベーススキーマ。
auth.params.password
Snowflake ストリーミングアカウントのパスワード。
auth.params.role
(オプション)このSnowflake接続のユーザーの役割。 指定しない場合、この値はデフォルトでpublicになります。
connectionSpec.id
Snowflake接続仕様ID: 51ae16c2-bdad-42fd-9fce-8d5dfddaf140

応答

応答が成功すると、新しく作成されたベース接続とそれに対応するetagが返されます。

{
    "id": "1b614dc0-b76e-41e1-b25f-09f4a9d3f111",
    "etag": "\"d300cf4e-0000-0200-0000-6447a7750000\""
}

データテーブルの探索 explore-your-data-tables

次に、ベース接続IDを使用して、ベース接続IDをパラメーターとして指定しながら、/connections/{BASE_CONNECTION_ID}/explore?objectType=root エンドポイントにGET リクエストを行うことで、ソースのデータテーブルを探索して移動します。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?objectType=root
パラメーター
説明
{BASE_CONNECTION_ID}
Snowflake ストリーミングソースのベース接続ID。

リクエスト

次のリクエストは、Snowflake ストリーミングアカウントの構造と内容を取得します。

curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/1b614dc0-b76e-41e1-b25f-09f4a9d3f111/explore?objectType=root' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

応答

応答が成功すると、ルートレベルでソースのデータの構造と内容が返されます。

{
    "items": [
        {
            "type": "table",
            "name": "ACME"
        }
    ]
}
プロパティ
説明
items.type
テーブルのタイプ。
items.names
テーブルの名前。

ソース接続の作成 create-a-source-connection

ソース接続は、データの取り込み元となる外部ソースへの接続を作成および管理します。

ソース接続を作成するには、Flow Service API の /sourceConnections エンドポイントに POST リクエストを実行します。

API 形式

POST /sourceConnections

リクエスト

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
  -H 'authorization: Bearer {ACCESS_TOKEN}' \
  -H 'content-type: application/json' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
      "name": "Snowflake Streaming Source Connection",
      "description": "A source connection for Snowflake Streaming data",
      "baseConnectionId": "1b614dc0-b76e-41e1-b25f-09f4a9d3f111",
      "connectionSpec": {
          "id": "51ae16c2-bdad-42fd-9fce-8d5dfddaf140",
          "version": "1.0"
      },
      "params": {
          "tableName": "ACME",
          "timestampColumn": "dOb",
          "backfill": "true",
          "timezoneValue": "PST"
      }
  }'
プロパティ
説明
baseConnectionId
Snowflake ストリーミングソースの認証済みベース接続ID。 この ID は、前の手順で生成されました。
connectionSpec.id
Snowflake ストリーミングソースの接続仕様ID。
params.tableName
Experience Platformに取り込むSnowflake データベース内のテーブルの名前。
params.timestampColumn
増分値の取得に使用するタイムスタンプ列の名前。
params.backfill
データが最初から(0 エポック時間)取得されるか、ソースが開始された時点から取得されるかを決定するブール型フラグ。 この値について詳しくは、Snowflake ストリーミングソースの概要を参照してください。
params.timezoneValue
timezone値は、Snowflake データベースのクエリ時に取得するタイムゾーンの現在の時刻を示します。 このパラメーターは、設定のタイムスタンプ列がTIMESTAMP_NTZに設定されている場合に指定する必要があります。 指定しない場合、timezoneValueはデフォルトでUTCになります。

応答

応答が成功すると、ソース接続IDとそれに対応するタグが返されます。 ソース接続IDは、後の手順でデータフローを作成するために使用されます。

{
    "id": "61c0c5f1-bfe5-40f7-8f8c-a4dc175ddac6",
    "etag": "\"d300cf4e-0000-0200-0000-6447a7750000\""
}

データフローの作成

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

ツアーSnowflake アカウントからExperience Platformにデータをストリーミングするデータフローを作成するには、次の値を指定しながら、/flows エンドポイントにPOST リクエストを行う必要があります。

TIP
次のIDを取得する方法のステップバイステップガイドについては、以下のリンクを参照してください。

API 形式

POST /flows

リクエスト

次のリクエストは、Snowflake アカウントのストリーミングデータフローを作成します。

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/flows' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Snowflake Streaming Dataflow",
      "description": "A dataflow for Snowflake streaming data",
      "sourceConnectionIds": [
        "61c0c5f1-bfe5-40f7-8f8c-a4dc175ddac6"
      ],
      "targetConnectionIds": [
        "78f41c31-3652-4a5e-b264-74331226dcf3"
      ],
      "flowSpec": {
        "id": "c1a19761-d2c7-4702-b9fa-fe91f0613e81",
        "version": "1.0"
      },
      "transformations": [
        {
          "name": "Mapping",
          "params": {
            "mappingId": "44d42ed27c46499a80eb0c0705c38cbd",
            "mappingVersion": 0
          }
        }
      ]
    }'
プロパティ
説明
sourceConnectionIds
Snowflake ストリーミングソースのソース接続ID。
targetConnectionIds
Snowflake ストリーミングソースのターゲット接続ID。
flowSpec.id
Snowflake ストリーミングソースのデータフローを作成するためのフロー仕様ID。 このフロー仕様IDを使用すると、マッピング変換を含むストリーミングデータフローを作成できます。 このIDは固定されており、c1a19761-d2c7-4702-b9fa-fe91f0613e81です。
transformations.params.mappingId
データフローのマッピング ID。

応答

応答が成功すると、フローIDとそれに対応するタグが返されます。

{
    "id": "2edc08ac-4df5-4fe6-936f-81a19ce92f5c",
    "etag": "\"770029f8-0000-0200-0000-6019e7d40000\""
}

次の手順

このチュートリアルでは、Flow Service APIを使用して、Snowflake データのストリーミングデータフローを作成しました。 Adobe Experience Platform ソースについて詳しくは、次のドキュメントを参照してください。

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