更新特征视图中的地图项

如果您的在线存储区使用 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_1FEATURE_2:要添加的特征。
  • FEATURE_1_VALUEFEATURE_2_VALUEFEATURE_1FEATURE_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"
    }
  ]
}

后续步骤