snowflake.ml.feature_store.FeatureStore¶
- class snowflake.ml.feature_store.FeatureStore(session: Session, database: str, name: str, default_warehouse: str, *, creation_mode: CreationOption = CreationOption.FAIL_IF_NOT_EXIST)¶
- Bases: - object- FeatureStore provides APIs to create, materialize, retrieve and manage feature pipelines. - Creates a FeatureStore instance. - Parameters:
- session – Snowpark Session to interact with Snowflake backend. 
- database – Database to create the FeatureStore instance. 
- name – Target FeatureStore name, maps to a schema in the database. 
- default_warehouse – Default warehouse for feature store compute. 
- creation_mode – If FAIL_IF_NOT_EXIST, feature store throws when required resources not already exist; If CREATE_IF_NOT_EXIST, feature store will create required resources if they not already exist. Required resources include schema and tags. Note database must already exist in either mode. 
 
- Raises:
- SnowflakeMLException – [ValueError] default_warehouse does not exist. 
- SnowflakeMLException – [ValueError] Required resources not exist when mode is FAIL_IF_NOT_EXIST. 
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
- SnowflakeMLException – [RuntimeError] Failed to create feature store. 
 
 - Example: - >>> from snowflake.ml.feature_store import ( ... FeatureStore, ... CreationMode, ... ) >>> # Create a new Feature Store: >>> fs = FeatureStore( ... session=session, ... database="MYDB", ... name="MYSCHEMA", ... default_warehouse="MYWH", ... creation_mode=CreationMode.CREATE_IF_NOT_EXIST ... ) >>> # Connect to an existing Feature Store: >>> fs = FeatureStore( ... session=session, ... database="MYDB", ... name="MYSCHEMA", ... default_warehouse="MYWH", ... creation_mode=CreationMode.FAIL_IF_NOT_EXIST ... ) - Methods - delete_entity(name: str) None¶
- Delete a previously registered Entity. - Parameters:
- name – Name of entity to be deleted. 
- Raises:
- SnowflakeMLException – [ValueError] Entity with given name not exists. 
- SnowflakeMLException – [RuntimeError] Failed to alter schema or drop tag. 
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
 
 - Example: - >>> fs = FeatureStore(...) >>> e_1 = Entity("my_entity", ['col_1'], desc='My first entity.') >>> fs.register_entity(e_1) >>> fs.list_entities().show() ----------------------------------------------------------- |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | ----------------------------------------------------------- |MY_ENTITY |["COL_1"] |My first entity. |REGTEST_RL | ----------------------------------------------------------- >>> fs.delete_entity("my_entity") >>> fs.list_entities().show() ------------------------------------------- |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | ------------------------------------------- | | | | | ------------------------------------------- 
 - delete_feature_view(feature_view: FeatureView) None¶
- delete_feature_view(feature_view: str, version: str) None
- Delete a FeatureView. - Parameters:
- feature_view – FeatureView object or name to delete. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
 
- Raises:
- SnowflakeMLException – [ValueError] FeatureView is not registered. 
 - Example: - >>> fs = FeatureStore(...) >>> fv = FeatureView('FV0', ...) >>> fv1 = fs.register_feature_view(fv, 'FIRST') >>> fv2 = fs.register_feature_view(fv, 'SECOND') >>> fs.list_feature_views().select('NAME', 'VERSION').show() ---------------------- |"NAME" |"VERSION" | ---------------------- |FV0 |SECOND | |FV0 |FIRST | ---------------------- >>> # delete with name and version >>> fs.delete_feature_view('FV0', 'FIRST') >>> fs.list_feature_views().select('NAME', 'VERSION').show() ---------------------- |"NAME" |"VERSION" | ---------------------- |FV0 |SECOND | ---------------------- >>> # delete with feature view object >>> fs.delete_feature_view(fv2) >>> fs.list_feature_views().select('NAME', 'VERSION').show() ---------------------- |"NAME" |"VERSION" | ---------------------- | | | ---------------------- 
 - generate_dataset(name: str, spine_df: DataFrame, features: list[Union[FeatureView, FeatureViewSlice]], *, version: Optional[str] = None, spine_timestamp_col: Optional[str] = None, spine_label_cols: Optional[list[str]] = None, exclude_columns: Optional[list[str]] = None, include_feature_view_timestamp_col: bool = False, desc: str = '', output_type: Literal['dataset'] = 'dataset') Dataset¶
- generate_dataset(name: str, spine_df: DataFrame, features: list[Union[FeatureView, FeatureViewSlice]], *, output_type: Literal['table'], version: Optional[str] = None, spine_timestamp_col: Optional[str] = None, spine_label_cols: Optional[list[str]] = None, exclude_columns: Optional[list[str]] = None, include_feature_view_timestamp_col: bool = False, desc: str = '') DataFrame
- Generate dataset by given source table and feature views. - Parameters:
- name – The name of the Dataset to be generated. Datasets are uniquely identified within a schema by their name and version. 
- spine_df – Snowpark DataFrame to join features into. 
- features – A list of FeatureView or FeatureViewSlice which contains features to be joined. 
- version – The version of the Dataset to be generated. If none specified, the current timestamp will be used instead. 
- spine_timestamp_col – Name of timestamp column in spine_df that will be used to join time-series features. If spine_timestamp_col is not none, the input features also must have timestamp_col. 
- spine_label_cols – Name of column(s) in spine_df that contains labels. 
- exclude_columns – Name of column(s) to exclude from the resulting training set. 
- include_feature_view_timestamp_col – Generated dataset will include timestamp column of feature view (if feature view has timestamp column) if set true. Default to false. 
- desc – A description about this dataset. 
- output_type – (Deprecated) The type of Snowflake storage to use for the generated training data. 
 
- Returns:
- If output_type is “dataset” (default), returns a Dataset object. If output_type is “table”, returns a Snowpark DataFrame representing the table. 
- Raises:
- SnowflakeMLException – [ValueError] Invalid output_type specified. 
- SnowflakeMLException – [RuntimeError] Dataset name/version already exists. 
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
 
 - Example: - >>> fs = FeatureStore(session, ...) >>> # Assume you already have feature view registered. >>> fv = fs.get_feature_view("MY_FV", "1") >>> # Spine dataframe has same join keys as the entity of fv. >>> spine_df = session.create_dataframe(["1", "2"], schema=["id"]) >>> my_dataset = fs.generate_dataset( ... "my_dataset" ... spine_df, ... [fv], ... ) >>> # Current timestamp will be used as default version name. >>> # You can explicitly overwrite by setting a version. >>> my_dataset.list_versions() ['2024_07_12_11_26_22'] >>> my_dataset.read.to_snowpark_dataframe().show(n=3) ------------------------------------------------------- |"QUALITY" |"FIXED_ACIDITY" |"VOLATILE_ACIDITY" | ------------------------------------------------------- |3 |11.600000381469727 |0.5799999833106995 | |3 |8.300000190734863 |1.0199999809265137 | |3 |7.400000095367432 |1.184999942779541 | ------------------------------------------------------- 
 - generate_training_set(spine_df: DataFrame, features: list[Union[FeatureView, snowflake.ml.feature_store.feature_view.FeatureViewSlice]], *, save_as: Optional[str] = None, spine_timestamp_col: Optional[str] = None, spine_label_cols: Optional[list[str]] = None, exclude_columns: Optional[list[str]] = None, include_feature_view_timestamp_col: bool = False) DataFrame¶
- Generate a training set from the specified Spine DataFrame and Feature Views. Result is materialized to a Snowflake Table if save_as is specified. - Parameters:
- spine_df – Snowpark DataFrame to join features into. 
- features – A list of FeatureView or FeatureViewSlice which contains features to be joined. 
- save_as – If specified, a new table containing the produced result will be created. Name can be a fully qualified name or an unqualified name. If unqualified, defaults to the Feature Store database and schema 
- spine_timestamp_col – Name of timestamp column in spine_df that will be used to join time-series features. If spine_timestamp_col is not none, the input features also must have timestamp_col. 
- spine_label_cols – Name of column(s) in spine_df that contains labels. 
- exclude_columns – Name of column(s) to exclude from the resulting training set. 
- include_feature_view_timestamp_col – Generated dataset will include timestamp column of feature view (if feature view has timestamp column) if set true. Default to false. 
 
- Returns:
- Returns a Snowpark DataFrame representing the training set. 
- Raises:
- SnowflakeMLException – [RuntimeError] Materialized table name already exists 
- SnowflakeMLException – [RuntimeError] Failed to create materialized table. 
 
 - Example: - >>> fs = FeatureStore(session, ...) >>> # Assume you already have feature view registered. >>> fv = fs.get_feature_view("MY_FV", "1") >>> # Spine dataframe has same join keys as the entity of fv. >>> spine_df = session.create_dataframe(["1", "2"], schema=["id"]) >>> training_set = fs.generate_training_set( ... spine_df, ... [fv], ... save_as="my_training_set", ... ) >>> print(type(training_set)) <class 'snowflake.snowpark.table.Table'> >>> print(training_set.queries) {'queries': ['SELECT * FROM (my_training_set)'], 'post_actions': []} 
 - get_entity(name: str) Entity¶
- Retrieve previously registered Entity object. - Parameters:
- name – Entity name. 
- Returns:
- Entity object. 
- Raises:
- SnowflakeMLException – [ValueError] Entity is not found. 
- SnowflakeMLException – [RuntimeError] Failed to retrieve tag reference information. 
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
 
 - Example: - >>> fs = FeatureStore(...) >>> # e_1 is a local object that hasn't registered to Snowflake backend yet. >>> e_1 = Entity("my_entity", ['col_1'], desc='My first entity.') >>> fs.register_entity(e_1) >>> # e_2 is a local object that points a backend object in Snowflake. >>> e_2 = fs.get_entity("my_entity") >>> print(e_2) Entity(name=MY_ENTITY, join_keys=['COL_1'], owner=REGTEST_RL, desc=My first entity.) 
 - get_feature_view(name: str, version: str) FeatureView¶
- Retrieve previously registered FeatureView. - Parameters:
- name – FeatureView name. 
- version – FeatureView version. 
 
- Returns:
- FeatureView object. 
- Raises:
- SnowflakeMLException – [ValueError] FeatureView with name and version is not found, or incurred exception when reconstructing the FeatureView object. 
 - Example: - >>> fs = FeatureStore(...) >>> # draft_fv is a local object that hasn't materialized to Snowflake backend yet. >>> draft_fv = FeatureView( ... name='foo', ... entities=[e1], ... feature_df=session.sql('...'), ... desc='this is description', ... ) >>> fs.register_feature_view(feature_view=draft_fv, version='v1') >>> # fv is a local object that maps to a Snowflake backend object. >>> fv = fs.get_feature_view('foo', 'v1') >>> print(f"name: {fv.name}") >>> print(f"version:{fv.version}") >>> print(f"desc:{fv.desc}") name: FOO version:v1 desc:this is description 
 - get_refresh_history(feature_view: FeatureView, version: Optional[str] = None, *, verbose: bool = False, store_type: Union[StoreType, str] = fv_mod.StoreType.OFFLINE) DataFrame¶
- get_refresh_history(feature_view: str, version: str, *, verbose: bool = False, store_type: Union[StoreType, str] = fv_mod.StoreType.OFFLINE) DataFrame
- Get refresh history statistics about a feature view. - Parameters:
- feature_view – A registered feature view object, or the name of feature view. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
- verbose – Return more detailed history when set true. 
- store_type – - Store to get refresh history from - StoreType.ONLINE or StoreType.OFFLINE (default). - StoreType.OFFLINE (default): Returns refresh history for the offline feature view (dynamic table). - StoreType.ONLINE: Returns refresh history for the online feature table. - Only available for feature views with online=True. 
 
- Returns:
- A dataframe contains the refresh history information. 
- Raises:
- SnowflakeMLException – [ValueError] If store_type is ONLINE but feature view doesn’t have online storage enabled. 
 - Example: - >>> fs = FeatureStore(...) >>> fv = fs.get_feature_view(name='MY_FV', version='v1') >>> # Get offline refresh history (default) >>> fs.refresh_feature_view('MY_FV', 'v1') >>> fs.get_refresh_history('MY_FV', 'v1').show() ----------------------------------------------------------------------------------------------------- |"NAME" |"STATE" |"REFRESH_START_TIME" |"REFRESH_END_TIME" |"REFRESH_ACTION" | ----------------------------------------------------------------------------------------------------- |MY_FV$v1 |SUCCEEDED |2024-07-10 14:53:58.504000 |2024-07-10 14:53:59.088000 |INCREMENTAL | ----------------------------------------------------------------------------------------------------- >>> # Get online refresh history (for feature views with online storage) >>> fs.get_refresh_history('MY_FV', 'v1', store_type=StoreType.ONLINE).show() ----------------------------------------------------------------------------------------------------- |"NAME" |"STATE" |"REFRESH_START_TIME" |"REFRESH_END_TIME" |"REFRESH_ACTION" | ----------------------------------------------------------------------------------------------------- |MY_FV$v1$ONLINE |SUCCEEDED |2024-07-10 14:54:01.200000 |2024-07-10 14:54:02.100000 |INCREMENTAL | ----------------------------------------------------------------------------------------------------- >>> # Verbose mode works for both storage types >>> fs.get_refresh_history(fv, verbose=True, store_type=StoreType.OFFLINE).show() >>> fs.get_refresh_history(fv, verbose=True, store_type=StoreType.ONLINE).show() 
 - list_entities() DataFrame¶
- List all Entities in the FeatureStore. - Returns:
- Snowpark DataFrame containing the results. 
 - Example: - >>> fs = FeatureStore(...) >>> e_1 = Entity("my_entity", ['col_1'], desc='My first entity.') >>> fs.register_entity(e_1) >>> fs.list_entities().show() ----------------------------------------------------------- |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | ----------------------------------------------------------- |MY_ENTITY |["COL_1"] |My first entity. |REGTEST_RL | ----------------------------------------------------------- 
 - list_feature_views(*, entity_name: Optional[str] = None, feature_view_name: Optional[str] = None) DataFrame¶
- List FeatureViews in the FeatureStore. If entity_name is specified, FeatureViews associated with that Entity will be listed. If feature_view_name is specified, further reducing the results to only match the specified name. - Parameters:
- entity_name – Entity name. 
- feature_view_name – FeatureView name. 
 
- Returns:
- FeatureViews information as a Snowpark DataFrame. 
 - Example: - >>> fs = FeatureStore(...) >>> draft_fv = FeatureView( ... name='foo', ... entities=[e1, e2], ... feature_df=session.sql('...'), ... desc='this is description', ... ) >>> fs.register_feature_view(feature_view=draft_fv, version='v1') >>> fs.list_feature_views().select("name", "version", "desc").show() -------------------------------------------- |"NAME" |"VERSION" |"DESC" | -------------------------------------------- |FOO |v1 |this is description | -------------------------------------------- 
 - load_feature_views_from_dataset(ds: Dataset) list[Union[FeatureView, snowflake.ml.feature_store.feature_view.FeatureViewSlice]]¶
- Retrieve FeatureViews used during Dataset construction. - Parameters:
- ds – Dataset object created from feature store. 
- Returns:
- List of FeatureViews used during Dataset construction. 
- Raises:
- ValueError – if dataset object is not generated from feature store. 
 - Example: - >>> fs = FeatureStore(session, ...) >>> # Assume you already have feature view registered. >>> fv = fs.get_feature_view("MY_FV", "1.0") >>> # Spine dataframe has same join keys as the entity of fv. >>> spine_df = session.create_dataframe(["1", "2"], schema=["id"]) >>> my_dataset = fs.generate_dataset( ... "my_dataset" ... spine_df, ... [fv], ... ) >>> fvs = fs.load_feature_views_from_dataset(my_dataset) >>> print(len(fvs)) 1 >>> print(type(fvs[0])) <class 'snowflake.ml.feature_store.feature_view.FeatureView'> >>> print(fvs[0].name) MY_FV >>> print(fvs[0].version) 1.0 
 - read_feature_view(feature_view: str, version: str, *, keys: Optional[list[list[str]]] = None, feature_names: Optional[list[str]] = None, store_type: Union[fv_mod.StoreType, str] = fv_mod.StoreType.OFFLINE) DataFrame¶
- read_feature_view(feature_view: FeatureView, *, keys: Optional[list[list[str]]] = None, feature_names: Optional[list[str]] = None, store_type: Union[fv_mod.StoreType, str] = fv_mod.StoreType.OFFLINE) DataFrame
- Read values from a FeatureView from either offline or online store. - Parameters:
- feature_view – A FeatureView object to read from, or the name of feature view. If name is provided then version also must be provided. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
- keys – Optional list of primary key value lists to filter by. Each inner list should contain values in the same order as the entity join_keys. Works for both offline and online stores. Example: [[“user1”], [“user2”]] for single key, [[“user1”, “item1”], [“user2”, “item2”]] for composite keys. If None, returns all data. 
- feature_names – Optional list of feature names to return. If None, returns all features. Works consistently for both offline and online stores. 
- store_type – Store to read from - StoreType.ONLINE or StoreType.OFFLINE (default). 
 
- Returns:
- Snowpark DataFrame containing the FeatureView data. 
- Raises:
- SnowflakeMLException – [ValueError] version argument is missing when argument feature_view is a str. 
- SnowflakeMLException – [ValueError] FeatureView is not registered. 
- SnowflakeMLException – [ValueError] Online store is not enabled for this feature view. 
- SnowflakeMLException – [ValueError] Invalid store type. 
 
 - Example: - >>> fs = FeatureStore(...) >>> # Read all data from offline store >>> fs.read_feature_view('foo', 'v1', store_type=StoreType.OFFLINE).show() ------------------------------------------ |"NAME" |"ID" |"TITLE" |"AGE" |"TS" | ------------------------------------------ |jonh |1 |boss |20 |100 | |porter |2 |manager |30 |200 | ------------------------------------------ >>> # Filter by keys in offline store >>> fs.read_feature_view('foo', 'v1', keys=[["1"], ["2"]], store_type=StoreType.OFFLINE).show() ------------------------------------------ |"NAME" |"ID" |"TITLE" |"AGE" |"TS" | ------------------------------------------ |jonh |1 |boss |20 |100 | |porter |2 |manager |30 |200 | ------------------------------------------ >>> # Read from online store with specific keys (same API) >>> fs.read_feature_view('foo', 'v1', keys=[["1"], ["2"]], store_type=StoreType.ONLINE).show() -------------------------------- |"ID" |"TITLE" |"AGE" | -------------------------------- |1 |boss |20 | |2 |manager |30 | -------------------------------- >>> # Select specific features (works for both stores) >>> fs.read_feature_view('foo', 'v1', keys=[["1"]], feature_names=["TITLE", "AGE"]).show() ---------------------- |"TITLE" |"AGE" | ---------------------- |boss |20 | ---------------------- 
 - refresh_feature_view(feature_view: str, version: str, *, store_type: Union[fv_mod.StoreType, str] = fv_mod.StoreType.OFFLINE) None¶
- refresh_feature_view(feature_view: FeatureView, version: Optional[str] = None, *, store_type: Union[fv_mod.StoreType, str] = fv_mod.StoreType.OFFLINE) None
- Manually refresh a feature view. - Parameters:
- feature_view – A registered feature view object, or the name of feature view. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
- store_type – - Specify which storage to refresh. Can be StoreType.OFFLINE or StoreType.ONLINE. - StoreType.OFFLINE (default): Refreshes the offline feature view. - StoreType.ONLINE: Refreshes the online feature table for real-time serving. - Only available for feature views with online=True. - Defaults to StoreType.OFFLINE. 
 
- Raises:
- SnowflakeMLException – [ValueError] Invalid store type. 
 - Example: - >>> fs = FeatureStore(...) >>> fv = fs.get_feature_view(name='MY_FV', version='v1') >>> # refresh with name and version >>> fs.refresh_feature_view('MY_FV', 'v1') >>> fs.get_refresh_history('MY_FV', 'v1').show() ----------------------------------------------------------------------------------------------------- |"NAME" |"STATE" |"REFRESH_START_TIME" |"REFRESH_END_TIME" |"REFRESH_ACTION" | ----------------------------------------------------------------------------------------------------- |MY_FV$v1 |SUCCEEDED |2024-07-10 14:53:58.504000 |2024-07-10 14:53:59.088000 |INCREMENTAL | ----------------------------------------------------------------------------------------------------- >>> # refresh with feature view object >>> fs.refresh_feature_view(fv) >>> fs.get_refresh_history(fv).show() ----------------------------------------------------------------------------------------------------- |"NAME" |"STATE" |"REFRESH_START_TIME" |"REFRESH_END_TIME" |"REFRESH_ACTION" | ----------------------------------------------------------------------------------------------------- |MY_FV$v1 |SUCCEEDED |2024-07-10 14:54:06.680000 |2024-07-10 14:54:07.226000 |INCREMENTAL | |MY_FV$v1 |SUCCEEDED |2024-07-10 14:53:58.504000 |2024-07-10 14:53:59.088000 |INCREMENTAL | ----------------------------------------------------------------------------------------------------- 
 - register_entity(entity: Entity) Entity¶
- Register Entity in the FeatureStore. - Parameters:
- entity – Entity object to be registered. 
- Returns:
- A registered entity object. 
- Raises:
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
 - Example: - >>> fs = FeatureStore(...) >>> e = Entity('BAR', ['A'], desc='entity bar') >>> fs.register_entity(e) >>> fs.list_entities().show() -------------------------------------------------- |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | -------------------------------------------------- |BAR |["A"] |entity bar |REGTEST_RL | -------------------------------------------------- 
 - register_feature_view(feature_view: FeatureView, version: str, *, block: bool = True, overwrite: bool = False) FeatureView¶
- Materialize a FeatureView to Snowflake backend. Incremental maintenance for updates on the source data will be automated if refresh_freq is set. NOTE: Each new materialization will trigger a full FeatureView history refresh for the data included in the - FeatureView. - Parameters:
- feature_view – FeatureView instance to materialize. 
- version – version of the registered FeatureView. NOTE: Version only accepts letters, numbers and underscore. Also version will be capitalized. 
- block – Specify whether the FeatureView backend materialization should be blocking or not. If blocking then the API will wait until the initial FeatureView data is generated. Default to true. 
- overwrite – Overwrite the existing FeatureView with same version. This is the same as dropping the FeatureView first then recreate. NOTE: there will be backfill cost associated if the FeatureView is being continuously maintained. 
 
- Returns:
- A materialized FeatureView object. 
- Raises:
- SnowflakeMLException – [ValueError] FeatureView entity has not been registered. 
- SnowflakeMLException – [ValueError] Warehouse or default warehouse is not specified. 
- SnowflakeMLException – [RuntimeError] Failed to create dynamic table, task, or view. 
- SnowflakeMLException – [RuntimeError] Failed to find resources. 
- Exception – Unexpected error during registration. 
 
 - Example: - >>> fs = FeatureStore(...) >>> # draft_fv is a local object that hasn't materialized to Snowflake backend yet. >>> feature_df = session.sql("select f_1, f_2 from source_table") >>> draft_fv = FeatureView("my_fv", [entities], feature_df) >>> print(draft_fv.status) FeatureViewStatus.DRAFT >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- | | | | ------------------------------------------- >>> # registered_fv is a local object that maps to a Snowflake backend object. >>> registered_fv = fs.register_feature_view(draft_fv, "v1") >>> print(registered_fv.status) FeatureViewStatus.ACTIVE >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- |MY_FV |v1 |ACTIVE | ------------------------------------------- 
 - resume_feature_view(feature_view: FeatureView) FeatureView¶
- resume_feature_view(feature_view: str, version: str) FeatureView
- Resume a previously suspended FeatureView. - This operation resumes both the offline feature view (dynamic table and associated task) and the online feature table (if it exists) to ensure consistent state across all storage types. - Parameters:
- feature_view – FeatureView object or name to resume. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
 
- Returns:
- A new feature view with updated status. 
 - Example: - >>> fs = FeatureStore(...) >>> # you must already have feature views registered >>> fv = fs.get_feature_view(name='MY_FV', version='v1') >>> fs.suspend_feature_view('MY_FV', 'v1') >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- |MY_FV |v1 |SUSPENDED | ------------------------------------------- >>> fs.resume_feature_view('MY_FV', 'v1') >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- |MY_FV |v1 |ACTIVE | ------------------------------------------- 
 - retrieve_feature_values(spine_df: DataFrame, features: Union[list[Union[FeatureView, snowflake.ml.feature_store.feature_view.FeatureViewSlice]], list[str]], *, spine_timestamp_col: Optional[str] = None, exclude_columns: Optional[list[str]] = None, include_feature_view_timestamp_col: bool = False) DataFrame¶
- Enrich spine dataframe with feature values. Mainly used to generate inference data input. If spine_timestamp_col is specified, point-in-time feature values will be fetched. - Parameters:
- spine_df – Snowpark DataFrame to join features into. 
- features – List of features to join into the spine_df. Can be a list of FeatureView or FeatureViewSlice, or a list of serialized feature objects from Dataset. 
- spine_timestamp_col – Timestamp column in spine_df for point-in-time feature value lookup. 
- exclude_columns – Column names to exclude from the result dataframe. 
- include_feature_view_timestamp_col – Generated dataset will include timestamp column of feature view (if feature view has timestamp column) if set true. Default to false. 
 
- Returns:
- Snowpark DataFrame containing the joined results. 
- Raises:
- ValueError – if features is empty. 
 - Example: - >>> fs = FeatureStore(...) >>> # Assume you already have feature view registered. >>> fv = fs.get_feature_view('my_fv', 'v1') >>> # Spine dataframe has same join keys as the entity of fv. >>> spine_df = session.create_dataframe(["1", "2"], schema=["id"]) >>> fs.retrieve_feature_values(spine_df, [fv]).show() -------------------- |"END_STATION_ID" | -------------------- |505 | |347 | |466 | -------------------- 
 - suspend_feature_view(feature_view: FeatureView) FeatureView¶
- suspend_feature_view(feature_view: str, version: str) FeatureView
- Suspend an active FeatureView. - This operation suspends both the offline feature view (dynamic table and associated task) and the online feature table (if it exists). - Parameters:
- feature_view – FeatureView object or name to suspend. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
 
- Returns:
- A new feature view with updated status. 
 - Example: - >>> fs = FeatureStore(...) >>> # assume you already have feature views registered >>> fv = fs.get_feature_view(name='MY_FV', version='v1') >>> fs.suspend_feature_view('MY_FV', 'v1') >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- |MY_FV |v1 |SUSPENDED | ------------------------------------------- >>> fs.resume_feature_view('MY_FV', 'v1') >>> fs.list_feature_views().select("NAME", "VERSION", "SCHEDULING_STATE").show() ------------------------------------------- |"NAME" |"VERSION" |"SCHEDULING_STATE" | ------------------------------------------- |MY_FV |v1 |ACTIVE | ------------------------------------------- 
 - update_default_warehouse(warehouse_name: str) None¶
- Update default warehouse for feature store. - Parameters:
- warehouse_name – Name of warehouse. 
- Raises:
- SnowflakeMLException – If warehouse does not exists. 
 - Example: - >>> fs = FeatureStore(...) >>> fs.update_default_warehouse("MYWH_2") >>> draft_fv = FeatureView("my_fv", ...) >>> registered_fv = fs.register_feature_view(draft_fv, '2.0') >>> print(registered_fv.warehouse) MYWH_2 
 - update_entity(name: str, *, desc: Optional[str] = None) Optional[Entity]¶
- Update a registered entity with provided information. - Parameters:
- name – Name of entity to update. 
- desc – Optional new description to apply. Default to None. 
 
- Raises:
- SnowflakeMLException – Error happen when updating. 
- Returns:
- A new entity with updated information or None if the entity doesn’t exist. 
 - Example: - >>> fs = FeatureStore(...) >>> e = Entity(name='foo', join_keys=['COL_1'], desc='old desc') >>> fs.list_entities().show() ------------------------------------------------ |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | ------------------------------------------------ |FOO |["COL_1"] |old desc |REGTEST_RL | ------------------------------------------------ >>> fs.update_entity('foo', desc='NEW DESC') >>> fs.list_entities().show() ------------------------------------------------ |"NAME" |"JOIN_KEYS" |"DESC" |"OWNER" | ------------------------------------------------ |FOO |["COL_1"] |NEW DESC |REGTEST_RL | ------------------------------------------------ 
 - update_feature_view(name: str, version: str, *, refresh_freq: Optional[str] = None, warehouse: Optional[str] = None, desc: Optional[str] = None, online_config: Optional[fv_mod.OnlineConfig] = None) FeatureView¶
- update_feature_view(name: FeatureView, version: Optional[str] = None, *, refresh_freq: Optional[str] = None, warehouse: Optional[str] = None, desc: Optional[str] = None, online_config: Optional[fv_mod.OnlineConfig] = None) FeatureView
- Update a registered feature view.
- Check feature_view.py for which fields are allowed to be updated after registration. 
 - Parameters:
- name – FeatureView object or name to suspend. 
- version – Optional version of feature view. Must set when argument feature_view is a str. 
- refresh_freq – updated refresh frequency. 
- warehouse – updated warehouse. 
- desc – description of feature view. 
- online_config – updated online configuration for the online feature table. If provided with enable=True, creates online feature table if absent. If provided with enable=False, drops online feature table if present. If None (default), no change to online status. During update, only explicitly set fields in the OnlineConfig will be updated. 
 
- Returns:
- Updated FeatureView. 
 - Example: - >>> fs = FeatureStore(...) >>> fv = FeatureView( ... name='foo', ... entities=[e1, e2], ... feature_df=session.sql('...'), ... desc='this is old description', ... ) >>> fv = fs.register_feature_view(feature_view=fv, version='v1') >>> fs.list_feature_views().select("name", "version", "desc").show() ------------------------------------------------ |"NAME" |"VERSION" |"DESC" | ------------------------------------------------ |FOO |v1 |this is old description | ------------------------------------------------ >>> # update_feature_view will apply new arguments to the registered feature view. >>> new_fv = fs.update_feature_view( ... name='foo', ... version='v1', ... desc='that is new descption', ... ) >>> fs.list_feature_views().select("name", "version", "desc").show() ------------------------------------------------ |"NAME" |"VERSION" |"DESC" | ------------------------------------------------ |FOO |v1 |THAT IS NEW DESCRIPTION | ------------------------------------------------ >>> # Enable online storage with custom configuration >>> config = OnlineConfig(enable=True, target_lag='15s') >>> online_fv = fs.update_feature_view( ... name='foo', ... version='v1', ... online_config=config, ... ) >>> print(online_fv.online) True - Raises:
- SnowflakeMLException – [RuntimeError] If FeatureView is not managed and refresh_freq is defined. 
- SnowflakeMLException – [RuntimeError] Failed to update feature view.