0 / 0
資料の 英語版 に戻る
Python 用の project-lib
最終更新: 2024年10月04日
Python 用の project-lib

ノートブックから Watson Studio プロジェクトおよびプロジェクト資産と対話する必要がある場合は、 Python用の project-lib ライブラリーを使用できます。 このライブラリーは、プロジェクトに対するプログラマチック・インターフェースに似ています。

Python用の project-lib ライブラリーを使用すると、プロジェクトのメタデータと資産 (ファイルや接続など) にアクセスできます。 また、ライブラリーには、プロジェクトに関連付けられたファイルのフェッチを簡素化する関数も含まれています。

注:

  • project-lib関数は、ファイルへのデータの保存時またはファイルからのデータの取得時に、データをエンコードまたはデコードしません。
  • project-lib 機能を使用して、接続されているフォルダー資産 ( Cloud Object Storage内のパス上のファイル) にアクセスすることはできません。

ライブラリーの使用

Python 用の project-lib ライブラリーはプリインストールされており、ノートブック・エディターでノートブックに直接インポートできます。 ノートブックでproject-libライブラリーを使用するには、プロジェクトの ID とプロジェクト・トークンが必要です。

プロジェクト・トークンをノートブックに挿入するには、以下のようにします。

  1. ノートブックのツールバーにある「その他」アイコンをクリックして、「プロジェクト・トークンの挿入」をクリックします。

    プロジェクト・トークンが存在している場合、以下の情報が含まれたセルがノートブックに追加されます。

    from project_lib import Project
    project = Project(sc,"<ProjectId>","<ProjectToken>")
    

    sc は、Spark コンテキストです (Spark が使用されている場合)。 <ProjectId> はプロジェクトの ID であり、<ProjectToken> はプロジェクト・トークンの値です。

    プロジェクト・トークンが存在しないというメッセージが表示された場合は、メッセージ内のリンクをクリックして、プロジェクトの「アクセス制御」ページにリダイレクトします。このページで、プロジェクト・トークンを作成できます。 プロジェクト・トークンを作成する資格がなければなりません。 詳しくは、『プロジェクト・トークンの手動での追加』を参照してください。

    プロジェクト・トークンを作成するには、以下のようにします。

    1. 「管理」タブで、「アクセス制御」ページを選択し、「アクセス・トークン」の下の「新規アクセス・トークン」をクリックします。
    2. 名前を入力し、プロジェクトの「エディター」ロールを選択し、トークンを作成します。
    3. ノートブックに戻り、ノートブック・ツールバーの「その他」アイコンをクリックして、「プロジェクト・トークンの挿入」をクリックします。

project-lib関数

project-libライブラリーのインポート後に作成されるインスタンス化されたプロジェクト・オブジェクトは、以下の仕方でグループ化された関数のセットを公開します。

プロジェクト情報のフェッチ

以下の関数を使用して、プロジェクト関連情報をプログラマチックにフェッチできます。

  • get_name()

    この関数は、プロジェクトの名前を返します。

  • get_description()

    この関数は、プロジェクトの説明を返します。

  • get_metadata()

    この関数はプロジェクト・メタデータを返します。

  • get_storage_metadata()

    この関数は、プロジェクトに関連付けられているオブジェクト・ストレージのメタデータを返します。

  • get_project_bucket_name()

    この関数は、関連付けられたオブジェクト・ストレージ内のプロジェクト・バケット名を返します。 すべてのプロジェクト・ファイルは、このバケットに保管されます。

  • get_files()

    この関数は、プロジェクト内のファイルのリストを返します。 返されるリスト内の各要素には、そのファイルの ID と名前が含まれます。 返されるファイルのリストは、どの基準によってもソートされておらず、関数を再度呼び出すときに変更することができます。

  • get_assets()

    この関数は、すべてのプロジェクト資産のリストを返します。 オプション・パラメーターasset_typeを関数get_assetsに渡すことができます。これにより、タイプによって資産をフィルターに掛けることができます。 このパラメーターに指定できる値は、data_assetconnection、およびassetです。 値assetは、プロジェクト内のすべての資産を返します。 例えば、データ資産のみを取得するには、関数get_assets("data_asset")を使用します。

  • get_connections()

    この関数は、プロジェクト内にある接続のリストを返します。 返されるリスト内の各要素には、その接続の ID と名前が含まれます。

ファイルのフェッチ

以下の関数を使用して、プロジェクトに関連付けられているオブジェクト・ストレージに保管されているファイルをフェッチできます。

以下の 2 つの方法でファイルをフェッチできます。

  • get_file_url(file_name)ここで、file_nameは、フェッチするファイルの名前です。

    この関数は、Spark を使用してオブジェクト・ストレージからファイルをフェッチするための URL を返します。 この URL は、プロジェクトに関連付けられているオブジェクト・ストレージのタイプに基づいて作成されます。 プロジェクトのオブジェクト・ストレージと対話すると、Hadoop 構成が自動的にセットアップされます。

    以下の例では、この関数を使用して、Spark を使用してオブジェクト・ストレージからデータをフェッチする方法を示します。

    # Import the lib
    from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")
    
    # Get the url
    url = project.get_file_url("myFile.csv")
    
    # Fetch the CSV file from the object storage using Spark
    from pyspark.sql import SparkSession
    spark = SparkSession.builder.getOrCreate()
    df_data_1 = spark.read\
      .format('org.apache.spark.sql.execution.datasources.csv.CSVFileFormat')\
      .option('header', 'true')\
      .load(url)
    df_data_1.show(5)
    
  • get_file(file_name)ここで、file_nameは、フェッチするファイルの名前です。

    この関数は、オブジェクト・ストレージからのファイルを実行中のカーネルのメモリーにフェッチします。 この関数はバイト・バッファーを返します。これは、カーネル固有のデータ構造 (pandas DataFrame など) へのバインドに使用できます。 非常に大容量のファイルの場合、この方法でのファイルのフェッチは推奨されません。

    次の例は、ファイルをフェッチして、データを pandas DataFrame に読み込む方法を示しています。

    # Import the lib
    from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")
    
    # Fetch the file
    my_file = project.get_file("myFile.csv")
    
    # Read the CSV data file from the object storage into a pandas DataFrame
    my_file.seek(0)
    import pandas as pd
    pd.read_csv(my_file, nrows=10)
    

データの保存

次の関数を使用して、プロジェクトに関連付けられたオブジェクト・ストレージにデータを保存できます。 データは、関連付けられている Cloud Object Storage 内のプロジェクト・バケットにファイルとして追加されます。 この関数は複数のことを行います。 最初にデータをオブジェクト・ストレージに入れた後、このデータをデータ資産としてプロジェクトに追加します。これにより、ファイルとして保存したデータを、プロジェクト内のデータ資産リストで確認できるようになります。

save_data(file_name, data, set_project_asset=True, overwrite=False)

この関数は、以下のパラメーターを取ります。

  • file_name: 作成されたファイルの名前。
  • data: アップロードするデータ。 これは、タイプfile-like-objectの任意のオブジェクト (例えば、バイト・バッファーまたはストリング・バッファー) にすることができます。
  • set_project_asset[optional]: データがオブジェクト・ストレージに正常にアップロードされた後に、ファイルをデータ資産としてプロジェクトに追加します。 これはブール値を取り、デフォルトでは値 true に設定されています。
  • overwrite[optional]: ファイルがオブジェクト・ストレージまたはプロジェクトに既に存在する場合、そのファイルを上書きします。 デフォルトでは、false に設定されています。

以下の例は、データをオブジェクト・ストレージ内のファイルに保存する方法を示しています。

# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")

# let's assume you have the pandas DataFrame  pandas_df which contains the data
# you want to save in your object storage as a csv file
project.save_data("file_name.csv", pandas_df.to_csv(index=False))

# the function returns a dict which contains the asset_id, bucket_name and file_name
# upon successful saving of the data

接続からのデータの読み取り

次の関数を使用して、任意の接続のメタデータ (資格情報) を取得できます。

get_connection: この関数は、接続の ID または接続の名前を入力として取ります。 これらの値は、プロジェクトにリストされているすべての資産のidname、およびtypeを返すget_assets()関数を使用して取得できます。

関数get_connectionは、接続データ・ソースからデータをフェッチするために使用できる接続資格情報を返します。

以下の例は、get_connection関数を使用して接続の資格情報をフェッチする方法を示しています。

# Import the lib
from project_lib import Project
    project = Project(sc,"<ProjectId>", "<ProjectToken>")

conn_creds = project.get_connection(name="<ConnectionName>")

例えば、dashDB への接続の場合、次のコードを実行してデータをフェッチできます。

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

host_url = "jdbc:db2://{}:{}/{}".format(conn_creds["host"], "50000", conn_creds["database"])
data_df = spark.read.jdbc(host_url, table="<TableName>", properties={"user": conn_creds["username"], "password": conn_creds["password"]})
data_df.show()

接続データのフェッチ

次の関数を使用して、接続データの資格情報をフェッチできます。 この関数は、接続内の特定のデータを指すdatapath属性に加えて、接続資格情報を含むディクショナリーを返します。例えば、dashDB インスタンス内の表や Cloudant インスタンス内のデータベースなどです。

get_connected_data: この関数は、接続されたデータの ID または接続されたデータの名前を入力として使用します。 これらの値は、プロジェクトにリストされているすべての資産のidname、およびtypeを返すget_assets()関数を使用して取得できます。

以下の例は、get_connected_data関数を使用して dashDB インスタンス内の接続されたデータの資格情報をフェッチする方法を示しています。

# Import the lib
from project_lib import Project
project = Project(sc,"<ProjectId>", "<ProjectToken>")

creds = project.get_connected_data(name="<ConnectedDataName>")
# creds is a dictionary that has the connection credentials in addition to
# a datapath that references a specific table in the database
# creds: {'database': 'DB_NAME',
# 'datapath': '/DASH11846/SAMPLE_TABLE',
# 'host': 'dashdb-entry-yp-dal09-07.services.dal.bluemix.net',
# 'password': 'XXXX',
# 'sg_service_url': 'https://sgmanager.ng.bluemix.net',
# 'username': 'XXXX'}

詳細情報

ブログ投稿でこれらの機能のデモを見ます

親トピック: ノートブックでのデータのロードとアクセス

生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細