Package: feast-teradata
Feast Teradata ConnectorOverviewWe recommend you familiarize yourself with the terminology and concepts of feast by reading the officialfeast documentation.Thefeast-teradatalibrary adds support for Teradata asOfflineStoreOnlineStoreAdditional, using Teradata as the registry (catalog) is already supported via theregistry_type: sqland included in our examples. This means that everything is located in Teradata. However, depending on the requirements, installation, etc, this can be mixed and matched with other systems as appropriate.Getting StartedTo get started, install thefeast-teradatalibrarypipinstallfeast-teradataLet's create a simple feast setup with Teradata using the standard drivers dataset. Note that you cannot usefeast initas this command only works for templates which are part of the core feast library. We intend on getting this library merged into feast core eventually but for now, you will need to use the following cli command for this specific task. All otherfeastcli commands work as expected.feast-tdinit-repoThis will then prompt you for the required information for the Teradata system and upload the example dataset. Let's assume you used the repo namedemowhen running the above command. You can find the repository files along with a file calledtest_workflow.py. Running thistest_workflow.pywill execute a complete workflow for feast with Teradata as the Registry, OfflineStore and OnlineStore.demo/
    feature_repo/
        driver_repo.py
        feature_store.yml
    test_workflow.pyFrom within thedemo/feature_repodirectory, execute the following feast command to apply (import/update) the repo definition into the registry. You will be able to see the registry metadata tables in the teradata database after running this command.feastapplyTo see the registry information in the feast ui, run the following command. Note the --registry_ttl_sec is important as by default it polls every 5 seconds.feastui--registry_ttl_sec=120Example UsageNow, lets batch read some features for training, using only entities (population) for which we have seen an event for in the last60days. The predicates (filter) used can be on anything that is relevant for the entity (population) selection for the given training dataset. Theevent_timestampis only for example purposes.fromfeastimportFeatureStorestore=FeatureStore(repo_path="feature_repo")training_df=store.get_historical_features(entity_df=f"""SELECTdriver_id,event_timestampFROM demo_feast_driver_hourly_statsWHERE event_timestamp BETWEEN (CURRENT_TIMESTAMP - INTERVAL '60' DAY) AND CURRENT_TIMESTAMP""",features=["driver_hourly_stats:conv_rate","driver_hourly_stats:acc_rate","driver_hourly_stats:avg_daily_trips"],).to_df()print(training_df.head())Thefeast-teradatalibrary allows you to use the complete set of feast APIs and functionality. Please refer to the officialfeast quickstartfor more details on the various things you can do.Additionally, if you want to see a complete (but not real-world), end-to-end example workflow example, see thedemo/test_workflow.pyscript. This is used for testing the complete feast functionality.Repo ConfigurationA feast repository is configured via thefeature_store.yaml. There are 3 sections in this that can be configured to use TeradataRegistryOfflineStoreOnlineStoreTo configure Teradata as theOnlineStore, use the following configurationonline_store:type:feast_teradata.online.teradata.TeradataOnlineStorehost:<host>database:<db>user:<user>password:<password>log_mech:<TDNEGO|LDAP|etc>To configure Teradata as theOfflineStore, use the following configurationoffline_store:type:feast_teradata.offline.teradata.TeradataOfflineStorehost:<host>database:<db>user:<user>password:<password>log_mech:<TDNEGO|LDAP|etc>To configure Teradata as theRegistry, configure theregistry_typeassqland the path as the sqlalchemy url for teradata as followsregistry:registry_type:sqlpath:teradatasql://<user>:<password>@<host>/?database=<database>&LOGMECH=<TDNEGO|LDAP|etc>cache_ttl_seconds:120Release Notes1.0.4Update: bump Feast dependency to 0.31.11.0.3Fix: Added string mapping for columns.1.0.2Doc: Improve README with details on repo configurationFix: Fix Github Release on CI ReleaseFix: Updated path variable to become OS independent.1.0.1Doc: Improve README with better getting started information.Fix: Remove pytest from requirements.txtFix: Set minimum python version to 3.8 due to feast dependency on pandas>=1.4.3Fix: Updated feast-td types conversion1.0.0Feature: Initial implementation of feast-teradata library