Esempi di richieste di dati " Flight service " con " Python "

È possibile utilizzare Flight service e il protocollo Flight Apache Arrow per leggere e scrivere dati tramite Python in un progetto o in uno spazio.

Per leggere o scrivere dati utilizzando l' Python, è possibile:

  • Utilizza il codice generato automaticamente per caricare i dati da una risorsa del progetto selezionata in un notebook di Python. Questo codice generato utilizza la itc_utils libreria, che incapsula le chiamate alla libreria open source pyarrow Python, migliorando la leggibilità del codice e riducendone al contempo le dimensioni.

  • Scrivi il tuo codice per leggere e scrivere dati in un progetto o in uno spazio utilizzando la libreria open source pyarrow Python per richiamare Flight service. È necessario scrivere il proprio codice nelle seguenti situazioni:

    • Il codice generato richiede alcune modifiche, ad esempio per poterlo utilizzare in un ambiente di produzione
    • La funzione che consente di aggiungere codice generato non è disponibile per questa risorsa
    • Lo strumento non supporta l'aggiunta di codice generato

Le sezioni seguenti forniscono ulteriori dettagli su come specificare l'origine dati e le proprietà interattive per le richieste di lettura utilizzando le richieste di dati Flight.

Per ulteriori informazioni sulla sintassi e sulle proprietà delle richieste di dati, consultare la sezione "Richieste di dati di volo ".

Per accedere ai dati, è necessario creare un oggetto di richiesta dati utilizzando un documento JSON contenente la descrizione della risorsa che si desidera leggere o scrivere. In Python, puoi utilizzare i dizionari per creare questi documenti JSON.

È possibile utilizzare i seguenti esempi di richieste di dati per imparare a specificare l'origine dati e le proprietà interattive per le richieste di lettura o scrittura dei dati in Python. Le proprietà variano a seconda della fonte dei dati.

Esempio di richiesta relativa a uno schema e a una tabella

data_request = {
    "asset_id": "ASSET_ID", # asset_id must point to a connection asset
    "project_id|space_id|catalog_id": "ID",
    "num_partitions": NUM, # Optional
    "batch_size": SIZE, # Optional
    "interaction_properties": {
        "schema_name": "schema",
        "table_name": "table"
    },
    "fields": "fields" # Optional
}

Esempio di una query SQL

data_request = {
    "asset_id": "ASSET_ID", # asset_id must point to a connection asset
    "project_id|space_id|catalog_id": "ID",
    "num_partitions": NUM, # Optional
    "batch_size": SIZE, # Optional
    "interaction_properties": {
        "select_statement": "SELECT ... FROM <schema>.<table> WHERE ..."
    }
}

Esempio di richiesta di lettura da un file di dati, come un file Parquet

data_request = {
    "asset_id": "ASSET_ID", # asset_id must point to a connected data asset
    "project_id|space_id|catalog_id": "ID",
    "num_partitions": NUM, # Optional
    "fields": "fields" # Optional
}

Esempio di richiesta di lettura da un file Parquet

data_request = {
    "asset_id": "ASSET_ID",
    "project_id|space_id|catalog_id": "ID",
    "num_partitions": NUM, # Optional
    "batch_size": SIZE, # Optional
    "interaction_properties": {
        "folder": "FOLDER",
        "file": "FILE",
        "bucket": "BUCKET", # If using COS specify bucket in addition to folder/file
        "file_format": "parquet"
    },
    "fields": "fields" # Optional
}

Esempio di richiesta a una connessione con il passaggio delle proprietà della connessione

data_request = {
    "datasource_type": "dashdb",
    "connection_properties": {
        "database": "DBNAME",
        "password": "PASSWORD",
        "port": NUM,
        "host": "HOSTNAME",
        "ssl": true,
        "username": "CONNUSER"
    },
    "num_partitions": NUM, # Optional
    "batch_size": SIZE, # Optional
    "interaction_properties": {
        "schema_name": "schema",
        "table_name": "table",
    }
    "fields": "fields" # Optional
}

Le caratteristiche "connection_properties" e "interaction_properties"le proprietà variano a seconda del connettore. Per ulteriori dettagli, consultare i tipi di origine dati dell'API Common Core per dati e IA.

Esempi di codice che utilizzano le richieste di dati di volo

I seguenti esempi di codice mostrano come è possibile richiamare Flight service all'interno dei notebook di Python. Gli esempi illustrano le differenze tra le richieste di dati a seconda della connessione alla fonte di dati.

Gli esempi che illustrano come richiamare Flight service utilizzano una libreria Python denominata itc_utils, fornita da IBM per l'uso nei notebook. Per ulteriori dettagli, consultare la sezione " Flight service " nei manuali di Python.

Esempio della richiesta di dati restituita nel codice generato per caricare i dati per una connessione HTTP

import itc_utils.flight_service as itcfs
readClient = itcfs.get_flight_client()
HTTP_data_request = {
    'connection_name': """HTTP""",
    'interaction_properties': {
        'infer_schema': 'true'
    }
}
flightInfo = itcfs.get_flight_info(readClient, nb_data_request=HTTP_data_request)
data_df_1 = itcfs.read_pandas_and_concat(readClient, flightInfo)
data_df_1.head(10)

Esempio di richiesta di dati che utilizza gli ID di connessione senza proprietà

import itc_utils.flight_service as itcfs
readClient = itcfs.get_flight_client()
data_request = {
    'project_id': 'c01a0212-47cc-4cd4-8cc8-1dd92dbb4bde',
    'asset_id': 'a6c0117c-e6da-4d71-9da4-659edcec7ba5',
    'interaction_properties': {
        'infer_schema': 'true'
    }
}
flightInfo = itcfs.get_flight_info(readClient, data_request=data_request)
data_df_1 = itcfs.read_pandas_and_concat(readClient, flightInfo)
data_df_1.head(10)

Esempio di richiesta di dati per una connessione Db2 tramite proprietà

import itc_utils.flight_service as itcfs
readClient = itcfs.get_flight_client()
data_request = {'datasource_type': {'entity': {'name': 'db2'}},
    'connection_properties': {'database': 'BLUDB',
    'password': '****',
    'username_password_security': 'clear_text',
    'port': '50001',
    'host': 'dashdb-123.services.dal.bluemix.net',
    'inherit_access_token': 'false',
    'username_password_encryption': 'default',
    'ssl': 'true',
    'username': 'myuser'},
    'interaction_properties': {'schema_name': 'MYSCHEMA', 'table_name': 'A_TABLE'}
}
flightInfo = itcfs.get_flight_info(readClient, data_request=data_request)
data_df_1 = itcfs.read_pandas_and_concat(readClient, flightInfo)
data_df_1.head(10)

Ulteriori informazioni