如果您需要检索或传送当前特征数据以及历史特征数据,请使用离线传送从 BigQuery 中提取特征值。例如,您可以使用离线传送针对特定时间戳检索特征值,以训练模型。
所有特征数据(包括历史特征数据)都保留在 BigQuery 中,这构成了特征值的离线存储区。如需使用离线传送,您必须先通过创建特征组和特征值来注册 BigQuery 数据源。此外,对于离线传送,包含相同实体 ID 的每一行都必须具有不同的时间戳。如需详细了解数据源准备准则,请参阅准备数据源。
准备工作
向 Vertex AI 进行身份验证,除非您已完成此操作。
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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_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
。