如果您的在线存储区使用 Bigtable 在线传送,您可以直接更新特征视图中的特征值,而无需实时更新特征数据源。您可以更新现有 ID 的特征值,也可以添加新的实体 ID 以及相应的特征值。在以下情况下使用此功能:
您希望以比批量同步更快的速度将特征写入在线存储区,同时将数据新鲜度保持在 100 毫秒或更短的时间内。
您希望检索功能写入在线存储区时的时间戳。
Vertex AI Feature Store 不会根据直接写入特征视图实例的特征数据来更新 BigQuery 中的特征数据源。在数据同步期间,Vertex AI Feature Store 会使用具有最新时间戳的特征值更新特征视图。例如,如果您直接在特征视图中更新某个特征值,随后又在 BigQuery 源中更新同一特征,那么在下一次数据同步期间,Vertex AI Feature Store 会使用 BigQuery 中最近更新的特征值来更新特征视图。
如果您想为多个特征视图中使用的特征列添加或更新特征值,则必须分别对每个特征视图进行相同的更新。
如果在线存储区实例配置为优化在线传送,您就无法直接将特征写入该在线存储区中的特征视图。
请注意,此功能不允许您在特征视图中添加或移除特征列。此外,您无法删除现有特征值或实体 ID。
准备工作
向 Vertex AI 进行身份验证,除非您已完成此操作。
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭证。
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
直接在特征视图中更新特征
使用以下示例将特征写入特征视图中的实体。
REST
如需将特征值直接写入 FeatureView
实例,可以使用 featureViews.directWrite
方法发送 POST
请求。
在使用任何请求数据之前,请先进行以下替换:
- LOCATION_ID:要将特征写入到的特征视图所在的区域,例如
us-central1
。 - PROJECT_ID:您的项目 ID。
- FEATUREONLINESTORE_NAME:包含特征视图的在线存储区实例的名称。
- FEATUREVIEW_NAME:要将特征写入其中的新特征视图实例的名称。
- ENTITY_ID:要为其添加特征值的实体 ID。
- FEATURE_1 和 FEATURE_2:要添加的特征。
- FEATURE_1_VALUE 和 FEATURE_2_VALUE:FEATURE_1 和 FEATURE_2 的特征值。
HTTP 方法和网址:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:directWrite
请求 JSON 正文:
[ { "feature_view": "LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME", "data_key_and_feature_values": { "data_key": { "key": "ENTITY_ID" }, "features": [{ "name": "FEATURE_1", "value_and_timestamp": { "value": { "string_value": "FEATURE_1_VALUE" } } }, { "name": "FEATURE_2", "value_and_timestamp": { "value": { "string_value": "FEATURE_2_VALUE" } } } ] } } ]
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:directWrite"
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/featureOnlineStores/FEATUREONLINESTORE_NAME/featureViews/FEATUREVIEW_NAME:directWrite" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "status": {}, "writeResponses": [ { "dataKey": { "key": "ENTITY_ID" }, "onlineStoreWriteTime": "2025-04-01T01:30:09.525061Z" } ] }