R を使用した Flight service ・データ要求の例
Flight service および Apache Arrow Flight プロトコルを使用して、プロジェクトまたはスペース内のデータの読み取りと書き込みを行うことができます。 R では、これを行うには、オープン・ソース Python pyarrow ライブラリーを呼び出して、 R reticulate ライブラリーを使用して Flight service を呼び出します。 このライブラリーは、 Python モジュール、クラス、および関数への R インターフェースを提供します。
R を使用してデータを読み取ったり書き込んだりするには、以下のようにします。
選択したプロジェクト 資産 からノートブックにデータをロードするために、生成されたコードを使用します。 この生成されたコードは、オープン・ソースの Python
pyarrowライブラリーへの呼び出しをラップするitc_utilsライブラリーを使用します。これにより、コードの読みやすさが向上し、コード・サイズが削減されます。オープン・ソース Python
pyarrowライブラリーを使用して Flight service を呼び出すことにより、プロジェクトまたはスペース内のデータを読み取り/書き込みするための独自のコードを作成します。 以下の状況では、独自のコードを作成する必要があります。- 生成されたコードを変更する必要がある (例えば、実稼働環境で使用するため)
- 生成されたコードを追加する機能は、 資産
- このツールは、生成されたコードの追加をサポートしていません
R からの Python の呼び出しについて詳しくは、以下を参照してください。
オープン・ソース Flight Arrow R の Flight クライアント API について詳しくは、Flight RPC サーバーへの接続を参照してください。
以下のセクションでは、フライト・データ要求を使用して読み取り要求または書き込み要求のデータ・ソースおよび対話式プロパティーを指定する方法について詳しく説明します。
データ要求の構文とプロパティーについて詳しくは、 フライト・データ要求 を参照してください。
以下のデータ要求の例を使用して、 R でのデータ読み取り要求またはデータ書き込み要求のデータ・ソースおよび対話式プロパティーの指定方法を学習できます。 プロパティーは、データ・ソースによって異なります。 これらの例では、 reticulate を使用して Python 辞書を作成します。
接続 ID を使用したスキーマおよび表要求の例 ( Git 統合がないプロジェクトのみ)
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
)
接続名を使用したスキーマおよび表要求の例
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
)
接続 ID を使用した SQL 要求の例 ( Git 統合のないプロジェクトのみ)
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" )
)
接続名を使用する SQL 要求の例
data_request = dict(
"connection_name"= "CONNECTION",
"num_partitions"= NUM, # Optional
"batch_size"= SIZE, # Optional
"interaction_properties"= dict(
"select_statement"= "SELECT ... FROM <schema>.<table> WHERE ..."
)
)
資産 ID を使用したデータ・ファイル要求の例 ( Git 統合がないプロジェクトのみ)
data_request = dict(
"asset_id"= "ASSET_ID",
"project_id|space_id|catalog_id" = "ID",
"num_partitions"= NUM, # Optional
)
資産 名を使用した データ資産 要求の例
data_request = dict(
"data_name"= "DATA ASSET",
"interaction_properties"= dict(
"infer_schema"= "true",
"infer_as_varchar"= "false"
)
)
"connection_properties" プロパティーと "interaction_properties" プロパティーは、コネクターによって異なります。 詳しくは、 Data and AI Common Core API - データ・ソース・タイプのリスト を参照してください。
フライト・データ要求を使用するコード・サンプル
以下のコード例は、 R ノートブック内で Flight service を呼び出す方法を示しています。 これらの例では、 R ライブラリー reticulate と、 Python ライブラリー pyarrow および itc_utils を使用します。 itc_utils は、 IBM によって提供されるすべてのノートブックおよび RStudio ランタイム環境にプリインストールされ、これらの環境で使用できます。 詳しくは、 R ノートブックでの Flight service の使用 を参照してください。
接続名を使用してアクセスされる接続にあるスキーマ内の表からデータを読み取る例
# 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)
接続名を使用してアクセスされる SQL 接続からデータを読み取る例
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)
以下のコード・スニペットは、データ・ソースにデータを書き戻す際に、カスタム作成データ要求を使用する方法のサンプルを示しています。
既存のデータベース表にデータを書き込むか、または表が存在しない場合は新規表を作成する例:
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)
既存の表のすべてのデータを置き換える例:
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)