如果您需要检索或传送当前特征数据以及历史特征数据,请使用离线传送从 BigQuery 中提取特征值。例如,您可以使用离线传送针对特定时间戳检索特征值,以训练模型。
所有特征数据(包括历史特征数据)都保留在 BigQuery 中,这构成了特征值的离线存储区。如需使用离线传送,您必须先通过创建特征组和特征值来注册 BigQuery 数据源。此外,对于离线传送,包含相同实体 ID 的每一行都必须具有不同的时间戳。如需详细了解数据源准备准则,请参阅准备数据源。
准备工作
向 Gemini Enterprise Agent Platform 进行身份验证,除非您已完成此操作。
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如果您使用的是本地 shell,请为您的用户账号创建本地身份验证凭证:
gcloud auth application-default login
如果您使用的是 Cloud Shell,则无需执行此操作。
如果系统返回身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI。
如需了解详情,请参阅 为本地开发环境设置身份验证。
提取历史特征值
使用以下示例可根据多个实体 ID 和时间戳中从特征中提取历史值。
Python
试用此示例之前,请按照代理平台快速入门:使用客户端库中的 Python 设置说明进行操作。 如需了解详情,请参阅 Agent Platform Python API 参考文档。
如需向 Agent Platform 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
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_1 和 FEATURE_NAME_2:要从中检索特征值的已注册特征的名称。
ENTITY_ID_COLUMN:包含实体 ID 的列的名称。 仅当列名称已在特征组中注册时,您才能指定列名称。
ENTITY_ID_1 和 ENTITY_ID_2:要为其提取特征值的实体 ID。如果要按不同时间戳为同一实体 ID 检索特征值,请指定相同实体 ID 与每个时间戳对应。
FEATURE_TIMESTAMP_1 和 FEATURE_TIMESTAMP_2:与要检索的历史特征值对应的时间戳。FEATURE_TIMESTAMP_1 对应于 ENTITY_ID_1,FEATURE_TIMESTAMP_2 对应于 ENTITY_ID_2,依此类推。以日期时间格式指定时间戳,例如
2024-05-01T12:00:00。