""" User feature views for recommendation system. """ from datetime import timedelta from feast import FeatureView, Field from feast.infra.offline_stores.snowflake_source import SnowflakeSource from feast.types import Float32, Int64, String, UnixTimestamp from .entities import user, hook from .config import get_snowflake_database, get_snowflake_schema # Snowflake data source for user hook features user_hook_features_source = SnowflakeSource( name="user_hook_features_snowflake", database=get_snowflake_database(), schema=get_snowflake_schema(), table="RECS_HOOKS_RANKER_USER_HOOK_FEATURE_STORE", timestamp_field="EVENT_TIMESTAMP", created_timestamp_column="CREATED_TIMESTAMP", ) # User hook features user_hook_features = FeatureView( name="user_hook_features", description="User hook features metrics including watch time of the user on the hook", entities=[user, hook], ttl=timedelta(days=30), # Keep features for 30 days schema=[ # For multi-entity feature views, include both entity columns Field(name="USER_ID", dtype=Int64), Field(name="HOOK_ID", dtype=String), Field( name="WATCH_TIME", dtype=Float32, description="Watch time", ), ], source=user_hook_features_source, online=True, # Available for online serving tags={"team": "recs"}, )