传送历史特征值

如果您需要检索或传送当前特征数据以及历史特征数据,请使用离线传送从 BigQuery 中提取特征值。例如,您可以使用离线传送针对特定时间戳检索特征值,以训练模型。

所有特征数据(包括历史特征数据)都保留在 BigQuery 中,这构成了特征值的离线存储区。如需使用离线传送,您必须先通过创建特征组和特征值来注册 BigQuery 数据源。此外,对于离线传送,包含相同实体 ID 的每一行都必须具有不同的时间戳。如需详细了解数据源准备准则,请参阅准备数据源

准备工作

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

如需在本地开发环境中使用本页面上的 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

提取历史特征值

使用以下示例可根据多个实体 ID 和时间戳中从特征中提取历史值。

Python

在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档

如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

import bigframes
import bigframes.pandas
import pandas as pd
from google.cloud import bigquery
from vertexai.resources.preview.feature_store import (Feature, FeatureGroup, offline_store)
from vertexai.resources.preview.feature_store import utils as fs_utils

fg = FeatureGroup("FEATURE_GROUP_NAME")
f1 = fg.get_feature("FEATURE_NAME_1")
f2 = fg.get_feature("FEATURE_NAME_2")

entity_df = pd.DataFrame(
  data={
    "ENTITY_ID_COLUMN": [
      "ENTITY_ID_1",
      "ENTITY_ID_2",
    ],
    "timestamp": [
      pd.Timestamp("FEATURE_TIMESTAMP_1"),
      pd.Timestamp("FEATURE_TIMESTAMP_2"),
    ],
  },
)

offline_store.fetch_historical_feature_values(
  entity_df=entity_df,
  features=[f1,f2],
)

替换以下内容:

  • FEATURE_GROUP_NAME:包含特征的现有特征组的名称。

  • FEATURE_NAME_1FEATURE_NAME_2:要从中检索特征值的已注册特征的名称。

  • ENTITY_ID_COLUMN:包含实体 ID 的列的名称。 仅当列名称已在特征组中注册时,您才能指定列名称。

  • ENTITY_ID_1ENTITY_ID_2:要为其提取特征值的实体 ID。如果要按不同时间戳为同一实体 ID 检索特征值,请指定相同实体 ID 与每个时间戳对应。

  • FEATURE_TIMESTAMP_1FEATURE_TIMESTAMP_2:与要检索的历史特征值对应的时间戳。FEATURE_TIMESTAMP_1 对应于 ENTITY_ID_1FEATURE_TIMESTAMP_2 对应于 ENTITY_ID_2,依此类推。以日期时间格式指定时间戳,例如 2024-05-01T12:00:00