Stream Feature Usage¶
In [0]:
                Copied!
                
                
            import tecton
import pandas
from datetime import datetime
import dateutil.parser
import tecton
import pandas
from datetime import datetime
import dateutil.parser
    
        Load a Stream Feature¶
In [0]:
                Copied!
                
                
            fv = tecton.get_feature_view("last_transaction_amount_sql")
fv.summary()
fv = tecton.get_feature_view("last_transaction_amount_sql")
fv.summary()
    
        | Name | last_transaction_amount_sql | 
| Workspace | prod | 
| Description | Last user transaction amount (stream calculated) | 
| Created At | 2021-06-24 19:21:44 UTC | 
| Owner | |
| Last Modified By | matt@tecton.ai | 
| Family | fraud | 
| Source Filename | .direnv/python-3.7.4/lib/python3.7/site-packages/tecton/cli/common.py | 
| Tags | {} | 
| Type | StreamFeatureView | 
| URL | https://app.tecton.ai/app/repo/prod/features/last_transaction_amount_sql | 
| Entities | fraud_user | 
| Features | amount | 
| Feature Services | fraud_detection_feature_service, continuous_feature_service | 
| Transformation | last_transaction_amount_sql | 
| Timestamp Key | timestamp | 
| Online Materialization | Enabled | 
| Offline Materialization | Enabled | 
| Feature Start Time | 2021-05-20 00:00:00 UTC | 
| Online Join Keys | user_id | 
| Offline Join Keys | user_id | 
| Serving TTL | 30 days | 
| Schedule Interval | 1 days | 
| Online Serving Status | Running | 
| Online Serving Freshness | 31s | 
| Materialization Status | [2021-05-19 00:00:00 UTC, 2021-06-24 00:00:00 UTC] -> Ok  | 
        
        
    
In [ ]:
                Copied!
                
                
            ## Start a Streaming Job for FeatureView Transformation Results
## Start a Streaming Job for FeatureView Transformation Results
    
        In [ ]:
                Copied!
                
                
            fv.run_stream(output_temp_table="output_temp_table")
fv.run_stream(output_temp_table="output_temp_table")
    
        In [ ]:
                Copied!
                
                
            # Query the result from the streaming output table.
display(spark.sql("SELECT * FROM output_temp_table ORDER BY timestamp DESC LIMIT 5"))
# Query the result from the streaming output table.
display(spark.sql("SELECT * FROM output_temp_table ORDER BY timestamp DESC LIMIT 5"))
    
        Get a Range of Feature Values from Offline Feature Store¶
In [0]:
                Copied!
                
                
            fv.get_historical_features(start_time=datetime(2021, 6, 1), end_time=datetime(2021, 6, 30)).to_pandas().head()
fv.get_historical_features(start_time=datetime(2021, 6, 1), end_time=datetime(2021, 6, 30)).to_pandas().head()
    
        | user_id | amount | timestamp | |
|---|---|---|---|
| 0 | C1026457687 | 397567.87 | 2021-06-08 21:23:44.155591 | 
| 1 | C2041618417 | 159743.98 | 2021-06-08 21:23:47.198705 | 
| 2 | C1852835046 | 317763.09 | 2021-06-08 21:23:49.845551 | 
| 3 | C62770848 | 11338.01 | 2021-06-08 21:23:53.194352 | 
| 4 | C791189536 | 70157.52 | 2021-06-08 21:23:57.874188 | 
Read the Latest Features from Online Feature Store¶
In [0]:
                Copied!
                
                
            fv.get_online_features(join_keys={"user_id": "C1026457687"}).to_dict()
fv.get_online_features(join_keys={"user_id": "C1026457687"}).to_dict()
    
        Out[5]: {'amount': 38050.21}
Read Historical Features from Offline Feature Store with Time-Travel¶
In [0]:
                Copied!
                
                
            spine_df = pandas.DataFrame({
  'user_id': ['C1026457687', 'C2041618417'],
  'timestamp': [dateutil.parser.parse("2021-06-22 03:20:00"), dateutil.parser.parse("2021-06-14 18:00:00")]
})
display(spine_df)
spine_df = pandas.DataFrame({
  'user_id': ['C1026457687', 'C2041618417'],
  'timestamp': [dateutil.parser.parse("2021-06-22 03:20:00"), dateutil.parser.parse("2021-06-14 18:00:00")]
})
display(spine_df)
    
        | user_id | timestamp | 
|---|---|
| C1026457687 | 2021-06-22T03:20:00.000+0000 | 
| C2041618417 | 2021-06-14T18:00:00.000+0000 | 
In [0]:
                Copied!
                
                
            features_df = fv.get_historical_features(spine=spine_df).to_pandas()
display(features_df)
features_df = fv.get_historical_features(spine=spine_df).to_pandas()
display(features_df)
    
        | user_id | timestamp | last_transaction_amount_sql.amount | 
|---|---|---|
| C2041618417 | 2021-06-14T18:00:00.000+0000 | 159743.98 | 
| C1026457687 | 2021-06-22T03:20:00.000+0000 | 9214.19 |