Show Menu
ARGOMENTI×

Secure Python​Data Access SDK

Secure Python​Data Access SDK è un kit di sviluppo software che consente la lettura e la scrittura di set di dati da Adobe Experience Platform.

Introduzione

Per poter accedere ai valori per effettuare chiamate all’SDK di protezione, devi completare l’esercitazione di autenticazione Python​Data Access :
  • {ACCESS_TOKEN}
  • {API_KEY}
  • {IMS_ORG}
Tutte le risorse in Experience Platform sono isolate in sandbox virtuali specifiche. L’utilizzo dell’ Python SDK richiede il nome e l’ID della sandbox in cui avrà luogo l’operazione:
  • {SANDBOX_NAME}
  • {SANDBOX_ID}
Per ulteriori informazioni sulle sandbox in Platform, consultate la documentazione sulla panoramica della sandbox.

Configurazione dell'ambiente

Per impostazione predefinita, gli endpoint del servizio sono impostati sugli endpoint dell'ambiente di integrazione. Di conseguenza, per puntare alla produzione, impostate le seguenti variabili di ambiente sui seguenti valori:
Variable
Endpoint
ENV_CATALOG_URL
https://platform.adobe.io/data/foundation/catalog/
ENV_QUERY_SERVICE_URL
https://platform.adobe.io/data/foundation/query
ENV_BULK_INGEST_URL
https://platform.adobe.io/data/foundation/import/
ENV_REGISTRY_URL
https://platform.adobe.io/data/foundation/schemaregistry/tenant/schemas
Inoltre, le credenziali possono essere aggiunte come variabili di ambiente.
Variable
Valore
ORG_ID
Your {IMS_ORG} ID.
SERVICE_API_KEY
Il vostro {API_KEY} valore.
USER_TOKEN
Il vostro {ACCESS_TOKEN} valore.
SERVICE_TOKEN
Utente {SERVICE_TOKEN} , che potrebbe essere necessario autorizzare richieste per canali back-channel tra i servizi.
SANDBOX_ID
Il {SANDBOX_ID} valore della sandbox.
SANDBOX_NAME
Il {SANDBOX_NAME} valore della sandbox.

Installazione

Tutti i pacchetti vengono inviati ./dist dopo la creazione.

Ruota

python3 setup.py bdist_wheel --universal

Dalla directory del progetto, caricate la ruota nell’ambiente Python 3.
pip3 install ./dist/<name_of_wheel_file>.whl

Egg, file

python3 setup.py bdist_egg

Lettura di un dataset

Dopo aver impostato le variabili di ambiente e aver completato l'installazione, il dataset ora può essere letto nel dataframe di panda.
from platform_sdk.client_context import ClientContext
from platform_sdk.dataset_reader import DatasetReader

client_context = ClientContext(api_key={API_KEY},
                               org_id={IMS_ORG_ID},
                               service_token={SERVICE_TOKEN},
                               user_token={USER_TOKEN},
                               sandbox_id={SANDBOX_ID},
                               sandbox_name={SANDBOX_NAME})

dataset_reader = DatasetReader(client_context, {DATASET_ID})
df = dataset_reader.read()

SELEZIONARE le colonne dal dataset

df = dataset_reader.select(['column-a','column-b']).read()

Ottieni informazioni sul partizionamento:

client_context = ClientContext(api_key={API_KEY},
                               org_id={IMS_ORG_ID},
                               service_token={SERVICE_TOKEN},
                               user_token={USER_TOKEN},
                               sandbox_id={SANDBOX_ID},
                               sandbox_name={SANDBOX_NAME})

dataset = Dataset(client_context).get_by_id({DATASET_ID})
partitions = dataset.get_partitions_info()

Clausola DISTINCT

La clausola DISTINCT consente di recuperare tutti i valori distinti a livello di riga/colonna, rimuovendo tutti i valori duplicati dalla risposta.
Di seguito è riportato un esempio di utilizzo della distinct() funzione:
df = dataset_reader.select(['column-a']).distinct().read()

Clausola WHERE

L' Python SDK supporta alcuni operatori per filtrare il set di dati.
Le funzioni utilizzate per il filtraggio sono con distinzione tra maiuscole e minuscole.
eq() = '='
gt() = '>'
ge() = '>='
lt() = '<'
le() = '<='
And = and operator
Or = or operator

Di seguito è riportato un esempio di utilizzo di queste funzioni di filtro:
df = dataset_reader.where(experience_ds['timestamp'].gt(87879779797).And(experience_ds['timestamp'].lt(87879779797)).Or(experience_ds['a'].eq(123)))

Clausola ORDER BY

La clausola ORDER BY consente di ordinare i risultati ricevuti in base a una colonna specificata in un ordine specifico (crescente o decrescente). Nell’ Python SDK, questa operazione viene eseguita utilizzando la sort() funzione.
Di seguito è riportato un esempio di utilizzo della sort() funzione:
df = dataset_reader.sort([('column_1', 'asc'), ('column_2', 'desc')])

Clausola LIMIT

La clausola LIMIT consente agli utenti di limitare il numero di record ricevuti dall'insieme di dati.
Di seguito è riportato un esempio di utilizzo della limit() funzione:
df = dataset_reader.limit(100).read()

Clausola OFFSET

La clausola OFFSET consente agli utenti di saltare le righe dall'inizio per iniziare a restituire le righe da un punto successivo. In combinazione con LIMIT, può essere utilizzato per iterare le righe nei blocchi.
Di seguito è riportato un esempio di utilizzo della offset() funzione:
df = dataset_reader.offset(100).read()

Scrittura di un dataset

L' Python SDK supporta la scrittura di set di dati. Gli utenti dovranno fornire il fotogramma dati panda che deve essere scritto nel dataset.

Creazione di un fotogramma dati panda

client_context = ClientContext(api_key={API_KEY},
                               org_id={IMS_ORG_ID},
                               service_token={SERVICE_TOKEN},
                               user_token={USER_TOKEN},
                               sandbox_id={SANDBOX_ID},
                               sandbox_name={SANDBOX_NAME})

# To fetch existing dataset
dataset = Dataset(client_context).get_by_id({DATASET_ID})

dataset_writer = DatasetWriter(client_context, dataset)

write_tracker = dataset_writer.write(<dataFrame>, file_format='json')

Directory di Userspace (Checkpoint)

Per i processi più lunghi, gli utenti potrebbero dover memorizzare i passaggi intermedi. In casi come questo, l' Python SDK fornisce all'utente la possibilità di leggere e scrivere in un userspace.
I percorsi dei dati non sono memorizzati dall’SDK. Gli utenti dovranno memorizzare il percorso corrispondente ai rispettivi dati.

Scrivi in userspace

client_context = ClientContext(api_key={API_KEY},
                               org_id={IMS_ORG_ID},
                               service_token={SERVICE_TOKEN},
                               user_token={USER_TOKEN},
                               sandbox_id={SANDBOX_ID},
                               sandbox_name={SANDBOX_NAME})
                               
user_helper = UserSpaceHelper(client_context)
user_helper.write(data_frame=<data_frame>, path=<path_to_directory>, ref_dataset_id=<ref_dataset_id>)

Lettura da userspace

client_context = ClientContext(api_key={API_KEY},
                               org_id={IMS_ORG_ID},
                               service_token={SERVICE_TOKEN},
                               user_token={USER_TOKEN},
                               sandbox_id={SANDBOX_ID},
                               sandbox_name={SANDBOX_NAME})
                               
user_helper = UserSpaceHelper(client_context)
my_df = user_helper.read(path=<path_to_directory>, ref_dataset_id=<ref_dataset_id>)