Python を使用した Flight service ・データ要求の例
Flight service および Apache Arrow フライト・プロトコルを使用して、プロジェクトまたはスペースで Python を使用してデータの読み取りと書き込みを行うことができます。
Python を使用してデータの読み取りまたは書き込みを行うには、以下のようにします。
Python ノートブックで、選択したプロジェクト 資産 からデータをロードするために生成されたコードを使用します。 この生成されたコードは、オープン・ソースの Python
pyarrowライブラリーへの呼び出しをラップするitc_utilsライブラリーを使用します。これにより、コードの読み取り可能性が向上し、コード・サイズが削減されます。オープン・ソース Python
pyarrowライブラリーを使用して Flight service を呼び出すことにより、プロジェクトまたはスペース内のデータを読み取り/書き込みするための独自のコードを作成します。 以下の状況では、独自のコードを作成する必要があります。- 生成されたコードを変更する必要がある (例えば、実稼働環境で使用するため)
- 生成されたコードを追加する機能は、 資産
- このツールは、生成されたコードの追加をサポートしていません
以下のセクションでは、フライト・データ要求を使用した読み取り要求のデータ・ソースおよび対話式プロパティーを指定する方法について詳しく説明します。
データ要求の構文とプロパティーについて詳しくは、 フライト・データ要求 を参照してください。
データにアクセスするには、読み取りまたは書き込みを行う 資産 の記述を含む JSON 文書を使用して、データ要求オブジェクトを作成する必要があります。 Python では、辞書を使用してこれらの JSON 文書を構成できます。
Python でデータの読み取り要求または書き込み要求のデータ・ソースおよび対話式プロパティーを指定する方法を学習するために、以下のデータ要求の例を使用できます。 プロパティーは、データ・ソースによって異なります。
スキーマおよび表要求の例
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
}
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 ..."
}
}
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
}
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
}
接続プロパティーを渡す接続への要求の例
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
}
"connection_properties" および "interaction_properties" プロパティーは、コネクターによって異なります。 詳しくは、 Data and AI Common Core API データ・ソース・タイプ を参照してください。
フライト・データ要求を使用するコード・サンプル
以下のコード・サンプルは、 Flight service を Python ノートブック内で呼び出す方法を示しています。 サンプルは、データ・ソース接続に応じたデータ要求の違いを示しています。
Flight service を呼び出す方法を示すサンプルは、 itc_utils という Python ライブラリーを使用します。これは、ノートブックで使用するために IBM によって提供されます。 詳しくは、 Flight service ノートブックの 『 』 を参照してください。 Python
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)
接続 ID を使用し、プロパティーを使用しないデータ要求の例
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)
プロパティーを使用した Db2 接続のデータ要求の例
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)