Ejemplos de solicitudes de datos de Flight service con Python

Puedes utilizar Flight service y el protocolo de vuelo Apache Arrow para leer y escribir datos mediante Python en un proyecto o espacio.

Para leer o escribir datos con « Python », puedes:

  • Utiliza el código que se genera automáticamente para cargar datos de un recurso del proyecto seleccionado en un cuaderno de Python. Este código generado utiliza la itc_utils biblioteca, que encapsula las llamadas a la biblioteca de pyarrow código abierto Python, lo que mejora la legibilidad del código y reduce su tamaño.

  • Escribe tu propio código para leer y escribir datos en un proyecto o espacio utilizando la biblioteca de pyarrow código abierto Python para llamar a Flight service. Tendrás que escribir tu propio código en las siguientes situaciones:

    • El código generado requiere modificaciones, por ejemplo, para su uso en un entorno de producción
    • La función para añadir código generado no está disponible para este recurso
    • La herramienta no permite añadir código generado

En las siguientes secciones se ofrece más información sobre cómo especificar la fuente de datos y las propiedades interactivas para las solicitudes de lectura mediante las solicitudes de datos de Flight.

Para obtener más información sobre la sintaxis y las propiedades de las solicitudes de datos, consulta «Solicitudes de datos de vuelo ».

Para acceder a los datos, debes crear un objeto de solicitud de datos utilizando un documento JSON que contenga la descripción del activo que deseas leer o escribir. En « Python », puedes utilizar diccionarios para crear estos documentos JSON.

Puede utilizar los siguientes ejemplos de solicitudes de datos para aprender a especificar la fuente de datos y las propiedades interactivas de las solicitudes de lectura o escritura de datos en Python. Las propiedades varían en función de la fuente de datos.

Ejemplo de solicitud de esquema y tabla

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
}

Ejemplo de una consulta 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 ..."
    }
}

Ejemplo de una solicitud para leer un archivo de datos, como un archivo 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
}

Ejemplo de solicitud de lectura de un archivo 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
}

Ejemplo de una solicitud a una conexión en la que se pasan las propiedades de la conexión

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
}

Las "connection_properties""interaction_properties" propiedades varían en función del conector. Consulte los tipos de fuentes de datos de la API Common Core de datos e IA para obtener más información.

Ejemplos de código que utilizan solicitudes de datos de vuelo

Los siguientes ejemplos de código muestran cómo se puede llamar a « Flight service » desde los cuadernos de « Python ». Los ejemplos muestran las diferencias entre las solicitudes de datos en función de la conexión a la fuente de datos.

Los ejemplos que muestran cómo invocar Flight service utilizan una biblioteca de Python llamada itc_utils, que proporciona IBM para su uso en cuadernos. Para obtener más información, consulta « Flight service » en los cuadernos de Python.

Ejemplo de la solicitud de datos devuelta en el código generado para cargar datos en una conexión 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)

Ejemplo de una solicitud de datos utilizando identificadores de conexión y sin propiedades

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)

Ejemplo de solicitud de datos para una conexión de tipo « Db2 » mediante propiedades

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)

Más información