Skip to main content

Feature Store

Feature Store client.

Access it as client.feature_store on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.

Methods​

All methods​

apply​

apply(store_id: str, *, entities: Sequence[Mapping[str, Any]] | None = None, views: Sequence[Mapping[str, Any]] | None = None, services: Sequence[Mapping[str, Any]] | None = None) -> dict[str, Any]

Register/update entities, views and services (applied in dependency order).

Each view's change says what the apply did: created (its first version), identical, additive (updated in place) or breaking (a new version).

An on-demand view's transformCode defines transform(df): a pandas DataFrame of its source views' features and request fields in, a DataFrame with the view's features out (same rows). Applying it deploys its sandboxed transform workflow; any change to it is a new version.

deprecate_view​

deprecate_view(store_id: str, view: str, version: int) -> dict[str, Any]

Deprecate a version of a view (e.g. the older one after a breaking change).

A deprecated version is read-only and hidden from discovery; it is kept, and the feature services pinned to it still resolve it.

get_historical_features​

get_historical_features(store_id: str, feature_service: str, entity_rows: Sequence[Mapping[str, Any]] | None = None, *, entity_s3_uri: str | None = None, entity_format: str | None = None) -> dict[str, Any]

Generate leak-free point-in-time training data.

Supply the entity/label frame exactly one way: inline entity_rows, or entity_s3_uri (an s3:// URI or bare key of a Parquet/CSV frame, the bulk path for training-scale label sets). Returns the response including a presigned snapshotUrl (Parquet) the caller reads directly.

get_online_features​

get_online_features(store_id: str, feature_service: str, entity_rows: Sequence[Mapping[str, Any]], *, max_staleness_seconds: int | None = None) -> dict[str, Any]

Resolve the latest online feature values for a feature service.

get_store​

get_store(store_id: str) -> dict[str, Any]

Get a feature store with its entities, views (all versions), services.

list_stores​

list_stores(*, limit: int | None = None) -> SyncPaginator[FeatureStoreRecord]

List the feature stores the caller can use, a page at a time as you iterate.

materialize​

materialize(store_id: str, view: str) -> dict[str, Any]

Run the incremental offline -> online materialization for a view.

A batch view with a source table pulls the source's new rows into its history first (ingested in the result; None without a source).

push​

push(store_id: str, view: str, events: Sequence[Mapping[str, Any]]) -> dict[str, Any]

Push real-time events to a STREAM aggregation view.

Each event carries the entity join keys, an event_timestamp, and the aggregation source column(s); events are folded into the view's windowed online + offline tiles. This is the real-time path (use write for the batch/offline history path).

write​

write(store_id: str, view: str, rows: Sequence[Mapping[str, Any]]) -> dict[str, Any]

Ingest feature rows into a view's offline history.