R 的 "ibm-watson-studio-lib
库提供对资产的访问。 它可以在笔记本编辑器或 RStudio 项目中创建的笔记本中使用。 ibm-watson-studio-lib
支持数据资产和连接的处理,以及所有其他资产类型的浏览功能。
数据资产有两种:
- 存储的数据资产是指与当前项目相关联的存储中的文件。 图书馆可以加载和保存这些文件。 对于大于 1 兆字节的数据,不建议这样做。 该库要求将数据完整地保存在内存中,这在处理庞大的数据集时可能会效率低下。
- 连接数据资产代表必须通过连接才能访问的数据。 使用该库,可以检索所连接数据资产及其连接的属性(元数据)。 这些函数不会返回已连接数据资产的数据。 您可以使用点击 "代码片段 "面板上的 "读取数据"时为您生成的代码来访问数据,也可以编写自己的代码。
ibm-watson-studio-lib
函数不会对数据进行编码或解码。 此外,"ibm-watson-studio-lib
函数不能用于访问连接的文件夹资产(项目存储路径上的文件)。设置 "ibm-watson-studio-lib
库
R 的 "ibm-watson-studio-lib
库已预装,可在笔记本编辑器中直接导入到笔记本中。 要在笔记本中使用 "ibm-watson-studio-lib
库,需要项目 ID 和项目令牌。
要将项目令牌插入到 Notebook 中:
单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
如果存在项目令牌,那么会向 Notebook 中添加一个包含下列信息的单元格:
library(ibmWatsonStudioLib) wslib <- access_project_or_space(list("token"="<ProjectToken>"))
<ProjectToken>
是项目标记的值。如果信息显示不存在项目令牌,请单击信息中的链接,跳转到项目的 "访问控制"页面,在那里可以创建项目令牌。 您必须有资格创建项目令牌。 有关详细信息,请参阅手动添加项目令牌。
要创建项目令牌,请执行以下操作:
- 从"管理"选项卡选择 "访问控制"页面,然后单击 "访问令牌"下的 "新建访问令牌"。
- 输入名称,选择项目的编辑者角色,然后创建令牌。
- 返回到 Notebook,单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
ibm-watson-studio-lib
功能
ibm-watson-studio-lib
库提供了一组按以下方式分组的函数:
获取项目信息
在开发代码时,您可能不知道数据资产或连接的确切名称。 以下功能提供了资产列表,您可以从中选择相关资产。 在所有示例中,您都可以使用 "wslib$show(assets)
来漂亮地打印列表。 每个项目的索引都印在项目前面。
list_connections()
此函数返回连接列表。 返回的连接列表不按任何标准排序,再次调用该函数时可能会发生变化。 您可以向 "
get_connection function
传递一个列表项,而不是名称。# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) assets <- wslib$list_connections() wslib$show(assets) connprops <- wslib$get_connection(assets[0])
list_connected_data()
此函数返回已连接的数据资产。 返回的连接数据资产列表不按任何标准排序,再次调用该函数时可能会发生变化。 您可以向 "
get_connected_data
函数传递一个列表项,而不是名称。list_stored_data()
该函数返回已存储数据资产(数据文件)的列表。 返回的数据资产列表不按任何标准排序,再次调用函数时可能会发生变化。 您可以向 "
load_data
和 "save_data
函数传递列表项而不是名称。注:采用启发式方法区分连接数据资产和存储数据资产。 不过,在某些情况下,返回的列表中可能会出现错误类型的数据资产。wslib$here
<\br> 通过使用这个入口点,你可以检索库正在运行的项目的元数据。 入口点 "wslib$here
提供以下功能:get_name()
此函数返回项目的名称。
get_description()
此函数返回项目的描述。
get_ID()
此函数返回项目的 ID。
get_storage()
该函数返回项目的存储信息。
获取身份验证令牌
有些任务需要验证令牌。 例如,如果您想针对数据和人工智能通用核心 API 运行自己的请求,就需要一个身份验证令牌。
您可以使用以下函数获取不记名标记:
get_current_token()
例如:
library("ibmWatsonStudioLib")
wslib <- access_project_or_space(list("token"="<ProjectToken>"))
token <- wslib$auth$get_current_token()
该函数返回 "ibm-watson-studio-lib
库当前使用的承载令牌。
访存数据
您可以使用以下函数从项目中存储的数据资产(文件)中获取数据。
load_data(asset_name_or_item, attachment_type_or_item = NULL)
该函数将已存储数据资产的数据加载到字节缓冲区。 对于超大文件,不建议使用该功能。
此函数采用以下参数:
asset_name_or_item
:(必填)包含存储数据资产名称的字符串或类似于'list_stored_data()
返回的项目。attachment_type_or_item
:(可选)要加载的附件类型。 一个数据资产可以有多个数据附件。 如果没有该参数,将加载默认附件类型,即 "data_asset
。 如果附件类型不是 "data_asset
,请指定此参数。 例如,如果纯文本数据资产附有自然语言分析的配置文件,则可作为附件类型 "data_profile_nlu
加载。下面是一个示例,告诉你如何加载数据资产的数据:
# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) # Fetch the data from a file my_file <- wslib$load_data("MyFile.csv") # Read the CSV data file into a data frame df <- read.csv(text = rawToChar(my_file)) head(df)
download_file(asset_name_or_item, file_name = NULL, attachment_type_or_item = NULL)
此函数下载已存储数据资产的数据,并将其存储到运行时文件系统中的指定文件中。 如果该文件已存在,那么会对其进行覆盖。
此函数采用以下参数:
asset_name_or_item
:(必填)包含存储数据资产名称的字符串或类似于'list_stored_data()
返回的项目。file_name
:(可选)下载数据存储的文件名。 默认为资产的附件名称。attachment_type_or_item
:(可选)要下载的附件类型。 一个数据资产可以有多个数据附件。 如果没有此参数,则下载默认附件类型,即 "data_asset
。 如果附件类型不是 "data_asset
,请指定此参数。 例如,如果纯文本数据资产附有自然语言分析的配置文件,则可作为附件类型 "data_profile_nlu
下载加载。下面是一个示例,告诉你如何使用 "
download_file
在笔记本中使用自定义 R 脚本:# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) # Let's assume you have a R script "helpers.R" with helper functions on your local machine. # Upload the script to your project using the Data Panel on the right. # Download the script to the file system of your runtime wslib$download_file("helpers.R") # Source the script to use the contained functions, e.g. ‘my_func’, in your notebook. source("helpers.R") my_func()
保存数据
在项目存储器中存储数据的功能有多种:
- 在项目存储器中存储数据
- 将数据作为数据资产(通过创建资产或覆盖现有资产)添加到项目中,以便在项目的数据资产列表中查看数据。
- 将资产与存储中的文件关联。
您可以使用以下功能保存数据:
save_data(asset_name_or_item, data, overwrite = NULL, mime_type = NULL, file_name = NULL)
此功能可将内存中的数据保存到项目存储器中。
此函数采用以下参数:
asset_name_or_item
:(必填)由 "list_stored_data()
返回的已创建资产或列表项的名称。 如果您想覆盖现有文件,可以使用该项目。data
:(必填)要上传的数据。 预期数据类型为 "raw
。overwrite
:(可选)覆盖已存储数据资产的数据(如果已存在)。 缺省值为 False。 如果传递的是资产项而不是名称,则会覆盖该资产。mime_type
:(可选)创建资产的 MIME 类型。 默认情况下,MIME 类型由资产名称后缀决定。 如果使用不带后缀的资产名称,请在此处指定 MIME 类型。 例如,"mime_type=application/text
表示纯文本数据。 覆盖资产时,该参数将被忽略。file_name
:(可选)项目存储中使用的文件名。 数据保存在与项目相关联的存储器中。 创建新资产时,文件名源自资产名,但可能不同。 如果要直接访问文件,可以指定文件名。 覆盖资产时,该参数将被忽略。下面是一个示例,告诉你如何将数据保存到文件中:
# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) # let's assume you have a data frame df which contains the data # you want to save as a csv file csv <- capture.output(write.csv(df, row.names=FALSE), type="output") csv_raw <- charToRaw(paste0(csv, collapse='\n')) wslib$save_data("my_asset_name.csv", csv_raw) # the function returns a list which contains the asset_name, asset_id, file_name and additional information upon successful saving of the data
upload_file(file_path, asset_name = NULL, file_name = NULL, overwrite = FALSE, mime_type = NULL)
该功能将运行时文件系统中的数据保存到与项目相关的文件中。
此函数采用以下参数:
file_path
:(必填)文件系统中文件的路径。asset_name
:(可选)创建的数据资产名称。 默认为要上传的文件名。file_name
:(可选)在与项目相关的存储空间中创建的文件的名称。 默认为要上传的文件名。overwrite
:(可选)覆盖存储中的现有文件。 缺省值为 False。mime_type
:(可选)创建资产的 MIME 类型。 默认情况下,MIME 类型由资产名称后缀决定。 如果使用不带后缀的资产名称,请在此处指定 MIME 类型。 例如,"mime_type='application/text'
表示纯文本数据。 覆盖资产时,该参数将被忽略。下面是一个示例,说明如何将文件上传到项目:
# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) # Let's assume you have downloaded a file and want to save it # in your project. download.file("https://some/url/data_file.csv", "data_file.csv") wslib$upload_file("data_file.csv") # The function returns a list which contains the asset_name, asset_id, file_name and additional information upon successful saving of the data.
获取连接信息
您可以使用以下函数访问给定连接的连接元数据。
get_connection(name_or_item)
此函数返回连接的属性(元数据),可用于从连接数据源获取数据。 使用 "
wslib$show(connprops)
查看属性。 返回列表项中的特殊键 ""."
提供了连接资产的信息。该函数需要以下必要参数:
name_or_item
:包含连接名称的字符串或类似于 "list_connections()
返回的项目。
请注意,在使用笔记本时,可以单击代码片段面板上的 "读取数据",生成将数据从连接加载到 pandasDataFrame代码。
获取连接数据信息
您可以使用以下功能访问已连接数据资产的元数据。
get_connected_data(name_or_item)
此函数返回连接数据资产的属性,包括底层连接的属性。 使用 "
wslib$show()
查看属性。 返回列表中的特殊键 ""."
提供了有关数据和连接资产的信息。该函数需要以下必要参数:
name_or_item
:包含连接数据资产名称的字符串,或类似于 "list_connected_data()
返回的项目。
请注意,在使用笔记本时,可以单击代码片段面板上的 "读取数据"来生成代码,以便将数据从连接的数据资产加载到 pandasDataFrame中。
通过 ID 而不是名称访问资产
最好始终使用唯一名称访问数据资产和连接。 资产名称不一定总是唯一的,当名称不明确时,"ibm-watson-studio-lib
函数会出现异常。 您可以在用户界面中重新命名数据资产,以解决冲突。
可以通过唯一 ID 访问资产,但不建议这样做,因为 ID 只在当前项目中有效,如果转移到其他项目,会破坏代码。 例如,在导出和重新导入项目时就会出现这种情况。 您可以使用相应的列表函数获取连接、已连接或已存储数据资产的 ID,例如 "list_connections()
。
入口点 "wslib$by_id
提供以下功能:
get_connection(asset_id)
此函数通过连接资产 ID 访问连接。
get_connected_data(asset_id)
此函数通过连接数据资产 ID 访问连接数据资产。
load_data(asset_id, attachment_type_or_item = NULL)
此函数通过传递资产 ID 来加载已存储数据资产的数据。 有关可传递的其他参数的说明,请参见 "
load_data()
。save_data(asset_id, data, overwrite = NULL, mime_type = NULL, file_name = NULL)
该函数通过传递资产 ID 将数据保存到已存储的数据资产中。 这意味着 "
overwrite=TRUE
。 有关可以传递的其他参数的说明,请参见 "save_data()
。download_file(asset_id, file_name = NULL, attachment_type_or_item = NULL)
此函数通过传递资产 ID 下载已存储数据资产的数据。 有关可以传递的其他参数的说明,请参见 "
download_file()
。
直接访问项目存储
您可以使用入口点 wslib$storage 从项目存储区获取数据并将数据存储到项目存储区,而无需同步项目资产。
入口点 "wslib$storage
提供以下功能:
fetch_data(filename)
该函数以字节缓冲区的形式返回文件中的数据。 文件无需注册为数据资产。
该函数需要以下必要参数:
filename
:项目中的文件名。
store_data(filename, data, overwrite = FALSE)
该功能将内存中的数据保存到存储器中,但不会创建新的数据资产。 该函数返回一个包含文件名、文件路径和其他信息的列表。 使用 "
Use wslib$show()
打印信息。此函数采用以下参数:
filename
:(必填)项目存储中的文件名。data
:(必填)要保存为原始对象的数据。overwrite
:(可选)如果存储中的文件已经存在,则覆盖该文件的数据。 默认设置为 false。
download_file(storage_filename, local_filename = NULL)
此函数下载存储文件中的数据,并将其存储到指定的本地文件中。 如果本地文件已经存在,则会被覆盖。
此函数采用以下参数:
storage_filename
:(必填)要下载的存储文件的名称。local_filename
:(可选)运行时本地文件系统中要下载文件的文件名。 省略此参数可使用存储文件名。
register_asset(storage_path, asset_name = NULL, mime_type = NULL)
此函数将存储中的文件注册为项目中的数据资产。 如果已经存在同名的数据资产,则此操作失败。 如果您有无法通过 save_data() 上传的超大文件,可以使用此函数。您可以将大文件直接上传到项目的IBM Cloud Object Storage桶,例如通过用户界面,然后使用 "
register_asset()
将其注册为数据资产。此函数采用以下参数:
storage_path
:(必填)存储文件的路径。asset_name
:(可选)创建资产的名称。 默认为文件名。mime_type
:(可选)创建资产的 MIME 类型。 默认情况下,MIME 类型由资产名称后缀决定。 如果您的文件名没有文件扩展名,或者您想设置不同的 MIME 类型,请使用此参数指定 MIME 类型。
注意:您可以多次将一个文件注册为不同的数据资产。 在项目中删除其中一个资产也会删除存储中的文件,这意味着对该文件的其他资产引用可能会中断。
星火支持
入口点 "wslib$spark
提供了使用 Spark 访问存储文件的功能。
入口点 "wslib$spark
提供以下功能:
provide_spark_context(sc)
使用此功能可启用 Spark 支持。
该函数需要以下必要参数:
sc:SparkContext。 它在笔记本运行时提供。
下面的示例展示了如何设置 Spark 支持:
library(ibmWatsonStudioLib) wslib <- access_project_or_space(list("token"="<ProjectToken>")) wslib$spark$provide_spark_context(sc)
get_data_url(asset_name)
此函数返回一个 URL,用于通过Hadoop 从 Spark 访问存储中的文件。
该函数需要以下必要参数:
asset_name
:资产名称。
storage.get_data_url(file_name)
此函数返回一个 URL,用于通过Hadoop 从 Spark 访问存储中的文件。 该函数需要的是文件名,而不是资产名。
该函数需要以下必要参数:
file_name
:项目存储区中的文件名。
浏览项目资产
入口点 "wslib$assets
提供对任何类型资产的通用只读访问。 对于选定的资产类型,有专门的功能提供更多数据。
适用的命名约定如下所示:
- 名为 "
list_<something>
的函数返回一个命名列表。 每个包含的列表代表一个资产,并包含一小组属性(元数据),用于识别该资产。 - 名为 "
get_<something>
的函数会返回一个包含资产属性的单一命名列表。
使用 "wslib$show()
漂亮打印一个列表或命名列表。
这些函数的参数要么是资产名称,要么是列表中的项目。 默认情况下,函数只返回可用资产属性的一个子集。 通过设置参数 "raw_info=TRUE
,可以获得资产的全部属性。
入口点 "wslib$assets
提供以下功能:
list_assets(asset_type, name = NULL, query = NULL, selector = NULL, raw_info = FALSE)
此函数根据给定的约束条件列出给定类型的所有资产。
此函数采用以下参数:
asset_type
:(必填)要列出的资产类型,例如 'data_asset
. 有关可用资产类型的列表,请参见 "list_asset_types()
。 使用资产类型 "asset
查看项目中所有可用资产的列表。name
:(可选)要列出的资产名称。 如果存在多个同名资产,请使用此参数。 您只能指定 "name
和 "query
"。query
:(可选)传递给数据和人工智能通用核心 API 的查询字符串,用于搜索资产。 您只能指定 "name
和 "query
"。selector
:(可选)候选资产列表项的自定义过滤功能。 如果选择器函数返回 "TRUE
,则资产包含在返回的资产列表中。raw_info
:(可选)返回所有可用的元数据。 默认情况下,该参数设置为 "FALSE
,并且只返回属性的子集。使用 "
list_assets
函数的示例:# Import the lib library("ibmWatsonStudioLib") wslib <- access_project_or_space(list("token"="<ProjectToken>")) # List all assets in the project all_assets <- wslib$assets$list_assets("asset") wslib$show(all_assets) # List all data assets with name 'MyFile.csv' assets_by_name <- wslib$assets$list_assets("data_asset", name = "MyFile.csv") # List all data assets whose name starts with "MyF" assets_by_query <- wslib$assets$list_assets("data_asset", query = "asset.name:(MyF*)") # List all data assets which are larger than 1MB sizeFilter <- function(asset) asset$metadata$size > 1000000 large_assets <- wslib$assets$list_assets("data_asset", selector = sizeFilter, raw_info = TRUE) wslib$show(large_assets) # List all notebooks notebooks <- wslib$assets$list_assets("notebook")
list_asset_types(raw_info = FALSE)
该功能列出了所有可用的资产类型。
该函数可以接受以下参数
raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。
list_datasource_types(raw_info = FALSE)
该函数列出了所有可用的数据源类型。
该函数可以接受以下参数
raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。
get_asset(name_or_item, asset_type=None, raw_info = FALSE)
该函数返回资产的元数据。
此函数采用以下参数:
name_or_item
:(必填)资产名称或类似于 "list_assets()
返回的项目的名称asset_type
:(可选)资产类型。 如果参数 "name_or_item
包含一个资产名称字符串,则需要设置 "asset_type
。raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。使用 "
list_assets
和 "get_asset
函数的示例:notebooks <- wslib$assets$list_assets("notebook") wslib$show(notebooks) notebook <- wslib$assets$get_asset(notebooks[[1]]) wslib$show(notebook)
get_connection(name_or_item, with_datasourcetype=False, raw_info = FALSE)
此函数返回连接的元数据。
此函数采用以下参数:
name_or_item
:(必填)连接名称或类似于 "list_connections()
返回的项目。with_datasourcetype
:(可选)返回有关连接数据源类型的附加信息。raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。
get_connected_data(name_or_item, with_datasourcetype=False, raw_info = FALSE)
此函数返回连接数据资产的元数据。
此函数采用以下参数:
name_or_item
:(必填)所连接数据资产的名称或类似于 "list_connected_data()
返回的项目的名称with_datasourcetype
:(可选)返回相关连接数据资产的数据源类型的附加信息。raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。
get_stored_data(name_or_item, raw_info = FALSE)
此函数返回已存储数据资产的元数据。
此函数采用以下参数:
name_or_item
:(必填)存储数据资产的名称或类似于 "list_stored_data()
返回的项目的名称raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。
list_attachments(name_or_item_or_asset, asset_type=None, raw_info = FALSE)
此函数返回资产的附件列表。
此函数采用以下参数:
name_or_item_or_asset
:(必填)资产名称或类似于 "list_stored_data()
或 "get_asset()
返回的项目。asset_type
:(可选)资产类型。 默认类型为 "data_asset
。raw_info
:(可选)返回整套元数据。 默认情况下,参数为 "FALSE
,仅返回属性的子集。使用 "
list_attachments
函数读取存储数据资产附件的示例:assets <- wslib$list_stored_data() wslib$show(assets) asset <- assets[[1]] attachments <- wslib$assets$list_attachments(asset) wslib$show(attachments) buffer <- wslib$load_data(asset, attachments[[1]])