创建特征组

您可以创建特征组以注册包含特征数据的 BigQuery 表或视图。

对于与特征组关联的任何 BigQuery 表或视图,您需要确保:

  • 数据源的架构符合数据源准备准则

  • 该数据源包含实体 ID,它们在名为 entity_id 的列中以 string 值的形式存在。

  • 该数据源在名为 feature_timestamp 的列中包含 timestamp 类型的特征时间戳。

创建特征组并关联 BigQuery 数据源后,您可以创建特征以与数据源中的列关联。创建特征组时,指定数据源是可选操作。但是,您需要在创建特征之前指定数据源。

使用特征组和特征注册数据源具有以下优势:

  • 您可以使用来自多个 BigQuery 数据源的特定特征列来定义用于在线传送的特征视图。

  • 您可以通过添加 feature_timestamp 列将数据格式化为时序格式。Vertex AI Feature Store 仅传送特征数据中的最新特征值,不包括历史值。

  • 在 Data Catalog 中搜索特征组资源时,您可以发现 BigQuery 源作为关联的特征数据源。

准备工作

向 Vertex AI 进行身份验证,除非您已完成此操作。

Select the tab for how you plan to use the samples on this page:

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

Python

如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

如需了解详情,请参阅 Set up authentication for a local development environment

REST

如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

    Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

通过 BigQuery 源创建特征组

使用以下示例可创建特征组并关联 BigQuery 数据源。

控制台

按照以下说明使用 Google Cloud 控制台创建特征组。

  1. 在 Google Cloud 控制台的“Vertex AI”部分,转到 Feature Store 页面。

    转到 Feature Store 页面

  2. 特征组部分中,点击创建以打开创建特征组页面上的基本信息窗格。

  3. 指定特征组名称

  4. 可选:若要添加标签,请点击添加标签,然后指定标签名称和值。您可以为一个特征组添加多个标签。

  5. BigQuery 路径字段中,点击浏览,以选择要与特征组关联的 BigQuery 源表或视图。

  6. 可选:在实体 ID 列列表中,点击 BigQuery 源表或视图中的实体 ID 列。

  7. 点击继续

  8. 注册窗格中,点击以下选项之一,以指示是否要向新特征组添加特征:

    • 包括 BigQuery 表中的所有列 - 在特征组中为 BigQuery 源表或视图中的所有列创建特征。

    • 手动输入特征 - 根据 BigQuery 来源中的特定列创建特征。对于每个特征,请输入特征名称,然后点击列表中相应的 BigQuery 源列名称。

      如需添加更多特征,请点击添加其他特征

    • 创建空特征组 - 创建特征组而不向其添加特征。

  9. 点击创建

Python

如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档


from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_group_sample(
    project: str,
    location: str,
    feature_group_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
):
    aiplatform.init(project=project, location=location)
    fg = feature_store.FeatureGroup.create(
        name=feature_group_id,
        source=feature_store.utils.FeatureGroupBigQuerySource(
            uri=bq_table_uri, entity_id_columns=entity_id_columns
        ),
    )
    return fg

  • project:您的项目 ID。
  • location:要在其中创建特征组的区域,例如 us-central1
  • feature_group_id:您要创建的新特征组的名称。
  • bq_table_uri:您要为特征组注册的 BigQuery 源表或视图的 URI。
  • entity_id_columns:包含实体 ID 的列的名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "entity_id_column_name"
    • 如需指定多个实体 ID 列,请按以下格式指定列名称:
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]

REST

如需创建 FeatureGroup 资源,请使用 featureGroups.create 方法发送 POST 请求。

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION_ID:要在其中创建特征组的区域,例如 us-central1
  • ENTITY_ID_COLUMNS:包含实体 ID 的列名称。您可以指定一列或多列。
    • 如需仅指定一个实体 ID 列,请按以下格式指定列名称:
      "entity_id_column_name"
    • 如需指定多个实体 ID 列,请按以下格式指定列名称:
      ["entity_id_column_1_name", "entity_id_column_2_name", ...]
  • PROJECT_ID:您的项目 ID。
  • FEATUREGROUP_NAME:您要创建的新特征组的名称。
  • BIGQUERY_SOURCE_URI:您要为特征组注册的 BigQuery 源表或视图的 URI。

HTTP 方法和网址:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME

请求 JSON 正文:

{
  "big_query": {
    "entity_id_columns": "ENTITY_ID_COLUMNS",
    "big_query_source": {
      "input_uri": "BIGQUERY_SOURCE_URI"
    }
  }
}

如需发送请求,请选择以下方式之一:

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME"

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/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateFeatureGroupOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-18T03:00:13.060636Z",
      "updateTime": "2023-09-18T03:00:13.060636Z"
    }
  }
}

后续步骤