(Beta)建立源連接和資料流 Mixpanel 使用 Flow Service API

注意

的 Mixpanel 源為beta。 查看 源概述 的子菜單。

以下教程將指導您完成建立源連接和資料流的步驟,以便 Mixpanel 資料到Adobe Experience Platform 流服務API

快速入門

本指南要求對以下Experience Platform元件進行工作理解:

  • :Experience Platform允許從各種源接收資料,同時讓您能夠使用平台服務構建、標籤和增強傳入資料。
  • 沙箱:Experience Platform提供虛擬沙箱,將單個平台實例分區為獨立的虛擬環境,以幫助開發和發展數字型驗應用程式。

以下各節提供了要成功連接到所需的其他資訊 Mixpanel 使用 Flow Service API。

收集所需憑據

為了連接 Mixpanel 到平台,必須提供以下連接屬性的值:

憑據 說明 範例
username 與您的服務帳戶對應的服務帳戶用戶名 Mixpanel 帳戶。 查看 Mixpanel 服務帳戶文檔 的子菜單。 Test8.6d4ee7.mp-service-account
password 與您的 Mixpanel 帳戶。 dLlidiKHpCZtJhQDyN2RECKudMeTItX1
projectId 您 Mixpanel 項目ID。 建立源連接需要此ID。 查看 Mixpanel 項目設定文檔Mixpanel 指南建立和管理項目 的子菜單。 2384945
timezone 與 Mixpanel 項目。 建立源連接需要時區。 查看 混合面板項目設定文檔 的子菜單。 Pacific Standard Time

有關驗證您 Mixpanel 源,請參閱 Mixpanel 源概述

建立基本連接

基本連接將保留源和平台之間的資訊,包括源的驗證憑據、連接的當前狀態和唯一的基本連接ID。 基本連接ID允許您從源中瀏覽和導航檔案,並標識要攝取的特定項目,包括有關其資料類型和格式的資訊。

要建立基本連接ID,請向 /connections 提供端點 Mixpanel 身份驗證憑據作為請求正文的一部分。

API格式

POST /connections

要求

以下請求為 Mixpanel:

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": "Mixpanel base connection",
      "description": "Mixpanel base connection to authenticate to Platform",
      "connectionSpec": {
          "id": "fd2c8ff3-1de0-4f6b-8fa8-4264784870eb",
          "version": "1.0"
      },
      "auth": {
          "specName": "Basic Authentication",
          "params": {
              "username": "{USERNAME}",
              "password": "{PASSWORD}"
          }
      }
  }'
屬性 說明
name 基本連接的名稱。 確保基本連接的名稱是描述性的,因為您可以使用此名稱查找有關基本連接的資訊。
description 可以包括的可選值,用於提供有關基本連接的詳細資訊。
connectionSpec.id 源的連接規範ID。 在通過註冊和批准源後,可以檢索此ID Flow Service API。
auth.specName 用於將源驗證到平台的驗證類型。
auth.params. 包含驗證源所需的憑據。
auth.params.username 與您的 Mixpanel 帳戶。
auth.params.password 與您的 Mixpanel 帳戶。

回應

成功的響應返回新建立的基本連接,包括其唯一連接標識符(id)。 在下一步中瀏覽源的檔案結構和內容需要此ID。

{
     "id": "70383d02-2777-4be7-a309-9dd6eea1b46d",
     "etag": "\"d64c8298-add4-4667-9a49-28195b2e2a84\""
}

瀏覽源

使用上一步中生成的基本連接ID,可以通過執行GET請求來瀏覽檔案和目錄。
使用以下調用查找要納入Experience Platform的檔案路徑:

API格式

GET /connections/{BASE_CONNECTION_ID}/explore?objectType=rest&object={OBJECT}&fileType={FILE_TYPE}&preview={PREVIEW}&sourceParams={SOURCE_PARAMS}

執行GET請求以瀏覽源的檔案結構和內容時,必須包括下表中列出的查詢參數:

參數 說明
{BASE_CONNECTION_ID} 在上一步中生成的基本連接ID。
objectType=rest 要瀏覽的對象的類型。 當前,此值始終設定為 rest
{OBJECT} 僅當查看特定目錄時才需要此參數。 其值表示要瀏覽的目錄的路徑。 對於此源,值將為 json
fileType=json 要帶到平台的檔案的檔案類型。 目前, json 是唯一支援的檔案類型。
{PREVIEW} 一個布爾值,它定義連接的內容是否支援預覽。
{SOURCE_PARAMS} 定義要帶到平台的源檔案的參數。 檢索接受的格式類型 {SOURCE_PARAMS},您必須對整個 {"projectId":"2671127","timezone":"Pacific Standard Time"} base64中的字串。 注釋:在下面的示例中, "{"projectId":"2671127","timezone":"Pacific Standard Time"}" 編碼為base64等於 eyJwcm9qZWN0SWQiOiIyNjcxMTI3IiwidGltZXpvbmUiOiJQYWNpZmljIFN0YW5kYXJkIFRpbWUifQ==

要求

curl -X GET \
    'https://platform.adobe.io/data/foundation/flowservice/connections/70383d02-2777-4be7-a309-9dd6eea1b46d/explore?objectType=rest&object=json&fileType=json&preview=true&sourceParams=eyJsaXN0SWQiOiIxMGMwOTdjYTcxIn0=' \
    -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}'

回應

成功的響應返回查詢檔案的結構。

{
    "format": "hierarchical",
    "schema": {
        "type": "object",
        "properties": {
            "event": {
                "type": "string"
            },
            "properties": {
                "type": "object",
                "properties": {
                    "$mp_api_endpoint": {
                        "type": "string"
                    },
                    "$insert_id": {
                        "type": "string"
                    },
                    "item_id": {
                        "type": "string"
                    },
                    "distinct_id": {
                        "type": "string"
                    },
                    "$mp_api_timestamp_ms": {
                        "type": "integer",
                        "minimum": -9007199254740992,
                        "maximum": 9007199254740991
                    },
                    "item_price": {
                        "type": "string"
                    },
                    "$import": {
                        "type": "boolean"
                    },
                    "item_name": {
                        "type": "string"
                    },
                    "time": {
                        "type": "integer",
                        "minimum": -9007199254740992,
                        "maximum": 9007199254740991
                    },
                    "mp_processing_time_ms": {
                        "type": "integer",
                        "minimum": -9007199254740992,
                        "maximum": 9007199254740991
                    }
                }
            }
        }
    },
    "data": [
        {
            "event": "Items purchased",
            "properties": {
                "time": 1652825148,
                "distinct_id": "test@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b70",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1652850348643,
                "item_id": "29066",
                "item_name": "charger",
                "item_price": "800.00",
                "mp_processing_time_ms": 1652850348702
            }
        },
        {
            "event": "Items sold",
            "properties": {
                "time": 1652423938,
                "distinct_id": "test@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b70",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1652449138115,
                "item_id": "29036",
                "item_name": "chair",
                "item_price": "5000.00",
                "mp_processing_time_ms": 1652449138173
            }
        },
        {
            "event": "Items sold",
            "properties": {
                "time": 1652854256,
                "distinct_id": "test@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b70",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1652879456538,
                "item_id": "29066",
                "item_name": "mobile",
                "item_price": "7000.00",
                "mp_processing_time_ms": 1652879456604
            }
        },
        {
            "event": "Sign off",
            "properties": {
                "time": 1648140611,
                "distinct_id": "test@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648555709515,
                "item_id": "29073",
                "item_name": "Watch",
                "item_price": "50000.00",
                "mp_processing_time_ms": 1648555710375
            }
        },
        {
            "event": "Items sold",
            "properties": {
                "time": 1648140612,
                "distinct_id": "test@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648556481708,
                "item_id": "29073",
                "item_name": "Pen",
                "item_price": "1000.00",
                "mp_processing_time_ms": 1648556481880
            }
        },
        {
            "event": "Sign in",
            "properties": {
                "time": 1648140614,
                "distinct_id": "test1@test.com",
                "$import": true,
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648556032401,
                "item_id": "29073",
                "item_name": "Watch",
                "item_price": "50000.00",
                "mp_processing_time_ms": 1648556032462
            }
        },
        {
            "event": "Item Purchased",
            "properties": {
                "time": 1648165814,
                "distinct_id": "test1@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b74",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648480684785,
                "item_id": "29073",
                "item_name": "Watch",
                "item_price": "50000.00",
                "mp_processing_time_ms": 1648480685058
            }
        },
        {
            "event": "Item Purchased",
            "properties": {
                "time": 1648165814,
                "distinct_id": "test1@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648551687866,
                "item_id": "29073",
                "item_name": "Watch",
                "item_price": "50000.00",
                "mp_processing_time_ms": 1648551687922
            }
        },
        {
            "event": "Sign off",
            "properties": {
                "time": 1648530419,
                "distinct_id": "test1@test.com",
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648555619274,
                "item_id": "29073",
                "item_name": "Watch",
                "item_price": "50000.00",
                "mp_processing_time_ms": 1648555619326
            }
        },
        {
            "event": "Items sold",
            "properties": {
                "time": 1648566534,
                "distinct_id": "test1@test.com",
                "$import": true,
                "$insert_id": "935d87b1-00cd-41b7-be34-b9d98dd08b75",
                "$mp_api_endpoint": "api.mixpanel.com",
                "$mp_api_timestamp_ms": 1648635830114,
                "item_id": "29073",
                "item_name": "Pen",
                "item_price": "1000.00",
                "mp_processing_time_ms": 1648635831010
            }
        }
    ]
}

建立源連接

您可以通過向POST請求建立源連接 Flow Service API。 源連接由連接ID、源資料檔案的路徑和連接規範ID組成。

API格式

POST /sourceConnections

要求

以下請求為 Mixpanel:

curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
  -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": "Mixpanel source connection",
      "description": "Mixpanel source connection",
      "baseConnectionId": "70383d02-2777-4be7-a309-9dd6eea1b46d",
      "connectionSpec": {
          "id": "fd2c8ff3-1de0-4f6b-8fa8-4264784870eb",
          "version": "1.0"
      },
      "data": {
          "format": "json"
      },
      "params": {
          "projectId": "{PROJECT_ID}",
          "timezone": "{TIMEZONE}"
      }
  }'
屬性 說明
name 源連接的名稱。 確保源連接的名稱是描述性的,因為您可以使用它來查找有關源連接的資訊。
description 可以包括的可選值,用於提供有關源連接的詳細資訊。
baseConnectionId 基本連接ID Mixpanel。 此ID是在前一步驟中生成的。
connectionSpec.id 與源對應的連接規範ID。
data.format 格式 Mixpanel 要攝取的資料。 目前,唯一支援的資料格式是 json
params.projectId 您 Mixpanel 項目ID。
params.timezone 您的時區 Mixpanel 項目。

回應

成功的響應返回唯一標識符(id)。 在後續步驟中建立資料流時需要此ID。

{
     "id": "246d052c-da4a-494a-937f-a0d17b1c6cf5",
     "etag": "\"712a8c08-fda7-41c2-984b-187f823293d8\""
}

建立目標XDM架構

為了在平台中使用源資料,必須建立目標架構以根據您的需要來構造源資料。 然後使用目標模式建立包含源資料的平台資料集。

通過執行對目標XDM的POST請求,可以建立目標XDM模式 架構註冊表API

有關如何建立目標XDM架構的詳細步驟,請參見上的教程 使用API建立架構

建立目標資料集

通過對目標資料集執行POST請求,可以建立目標資料集 目錄服務API,提供負載內目標架構的ID。

有關如何建立目標資料集的詳細步驟,請參見上的教程 使用API建立資料集

建立目標連接

目標連接表示到要儲存所攝取資料的目的地的連接。 要建立目標連接,必須提供與資料湖相對應的固定連接規範ID。 此ID為: c604ff05-7f1a-43c0-8e18-33bf874cb11c

您現在將唯一標識符作為目標模式、目標資料集和到資料湖的連接規範ID。 使用這些標識符,可以使用 Flow Service API,用於指定將包含入站源資料的資料集。

API格式

POST /targetConnections

要求

以下請求為 Mixpanel:

curl -X POST \
    'https://platform.adobe.io/data/foundation/flowservice/targetConnections' \
    -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": "{Mixpanel} Target Connection",
        "description": "{Mixpanel} Target Connection",
        "connectionSpec": {
            "id": "fd2c8ff3-1de0-4f6b-8fa8-4264784870eb",
            "version": "1.0"
        },
        "data": {
            "format": "json"
        },
        "params": {
            "dataSetId": "5ef4551c52e054191a61a99f"
        }
    }'
屬性 說明
name 目標連接的名稱。 確保目標連接的名稱是描述性的,因為您可以使用此名稱查找有關目標連接的資訊。
description 可以包括的可選值,用於提供有關目標連接的詳細資訊。
connectionSpec.id 與資料湖對應的連接規範ID。 此固定ID為: fd2c8ff3-1de0-4f6b-8fa8-4264784870eb
data.format 格式 Mixpanel 要帶到平台的資料。
params.dataSetId 在上一步中檢索到的目標資料集ID。

回應

成功的響應返回新目標連接的唯一標識符(id)。 後續步驟中需要此ID。

{
     "id": "7c96c827-3ffd-460c-a573-e9558f72f263",
     "etag": "\"a196f685-f5e8-4c4c-bfbd-136141bb0c6d\""
}

建立映射

為了將源資料攝取到目標資料集中,必須首先將其映射到目標資料集所遵循的目標模式。 這通過執行POST請求來實現 Data Prep API 在請求負載中定義資料映射。

API格式

POST /conversion/mappingSets

要求

curl -X POST \
  'https://platform.adobe.io/data/foundation/conversion/mappingSets' \
  -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 '{
      "version": 0,
      "xdmSchema": "https://ns.adobe.com/{TENANT_ID}/schemas/995dabbea86d58e346ff91bd8aa741a9f36f29b1019138d4",
      "xdmVersion": "1.0",
      "id": null,
      "mappings": [
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.distinct_id",
              "destination": "_extconndev.distinct_id",
              "name": "distinct_id",
              "description": "Mixpanel"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.event_name",
              "destination": "_extconndev.event_name"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.import",
              "destination": "_extconndev.import"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.insert_id",
              "destination": "_extconndev.insert_id"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.item_id",
              "destination": "_extconndev.item_id"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.item_name",
              "destination": "_extconndev.item_name"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.item_price",
              "destination": "_extconndev.item_price"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.mp_api_endpoint",
              "destination": "_extconndev.mp_api_endpoint"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.mp_api_timestamp_ms",
              "destination": "_extconndev.mp_api_timestamp_ms"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.mp_processing_time_ms",
              "destination": "_extconndev.mp_processing_time_ms"
          },
          {
              "sourceType": "ATTRIBUTE",
              "source": "data.time",
              "destination": "_extconndev.time"
          }
      ]
  }'
屬性 說明
xdmSchema 的ID 目標XDM架構 生成。
mappings.destinationXdmPath 要映射源屬性的目標XDM路徑。
mappings.sourceAttribute 需要映射到目標XDM路徑的源屬性。
mappings.identity 一個布爾值,它指定是否將映射集標籤為 Identity Service。

回應

成功的響應返回新建立的映射的詳細資訊,包括其唯一標識符(id)。 在後續步驟中建立資料流時需要此值。

{
    "id": "bf5286a9c1ad4266baca76ba3adc9366",
    "version": 0,
    "createdDate": 1597784069368,
    "modifiedDate": 1597784069368,
    "createdBy": "{CREATED_BY}",
    "modifiedBy": "{MODIFIED_BY}"
}

建立流

向從 Mixpanel 平台是建立資料流。 現在,您準備了以下必需值:

資料流負責從源調度和收集資料。 通過在負載中提供先前提到的值的同時執行POST請求,可以建立資料流。

要計畫攝取,必須首先將開始時間值設定為劃時代(秒)。 然後,必須將頻率值設定為以下五個選項之一: onceminutehourdayweek。 該間隔值指定兩個連續接收之間的期間,但建立一次性接收不需要設定間隔。 對於所有其它頻率,間隔值必須設定為等於或大於 15

API格式

POST /flows

要求

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": "{Mixpanel} dataflow",
      "description": "{Mixpanel} dataflow",
      "flowSpec": {
          "id": "6499120c-0b15-42dc-936e-847ea3c24d72",
          "version": "1.0"
      },
      "sourceConnectionIds": [
          "246d052c-da4a-494a-937f-a0d17b1c6cf5"
      ],
      "targetConnectionIds": [
          "7c96c827-3ffd-460c-a573-e9558f72f263"
      ],
      "transformations": [
          {
              "name": "Mapping",
              "params": {
                  "mappingId": "bf5286a9c1ad4266baca76ba3adc9366",
                  "mappingVersion": "0"
              }
          }
      ],
      "scheduleParams": {
          "startTime": "1625040887",
          "frequency": "minute",
          "interval": 15
      }
  }'
屬性 說明
name 資料流的名稱。 確保資料流的名稱是描述性的,因為您可以使用此名稱查找有關資料流的資訊。
description 可以包括的可選值,用於提供有關資料流的詳細資訊。
flowSpec.id 建立資料流所需的流規範ID。 此固定ID為: 6499120c-0b15-42dc-936e-847ea3c24d72
flowSpec.version 流規範ID的相應版本。 此值預設為 1.0
sourceConnectionIds 源連接ID 生成。
targetConnectionIds 目標連接ID 生成。
transformations 此屬性包含需要應用於資料的各種轉換。 將不符合XDM的資料帶入平台時需要此屬性。
transformations.name 分配給轉換的名稱。
transformations.params.mappingId 映射ID 生成。
transformations.params.mappingVersion 映射ID的相應版本。 此值預設為 0
scheduleParams.startTime 此屬性包含有關資料流的接收調度的資訊。
scheduleParams.frequency 資料流收集資料的頻率。 可接受值包括: onceminutehourdayweek
scheduleParams.interval 該間隔指定兩個連續流運行之間的期間。 間隔的值應為非零整數。 頻率設定為時不需要間隔 once 應大於或等於 15 其他頻率值。

回應

成功的響應返回ID(id)。 您可以使用此ID監視、更新或刪除資料流。

{
     "id": "993f908f-3342-4d9c-9f3c-5aa9a189ca1a",
     "etag": "\"510bb1d4-8453-4034-b991-ab942e11dd8a\""
}

附錄

以下部分提供了有關可以監視、更新和刪除資料流的步驟的資訊。

監視資料流

建立資料流後,您可以監視正在通過其接收的資料,以查看有關流運行、完成狀態和錯誤的資訊。 有關完整的API示例,請閱讀上的指南 使用API監視源資料流

更新資料流

通過向發出PATCH請求來更新資料流的詳細資訊,如其名稱和說明,以及其運行計畫和關聯映射集 /flows 端點 Flow Service API,同時提供資料流的ID。 發出PATCH請求時,必須提供資料流的唯一性 etagIf-Match 標題。 有關完整的API示例,請閱讀上的指南 使用API更新源資料流

更新帳戶

通過執行對的PATCH請求,更新源帳戶的名稱、說明和憑據 Flow Service API,同時將基本連接ID作為查詢參數提供。 發出PATCH請求時,必須提供源帳戶的唯一 etagIf-Match 標題。 有關完整的API示例,請閱讀上的指南 使用API更新源帳戶

刪除資料流

通過執行DELETE請求刪除資料流 Flow Service API,同時提供要作為查詢參數一部分刪除的資料流的ID。 有關完整的API示例,請閱讀上的指南 使用API刪除資料流

刪除帳戶

通過執行DELETE請求刪除帳戶 Flow Service API,同時提供要刪除的帳戶的基本連接ID。 有關完整的API示例,請閱讀上的指南 使用API刪除源帳戶

本頁內容