Beispiele für Datenanfragen an „ Flight service “ über „ Python “
Sie können „ Flight service “ und das „ Apache Arrow “-Flight-Protokoll verwenden, um Daten mithilfe von „ Python “ in einem Projekt oder Space zu lesen und zu schreiben.
Um Daten mit „ Python “ zu lesen oder zu schreiben, haben Sie folgende Möglichkeiten:
Verwenden Sie den für Sie generierten Code, um Daten aus einem ausgewählten Projekt-Asset in ein „ Python “-Notebook zu laden. Dieser generierte Code nutzt die
itc_utilsBibliothek, die Aufrufe an diepyarrowOpen-Source-Bibliothek „ Python “ umschließt, wodurch die Lesbarkeit des Codes verbessert und gleichzeitig dessen Umfang reduziert wird.Schreiben Sie Ihren eigenen Code, um Daten in einem Projekt oder Bereich zu lesen und zu schreiben, indem Sie die
pyarrowOpen-Source-Bibliothek „ Python “ verwenden, um „ Flight service “ aufzurufen. In den folgenden Situationen müssen Sie Ihren eigenen Code schreiben:- Der generierte Code muss angepasst werden, beispielsweise für den Einsatz in einer Produktionsumgebung
- Die Funktion zum Hinzufügen von generiertem Code ist für dieses Asset nicht verfügbar
- Das Tool unterstützt das Hinzufügen von generiertem Code nicht
In den folgenden Abschnitten erfahren Sie mehr darüber, wie Sie mithilfe von Flight-Datenanfragen die Datenquelle und die interaktiven Eigenschaften für Leseanfragen festlegen können.
Weitere Informationen zur Syntax und zu den Eigenschaften von Datenanfragen finden Sie unter „Flugdatenanfragen “.
Um auf Daten zuzugreifen, müssen Sie ein Datenanfrageobjekt erstellen, indem Sie ein JSON-Dokument verwenden, das die Beschreibung des Assets enthält, das Sie lesen oder schreiben möchten. In „ Python “ können Sie Wörterbücher verwenden, um diese JSON-Dokumente zu erstellen.
Anhand der folgenden Beispiele für Datenanfragen können Sie erfahren, wie Sie die Datenquelle und die interaktiven Eigenschaften für Lese- oder Schreibanfragen in „ Python “ festlegen. Die Eigenschaften variieren je nach Datenquelle.
Beispiel für eine Schema- und Tabellenanfrage
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
}
Beispiel für eine SQL-Abfrage
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 ..."
}
}
Beispiel für eine Anfrage zum Lesen aus einer Datendatei wie einer Parquet-Datei
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
}
Beispiel für eine Leseanforderung aus einer Parquet-Datei
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
}
Beispiel für eine Anfrage an eine Verbindung unter Übergabe von Verbindungseigenschaften
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
}
Die "connection_properties""interaction_properties" Eigenschaften unterscheiden sich je nach Stecker. Weitere Informationen finden Sie unter „Data and AI Common Core API Datasource types “.
Code-Beispiele für die Abfrage von Flugdaten
Die folgenden Code-Beispiele zeigen, wie „ Flight service “ in „ Python “-Notebooks aufgerufen werden kann. Die Beispiele veranschaulichen die Unterschiede zwischen Datenabfragen je nach Verbindung zur Datenquelle.
Die Beispiele, die zeigen, wie man „ Flight service “ aufruft, verwenden eine „ Python “-Bibliothek namens itc_utils, die von IBM für die Verwendung in Notebooks bereitgestellt wird. Weitere Informationen finden Sie unter „ Flight service “ in den „ Python “-Notizbüchern.
Beispiel für die Datenanforderung, die in dem Code zurückgegeben wird, der zum Laden von Daten für eine Verbindung mit HTTP generiert wird
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)
Beispiel für eine Datenanfrage unter Verwendung von Verbindungs-IDs und ohne Eigenschaften
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)
Beispiel für eine Datenabfrage bei einer „ Db2 “-Verbindung unter Verwendung von Eigenschaften
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)