Questo tutorial illustra i passaggi necessari per la connessione e lo streaming dei dati dal Snowflake account a Adobe Experience Platform utilizzando [Flow Service API] (https://www.adobe.io/experience-platform-apis/references/flow-service/).
Questa guida richiede una buona conoscenza dei seguenti componenti di Adobe Experience Platform:
Per l’impostazione dei prerequisiti e per le informazioni su Snowflake origine di streaming. Leggi le Snowflake panoramica origine streaming.
Per informazioni su come effettuare correttamente chiamate alle API di Platform, consulta la guida su introduzione alle API di Platform.
Una connessione di base mantiene le informazioni tra l’origine e Platform, incluse le credenziali di autenticazione dell’origine, lo stato corrente della connessione e l’ID univoco della connessione di base. L’ID della connessione di base consente di esplorare e navigare tra i file dall’interno dell’origine e identificare gli elementi specifici che desideri acquisire, comprese le informazioni relative ai tipi di dati e ai formati.
Per creare un ID di connessione di base, effettua una richiesta POST al /connections
endpoint durante la fornitura del Snowflake credenziali di autenticazione come parte del corpo della richiesta.
Formato API
POST /connections
Richiesta
La richiesta seguente crea una connessione di base per Snowflake:
Il auth.specName
il valore deve essere immesso esattamente come nell’esempio seguente, compresi gli spazi vuoti.
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"
}
}'
Proprietà | Descrizione |
---|---|
auth.params.account |
Il nome del tuo Snowflake account di streaming. |
auth.params.database |
Il nome del tuo Snowflake database da cui verranno estratti i dati. |
auth.params.warehouse |
Il nome del tuo Snowflake data warehouse. Il Snowflake warehouse gestisce il processo di esecuzione delle query per l'applicazione. Ogni data warehouse è indipendente l’uno dall’altro e deve essere accessibile singolarmente quando si trasferiscono i dati su Platform. |
auth.params.username |
Il nome utente per il Snowflake account di streaming. |
auth.params.schema |
(Facoltativo) Lo schema di database associato al tuo Snowflake account di streaming. |
auth.params.password |
La password per Snowflake account di streaming. |
auth.params.role |
(Facoltativo) Il ruolo dell’utente per questo Snowflake connessione. Se non specificato, il valore predefinito è public . |
connectionSpec.id |
Il Snowflake ID specifica di connessione: 51ae16c2-bdad-42fd-9fce-8d5dfddaf140 . |
Risposta
In caso di esito positivo, la risposta restituisce la connessione di base appena creata e il tag corrispondente.
{
"id": "1b614dc0-b76e-41e1-b25f-09f4a9d3f111",
"etag": "\"d300cf4e-0000-0200-0000-6447a7750000\""
}
Utilizzare quindi l'ID connessione di base per esplorare e spostarsi tra le tabelle dati dell'origine effettuando una richiesta di GET al /connections/{BASE_CONNECTION_ID}/explore?objectType=root
mentre fornisci l’ID connessione di base come parametro.
Formato API
GET /connections/{BASE_CONNECTION_ID}/explore?objectType=root
Parametro | Descrizione |
---|---|
{BASE_CONNECTION_ID} |
L’ID della connessione di base Snowflake origine di streaming. |
Richiesta
La richiesta seguente recupera la struttura e il contenuto del Snowflake account di streaming.
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}'
Risposta
In caso di esito positivo, la risposta restituisce la struttura e il contenuto dei dati dell’origine a livello di radice.
{
"items": [
{
"type": "table",
"name": "ACME"
}
]
}
Proprietà | Descrizione |
---|---|
items.type |
Tipo della tabella. |
items.names |
Nome della tabella. |
Una connessione di origine crea e gestisce la connessione all’origine esterna da cui vengono acquisiti i dati.
Per creare una connessione sorgente, effettua una richiesta POST al /sourceConnections
endpoint del Flow Service API.
Formato API
POST /sourceConnections
Richiesta
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"
}
}'
Proprietà | Descrizione |
---|---|
baseConnectionId |
ID della connessione di base autenticata per Snowflake origine di streaming. Questo ID è stato generato in un passaggio precedente. |
connectionSpec.id |
ID della specifica di connessione per Snowflake origine di streaming. |
params.tableName |
Nome della tabella nel Snowflake che desideri portare su Platform. |
params.timestampColumn |
Nome della colonna timestamp che verrà utilizzata per recuperare i valori incrementali. |
params.backfill |
Flag booleano che determina se i dati vengono recuperati dall’inizio (0 epoca) o dal momento in cui viene avviata l’origine. Per ulteriori informazioni su questo valore, leggere Snowflake panoramica origine streaming. |
params.timezoneValue |
Il valore del fuso orario indica l’ora corrente del fuso orario da recuperare quando si esegue una query su Snowflake database. Questo parametro deve essere fornito se la colonna timestamp nella configurazione è impostata su TIMESTAMP_NTZ . Se non specificato, timezoneValue viene impostato automaticamente su UTC. |
Risposta
In caso di esito positivo, la risposta restituisce l’ID della connessione sorgente e l’eTag corrispondente. L’ID della connessione di origine verrà utilizzato in un passaggio successivo per creare un flusso di dati.
{
"id": "61c0c5f1-bfe5-40f7-8f8c-a4dc175ddac6",
"etag": "\"d300cf4e-0000-0200-0000-6447a7750000\""
}
Per creare un flusso di dati per inviare dati dalla presentazione Snowflake a Platform, è necessario effettuare una richiesta POST al /flows
endpoint, fornendo i seguenti valori:
Segui i collegamenti riportati di seguito per guide dettagliate su come recuperare i seguenti ID.
Formato API
POST /flows
Richiesta
La seguente richiesta crea un flusso di dati in streaming per il tuo Snowflake account.
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
}
}
]
}'
Proprietà | Descrizione |
---|---|
sourceConnectionIds |
ID della connessione sorgente per Snowflake origine di streaming. |
targetConnectionIds |
ID della connessione di destinazione per Snowflake origine di streaming. |
flowSpec.id |
L’ID della specifica di flusso per creare un flusso di dati per un Snowflake origine di streaming. Questo ID della specifica di flusso consente di creare un flusso di dati in streaming con le trasformazioni di mappatura. Questo ID è fisso ed è: c1a19761-d2c7-4702-b9fa-fe91f0613e81 . |
transformations.params.mappingId |
ID di mappatura per il flusso di dati. |
Risposta
In caso di esito positivo, la risposta restituisce l’ID di flusso e l’eTag corrispondente.
{
"id": "2edc08ac-4df5-4fe6-936f-81a19ce92f5c",
"etag": "\"770029f8-0000-0200-0000-6019e7d40000\""
}
Seguendo questa esercitazione, hai creato un flusso di dati in streaming per Snowflake dati utilizzando Flow Service API. Per ulteriori informazioni sulle origini di Adobe Experience Platform, consulta la seguente documentazione: