Skapa en källanslutning och ett dataflöde för Mixpanel med API:t Flow Service
I följande självstudiekurs får du hjälp med att skapa en källanslutning och ett dataflöde för att överföra Mixpanel-data till Adobe Experience Platform med Flow Service API .
Komma igång
Handboken kräver en fungerande förståelse av följande komponenter i Experience Platform:
- Källor: Experience Platform tillåter data att hämtas från olika källor samtidigt som du kan strukturera, etikettera och förbättra inkommande data med hjälp av plattformstjänster.
- Sandlådor: Experience Platform tillhandahåller virtuella sandlådor som partitionerar en enda plattformsinstans till separata virtuella miljöer för att utveckla och utveckla program för digitala upplevelser.
I följande avsnitt finns ytterligare information som du behöver känna till för att kunna ansluta till Mixpanel med API:t Flow Service.
Samla in nödvändiga inloggningsuppgifter
För att kunna ansluta Mixpanel till plattformen måste du ange värden för följande anslutningsegenskaper:
username
Test8.6d4ee7.mp-service-account
password
dLlidiKHpCZtJhQDyN2RECKudMeTItX1
projectId
2384945
timezone
Pacific Standard Time
Mer information om hur du autentiserar Mixpanel-källan finns i Mixpanel källöversikten.
Skapa en basanslutning base-connection
En basanslutning bevarar information mellan källan och plattformen, inklusive källans autentiseringsuppgifter, anslutningsstatus och ditt unika basanslutnings-ID. Med det grundläggande anslutnings-ID:t kan du utforska och navigera bland filer inifrån källan och identifiera de specifika objekt som du vill importera, inklusive information om deras datatyper och format.
Om du vill skapa ett grundläggande anslutnings-ID skickar du en POST till /connections
-slutpunkten och anger dina Mixpanel autentiseringsuppgifter som en del av begärandetexten.
API-format
POST /connections
Begäran
Följande begäran skapar en basanslutning för 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
auth.specName
auth.params.
auth.params.username
auth.params.password
Svar
Ett svar returnerar den nyskapade basanslutningen, inklusive dess unika anslutnings-ID (id
). Detta ID krävs för att undersöka källans filstruktur och innehåll i nästa steg.
{
"id": "70383d02-2777-4be7-a309-9dd6eea1b46d",
"etag": "\"d64c8298-add4-4667-9a49-28195b2e2a84\""
}
Utforska din källa explore
Med det grundläggande anslutnings-ID som du skapade i det föregående steget kan du utforska filer och kataloger genom att utföra GET-begäranden.
Använd följande anrop för att hitta sökvägen till filen som du vill hämta till Experience Platform:
API-format
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=rest&object={OBJECT}&fileType={FILE_TYPE}&preview={PREVIEW}&sourceParams={SOURCE_PARAMS}
När du gör en GET-förfrågan om att utforska källans filstruktur och innehåll måste du inkludera frågeparametrarna som listas i tabellen nedan:
{BASE_CONNECTION_ID}
objectType=rest
rest
.{OBJECT}
json
.fileType=json
json
den enda filtypen som stöds.{PREVIEW}
{SOURCE_PARAMS}
{SOURCE_PARAMS}
måste du koda hela {"projectId":"2671127","timezone":"Pacific Standard Time"}
-strängen i base64. Obs!: I exemplet nedan motsvarar "{"projectId":"2671127","timezone":"Pacific Standard Time"}"
som är kodad i base64 eyJwcm9qZWN0SWQiOiIyNjcxMTI3IiwidGltZXpvbmUiOiJQYWNpZmljIFN0YW5kYXJkIFRpbWUifQ==
.Begäran
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}'
Svar
Ett lyckat svar returnerar strukturen för den efterfrågade filen.
{
"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
}
}
]
}
Skapa en källanslutning source-connection
Du kan skapa en källanslutning genom att göra en POST-förfrågan till API:t Flow Service. En källanslutning består av ett anslutnings-ID, en sökväg till källdatafilen och ett anslutnings-spec-ID.
API-format
POST /sourceConnections
Begäran
Följande begäran skapar en källanslutning för 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
connectionSpec.id
data.format
json
.params.projectId
params.timezone
Svar
Ett lyckat svar returnerar den unika identifieraren (id
) för den nyligen skapade källanslutningen. Detta ID krävs i ett senare steg för att skapa ett dataflöde.
{
"id": "246d052c-da4a-494a-937f-a0d17b1c6cf5",
"etag": "\"712a8c08-fda7-41c2-984b-187f823293d8\""
}
Skapa ett mål-XDM-schema target-schema
För att källdata ska kunna användas i Platform måste ett målschema skapas för att strukturera källdata efter dina behov. Målschemat används sedan för att skapa en plattformsdatauppsättning där källdata finns.
Ett mål-XDM-schema kan skapas genom att utföra en POST-begäran till schemats register-API.
Detaljerade steg om hur du skapar ett mål-XDM-schema finns i självstudiekursen Skapa ett schema med API:t.
Skapa en måldatauppsättning target-dataset
En måldatamängd kan skapas genom att utföra en POST-begäran till katalogtjänstens API, som anger målschemats ID i nyttolasten.
Detaljerade steg om hur du skapar en måldatauppsättning finns i självstudiekursen Skapa en datauppsättning med API:t.
Skapa en målanslutning target-connection
En målanslutning representerar anslutningen till målet där inmatade data ska lagras. Om du vill skapa en målanslutning måste du ange det fasta anslutningsspecifikations-ID som motsvarar datasjön. Detta ID är: c604ff05-7f1a-43c0-8e18-33bf874cb11c
.
Nu har du de unika identifierarna ett målschema, en måldatamängd och ett anslutningsspec-ID till datasjön. Med hjälp av dessa identifierare kan du skapa en målanslutning med API:t Flow Service för att ange den datauppsättning som ska innehålla inkommande källdata.
API-format
POST /targetConnections
Begäran
Följande begäran skapar en målanslutning för 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
fd2c8ff3-1de0-4f6b-8fa8-4264784870eb
.data.format
params.dataSetId
Svar
Ett svar returnerar den nya målanslutningens unika identifierare (id
). Detta ID krävs i senare steg.
{
"id": "7c96c827-3ffd-460c-a573-e9558f72f263",
"etag": "\"a196f685-f5e8-4c4c-bfbd-136141bb0c6d\""
}
Skapa en mappning mapping
För att källdata ska kunna hämtas till en måldatamängd måste den först mappas till målschemat som måldatamängden följer. Detta uppnås genom att utföra en begäran om POST till Data Prep API med datamappningar definierade i nyttolasten för begäran.
API-format
POST /conversion/mappingSets
Begäran
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
mappings.destinationXdmPath
mappings.sourceAttribute
mappings.identity
Svar
Ett lyckat svar returnerar information om den nyligen skapade mappningen inklusive dess unika identifierare (id
). Detta värde krävs i ett senare steg för att skapa ett dataflöde.
{
"id": "bf5286a9c1ad4266baca76ba3adc9366",
"version": 0,
"createdDate": 1597784069368,
"modifiedDate": 1597784069368,
"createdBy": "{CREATED_BY}",
"modifiedBy": "{MODIFIED_BY}"
}
Skapa ett flöde flow
Det sista steget mot att överföra data från Mixpanel till plattformen är att skapa ett dataflöde. Nu har du förberett följande obligatoriska värden:
Ett dataflöde ansvarar för att schemalägga och samla in data från en källa. Du kan skapa ett dataflöde genom att utföra en begäran om POST samtidigt som du anger de tidigare angivna värdena i nyttolasten.
Om du vill schemalägga ett intag måste du först ange starttidsvärdet till epok time i sekunder. Sedan måste du ange frekvensvärdet till ett av de fem alternativen: once
, minute
, hour
, day
eller week
. Intervallvärdet anger emellertid perioden mellan två på varandra följande frågor, och om du skapar en engångsinmatning behöver du inte ange något intervall. Intervallvärdet måste vara lika med eller större än 15
för alla andra frekvenser.
API-format
POST /flows
Begäran
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
6499120c-0b15-42dc-936e-847ea3c24d72
.flowSpec.version
1.0
.sourceConnectionIds
targetConnectionIds
transformations
transformations.name
transformations.params.mappingId
transformations.params.mappingVersion
0
.scheduleParams.startTime
scheduleParams.frequency
once
, minute
, hour
, day
eller week
.scheduleParams.interval
once
och ska vara större än eller lika med 15
för andra frekvensvärden.Svar
Ett lyckat svar returnerar ID:t (id
) för det nyskapade dataflödet. Du kan använda det här ID:t för att övervaka, uppdatera eller ta bort dataflödet.
{
"id": "993f908f-3342-4d9c-9f3c-5aa9a189ca1a",
"etag": "\"510bb1d4-8453-4034-b991-ab942e11dd8a\""
}
Bilaga
Följande avsnitt innehåller information om hur du övervakar, uppdaterar och tar bort dataflödet.
Övervaka dataflödet
När dataflödet har skapats kan du övervaka de data som importeras genom det för att se information om flödeskörningar, slutförandestatus och fel. Fullständiga API-exempel finns i handboken om att övervaka källans dataflöden med API:t.
Uppdatera ditt dataflöde
Uppdatera informationen om dataflödet, till exempel namn och beskrivning, samt körningsschema och associerade mappningsuppsättningar genom att göra en PATCH-begäran till /flows
-slutpunkten i Flow Service-API:t, samtidigt som du anger ID:t för dataflödet. När du gör en PATCH-begäran måste du ange dataflödets unika etag
i rubriken If-Match
. Fullständiga API-exempel finns i guiden om att uppdatera källkodsdataflöden med API:t.
Uppdatera ditt konto
Uppdatera namn, beskrivning och autentiseringsuppgifter för källkontot genom att utföra en PATCH-begäran till Flow Service-API:t och ange ditt grundläggande anslutnings-ID som en frågeparameter. När du gör en PATCH-begäran måste du ange källkontots unika etag
i rubriken If-Match
. Fullständiga API-exempel finns i handboken Uppdatera ditt källkonto med API.
Ta bort ditt dataflöde
Ta bort dataflödet genom att utföra en DELETE-begäran till Flow Service-API:t och ange ID:t för det dataflöde som du vill ta bort som en del av frågeparametern. Fullständiga API-exempel finns i guiden om att ta bort dataflöden med API:t.
Ta bort ditt konto
Ta bort ditt konto genom att utföra en DELETE-begäran till Flow Service-API:t och ange det grundläggande anslutnings-ID:t för kontot som du vill ta bort. Fullständiga API-exempel finns i guiden om att ta bort ditt källkonto med API.