5.3 Creating & Consolidating Features in Agent Platform Feature Store
Key Takeaways
- Agent Platform Feature Store uses BigQuery tables or views as its offline store, so no separate offline store is provisioned.
- The Feature Registry organizes features into feature groups, each linked to a BigQuery source with entity ID columns and an optional feature timestamp column.
- Feature Store (Legacy) and Optimized online serving were deprecated on February 17, 2026, with shutdown on February 17, 2027; Bigtable online serving is the recommended path.
- Feature monitors detect drift with L-infinity distance for categorical features and Jensen-Shannon divergence for numerical features, with a default threshold of 0.3.
- Offline serving fetches historical feature values for given entity IDs and timestamps from BigQuery to build point-in-time training data.
The exam guide asks you to create and consolidate features in Agent Platform Feature Store. The goal is organizational: many teams recompute "customer lifetime value" slightly differently, which leads to duplicated effort, inconsistent models, and training-serving skew. A feature store gives the organization one governed definition used for training and serving.
The Current Architecture: BigQuery Is the Offline Store
The current Feature Store (called Feature Store V2 in older material) works differently from the legacy product:
- Feature data lives in BigQuery tables or views, which together form the offline store. Nothing is imported or copied into a separate offline store.
- Feature Store acts as a metadata and serving layer: a registry of features plus online stores that serve the latest values at low latency.
- Training and batch jobs read features with BigQuery's own tools, including point-in-time historical lookups.
Deprecations to know
| Capability | Status |
|---|---|
| Feature Store (Legacy), with entity types and its own offline store | Deprecated February 17, 2026. Shutdown February 17, 2027. Migrate to the current Feature Store |
| Optimized online serving | Deprecated February 17, 2026. Shutdown February 17, 2027. Migrate to Bigtable online serving, and use Vector Search for embeddings |
| Bigtable online serving | Current recommended online serving for large data volumes |
If an older practice question mentions entity types, ingestion jobs into a Feature Store offline store, or Optimized online serving for a new design, translate it to BigQuery sources, feature groups, and Bigtable online serving.
Data Model
Prepare the BigQuery source
- At least one entity ID column (string or int, each value under 4 KB). The default name is
entity_id, and you can combine several ID columns into a composite key. - Optional feature timestamp column (default
feature_timestamp) when the data is a time series with several rows per entity. - One column per feature. Supported types include bool, int, float, string, timestamp, bytes, and arrays of these.
- The source must be in the same region as the online store, or in a multi-region that includes it.
Register in the Feature Registry (optional but recommended)
| Resource | What it represents |
|---|---|
| FeatureGroup | A logical group of features from one BigQuery table or view, with entity ID columns and (for time series) a timestamp column |
| Feature | A specific column in that source |
| FeatureMonitor | A schedule for computing statistics and detecting drift on selected features |
| FeatureMonitorJob | The statistics and anomalies produced by one monitoring run |
Register features when the source has multiple rows per entity (so the store serves only the latest value by timestamp), when you want to pick specific columns, when you want to combine features from several sources into one feature view, or when you need feature monitoring. Without registration, each row must hold the single latest record for a unique ID.
Consolidating Features Across Teams
A practical consolidation program:
- Inventory duplicate feature logic across teams (for example, five versions of "30-day purchase count").
- Agree on one definition and implement it once as a scheduled BigQuery transformation or Dataflow pipeline that writes a feature table.
- Register the table as a feature group, with descriptions and labels so others can find it.
- Retire the duplicates, and point models at the registered features.
- Monitor the shared features for drift so every consuming model benefits.
Naming conventions that encode entity, window, and aggregation (such as customer_purchases_30d_count) make features searchable and self-documenting.
Offline Serving: Point-in-Time Training Data
To train a model, you need each feature's value as it was when the label event happened, not today's value. Offline serving (preview at the time of writing) fetches historical values for a set of entity IDs and timestamps. In Python this is fetch_historical_feature_values with an entity DataFrame of IDs and timestamps. It requires registered feature groups, and every row for the same entity must have a different timestamp. In SQL, BigQuery ML's ML.FEATURES_AT_TIME does the same kind of cutoff-aware lookup.
Example: For a loan default model with applications dated across 2025, join each application to the applicant's credit_utilization_90d as of the application date. Using the value from today would leak information from after the loan was issued.
Online Stores and Feature Views (Preview of Chapter 14)
An online store (FeatureOnlineStore) is the serving cluster. A feature view (FeatureView) inside it selects features from feature groups, or directly from a BigQuery source, and syncs them for low-latency reads. Sync can be scheduled (cron) or, for Bigtable online serving with registered feature groups in supported locations, continuous. Serving details are covered in Section 14.1.
Why Not Just Share BigQuery Tables?
Plain shared tables solve part of the problem, and the current Feature Store builds on them. The Feature Store adds:
| Need | Plain BigQuery table | Feature Store on top of BigQuery |
|---|---|---|
| Latest value per entity at low latency for online inference | Not designed for millisecond key lookups | Online store and feature views |
| Discoverable, documented feature definitions | Naming conventions only | Feature Registry with feature groups and features |
| Point-in-time historical retrieval | Hand-written joins | Offline serving by entity and timestamp |
| Drift detection on shared features | Custom jobs | Feature monitors |
If a use case is batch only and a well-governed BigQuery feature table meets it, that can be enough. Choose Feature Store when features must also be served online or governed and monitored across teams.
Monitoring Features for Drift
A feature monitor runs on a cron schedule and compares snapshots from consecutive runs using BigQuery's ML.TFDV_VALIDATE:
- Categorical features: L-infinity distance.
- Numerical features: Jensen-Shannon divergence.
- Drift threshold per feature in the range [0, 1). The default is 0.3.
Feature-level drift monitoring complements model-level monitoring (Chapter 19). If a shared feature shifts, every model that uses it is at risk.
An architect reviews a 2026 design that ingests feature values into a Feature Store offline store and creates entity types. What is the main problem with this design?
A BigQuery feature table has many rows per customer, one for each daily snapshot. The team wants online serving to return only each customer's latest values. What should they do?
How does an Agent Platform Feature Store feature monitor measure drift for a numerical feature?