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

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

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

注:

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

ライブラリーの使用

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

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

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

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

    library(projectLib)
    project <- projectLib::Project$new(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()

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

  • get_connections()

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

ファイルのフェッチ

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

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

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

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

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

    # Import the lib
    library(projectLib)
    project <- projectLib::Project$new(sc, "<ProjectId>", "<ProjectToken>")
    
    # Get the url
    url <- project$get_file_url("myFile.csv")
    
    # Fetch the CSV file from the object storage using Spark
    invisible(sparkR.session(appName = "SparkSession R"))
    
    df.data <- read.df(
        url,
        source = "org.apache.spark.sql.execution.datasources.csv.CSVFileFormat",
        header = "true")
    head(df.data)
    
  • get_file(filename)ここで、filenameは、フェッチするファイルの名前です。

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

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

    # Import project lib
    library(projectLib)
    project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>")
    
    # Fetch data
    my.file <- project$get_file("my_file.csv")
    
    # Read the CSV data file into a data frame
    df.data <-  read.csv(text = rawToChar(my.file))
    head(df.data)
    

データの保存

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

save_data(filename, data, setProjectAsset=TRUE, overwrite=FALSE)

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

  • filename: 作成されたファイルの名前。
  • data: アップロードするデータ。 このパラメーターで許容されるタイプは、R ロー・オブジェクトまたはストリング・バッファーです。
  • setProjectAsset[optional]: データがオブジェクト・ストレージに正常にアップロードされた後に、ファイルをデータ資産としてプロジェクトに追加します。 これはブール値を取り、デフォルトでは値 true に設定されています。
  • overwrite[optional]: ファイルがオブジェクト・ストレージまたはプロジェクトに既に存在する場合、そのファイルを上書きします。 デフォルトでは、false に設定されています。

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

library("projectLib")
project <- access_project()

# Capture CSV data from console output
csv_lines <- capture.output(write.csv(df.data, row.names=FALSE), type="output")
csv_raw <- charToRaw(paste0(csv_lines, collapse='\n'))

project$save_data("file.csv", csv_raw)

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

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

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

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

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

# Import project lib
library(projectLib)
project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>")

# Fetch connection
conn.cred <- project$get_connection(name="<ConnectionName>")

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

library(ibmdbR)

props <- paste("DASHDB;DATABASE=BLUDB;HOSTNAME=", conn.cred$host, ";PORT=50000;PROTOCOL=TCPIP;", sep="")
conn <- idaConnect(props, uid = conn.cred$username, pwd = conn.cred$password, conType = "odbc")
idaInit(conn)

idf.1 <- ida.data.frame('<TableName>')
head(idf.1)

接続データのフェッチ

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

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

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

# Import project lib
library(projectLib)
project <- projectLib::Project$new(sc , "<ProjectId>", "<ProjectToken>")

# Fetch credentials of the connected data
conn.data <- project$get_connected_data(id="<ConnectedDataId>")

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

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