Beispiele für Datenabfragen bei „ Flight service “ mit R

Sie können „ Flight service “ und das „ Apache Arrow “-Flight-Protokoll verwenden, um Daten in einem Projekt oder Space zu lesen und zu schreiben. In R geschieht dies, indem man die Open-Source-Bibliothek „ Pythonpyarrow “ aufruft, um über die R-Bibliothek „reticulate“ die Funktion „ Flight service “ auszuführen. Die Bibliothek stellt eine R-Schnittstelle zu den Modulen, Klassen und Funktionen von „ Python “ bereit.

Um mit R Daten 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 Notebook zu laden. Dieser generierte Code nutzt die itc_utils Bibliothek, die Aufrufe an die pyarrow Open-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 pyarrow Open-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

Weitere Informationen zum Aufruf von „ Python “ aus R finden Sie unter:

Weitere Informationen zur Flight-Client-API des Open-Source-Projekts Flight Arrow R finden Sie unter „Verbindung zu Flight- RPC -Servern herstellen “.

In den folgenden Abschnitten erfahren Sie mehr darüber, wie Sie mithilfe von Flugdatenanfragen die Datenquelle und die interaktiven Eigenschaften für Lese- oder Schreibanfragen festlegen können.

Weitere Informationen zur Syntax und zu den Eigenschaften von Datenanfragen finden Sie unter „Flugdatenanfragen “.

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 R festlegen. Die Eigenschaften variieren je nach Datenquelle. In diesen Beispielen wird verwendet, um Wörterbücher vom Typ reticulate „ Python “ zu erstellen.

Beispiel für eine Schema- und Tabellenabfrage unter Verwendung einer Verbindungs-ID (nur in Projekten ohne „ Git “-Integration)

data_request = dict(
    "asset_id"= "ASSET_ID",
    "project_id|space_id|catalog_id" = "ID",
    "num_partitions"= NUM, # Optional
    "batch_size"= SIZE, # Optional
    "interaction_properties"= dict(
        "schema_name"= "SCHEMA",
        "table_name"= "TABLE"
        ),
    "fields"= list("FIELDS") # Optional
    )

Beispiel für eine Schema- und Tabellenabfrage unter Verwendung eines Verbindungsnamens

data_request = dict(
    "connection_name"= "CONNECTION",
    "batch_size"= NUM, # Optional
    "interaction_properties"= dict(
        "schema_name"= "SCHEMA",
        "table_name"= "TABLE",
        "row_limit"= NUM
        ),
    "fields"= list("FIELDS") # Optional
    )

Beispiel für eine SQL-Abfrage unter Verwendung einer Verbindungs-ID (nur in Projekten ohne „ Git “-Integration)

data_request = dict(
    "asset_id"= "ASSET_ID",
    "project_id|space_id|catalog_id" = "ID",
    "num_partitions"= NUM, # Optional
    "batch_size"= SIZE, # Optional
    "interaction_properties"= dict(
        "select_statement"= "SQL" )
    )

Beispiel für eine SQL-Abfrage unter Verwendung eines Verbindungsnamens

data_request = dict(
    "connection_name"= "CONNECTION",
    "num_partitions"= NUM, # Optional
    "batch_size"= SIZE, # Optional
    "interaction_properties"= dict(
        "select_statement"= "SELECT ... FROM <schema>.<table> WHERE ..."
        )
    )

Beispiel für eine Datenanfrage unter Verwendung der Asset-ID (nur in Projekten ohne „ Git “-Integration)

data_request = dict(
    "asset_id"= "ASSET_ID",
    "project_id|space_id|catalog_id" = "ID",
    "num_partitions"= NUM, # Optional
    )

Beispiel für eine Datenanforderung unter Verwendung des Asset-Namens

data_request = dict(
    "data_name"= "DATA ASSET",
    "interaction_properties"= dict(
        "infer_schema"= "true",
        "infer_as_varchar"= "false"
        )
    )

Die "connection_properties" Eigenschaften "interaction_properties" und unterscheiden sich je nach Anschluss. Weitere Informationen finden Sie unter „Data and AI Common Core API – Liste der Datenquellentypen “.

Code-Beispiele für Abfragen von Flugdaten

Die folgenden Code-Beispiele zeigen, wie „ Flight service “ in R-Notebooks aufgerufen werden kann. In diesen Beispielen werden die R-Bibliothek reticulate sowie die Bibliotheken „ Pythonpyarrow “ und itc_utils„“ verwendet. itc_utils ist in allen von IBM bereitgestellten Notebook- und „ RStudio “-Laufzeitumgebungen zur Verwendung in diesen Umgebungen vorinstalliert. Weitere Informationen finden Sie unter „Verwendung des Moduls ‚ Flight service ‘ in R-Notebooks “.

Beispiel für das Auslesen von Daten aus einer Tabelle in einem Schema über eine Verbindung, auf die über den Verbindungsnamen zugegriffen wird

# Schema and Table example using connection name
library("reticulate")
pa <- import("pyarrow")
library("arrow")

itcfs <- import("itc_utils.flight_service")
client <- itcfs$get_flight_client()

data_request = dict(
"connection_name"= "CONNECTION",
"batch_size"= NUM, # Optional
"interaction_properties"= dict(
    "schema_name"= "SCHEMA",
    "table_name"= "TABLE",
    "row_limit"= NUM
    ),
"fields"= list("FIELDS") # Optional
)

flightInfo <- itcfs$get_flight_info(client, data_request=data_request)
df <- as.data.frame(itcfs$read_tables(client, flightInfo, timeout=240))
head(df)

Beispiel für das Auslesen von Daten aus einer SQL-Verbindung, auf die über den Verbindungsnamen zugegriffen wird

library("reticulate")
pa <- import("pyarrow")
library("arrow")

itcfs <- import("itc_utils.flight_service")
client <- itcfs$get_flight_client()

data_request = dict(
"connection_name"= "CONNECTION",
"num_partitions"= NUM, # Optional
"batch_size"= SIZE, # Optional
"interaction_properties"= dict(
    "select_statement"= "SELECT * FROM SCHEMA.TABLE WHERE FIELD = 'field'"
    )
)

flightInfo <- itcfs$get_flight_info(client, nb_data_request=data_request)
df <- as.data.frame(itcfs$read_tables(client, flightInfo, timeout=240))
head(df)

Die folgenden Codeausschnitte zeigen Beispiele dafür, wie man selbst erstellte Datenanfragen beim Zurückschreiben von Daten in eine Datenquelle verwendet:

Beispiel für das Schreiben von Daten in eine vorhandene Datenbanktabelle oder das Anlegen einer neuen Tabelle, falls keine vorhanden ist:

library("reticulate")
pa <- import("pyarrow")
library("arrow")

itcfs <- import("itc_utils.flight_service")
client <- itcfs$get_flight_client()

data_request = dict(
"connection_name"= "CONNECTION",
"interaction_properties"= dict(
    "schema_name"= "SCHEMA",
    "table_name"= "TABLE"
    )
)

itcfs$write_dataframe(DATA, nb_data_request = data_request)

Beispiel zum Ersetzen aller Daten in einer bestehenden Tabelle:

library("reticulate")
pa <- import("pyarrow")
library("arrow")

itcfs <- import("itc_utils.flight_service")
client <- itcfs$get_flight_client()

data_request = dict(
    "connection_name"= "CONNECTION",
    "interaction_properties"= dict(
        "schema_name"= "SCHEMA",
        "table_name"= "TABLE",
        "table_action"= "truncate",
        "write_mode"= "insert"
        )
)

itcfs$write_dataframe(DATA, nb_data_request = data_request)

Weitere Informationen