Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Here are the methods exposed by the OfflineStore
interface, along with the core functionality supported by the method:
get_historical_features
: point-in-time correct join to retrieve historical features
pull_latest_from_table_or_query
: retrieve latest feature values for materialization into the online store
pull_all_from_table_or_query
: retrieve a saved dataset
offline_write_batch
: persist dataframes to the offline store, primarily for push sources
write_logged_features
: persist logged features to the offline store, for feature logging
The first three of these methods all return a RetrievalJob
specific to an offline store, such as a SnowflakeRetrievalJob
. Here is a list of functionality supported by RetrievalJob
s:
export to dataframe
export to arrow table
export to arrow batches (to handle large datasets in memory)
export to SQL
export to data lake (S3, GCS, etc.)
export to data warehouse
export as Spark dataframe
local execution of Python-based on-demand transforms
remote execution of Python-based on-demand transforms
persist results in the offline store
preview the query plan before execution (RetrievalJob
s are lazily executed)
read partitioned data
There are currently four core offline store implementations: FileOfflineStore
, BigQueryOfflineStore
, SnowflakeOfflineStore
, and RedshiftOfflineStore
. There are several additional implementations contributed by the Feast community (PostgreSQLOfflineStore
, SparkOfflineStore
, and TrinoOfflineStore
), which are not guaranteed to be stable or to match the functionality of the core implementations. Details for each specific offline store, such as how to configure it in a feature_store.yaml
, can be found here.
Below is a matrix indicating which offline stores support which methods.
Below is a matrix indicating which RetrievalJob
s support what functionality.
The file offline store provides support for reading . It uses Dask as the compute engine.
All data is downloaded and joined using Python and therefore may not scale to production workloads.
The full set of configuration options is available in .
The set of functionality supported by offline stores is described in detail . Below is a matrix indicating which functionality is supported by the file offline store.
File |
---|
Below is a matrix indicating which functionality is supported by FileRetrievalJob
.
File | BigQuery | Snowflake | Redshift | Postgres | Spark | Trino | |
---|---|---|---|---|---|---|---|
File | BigQuery | Snowflake | Redshift | Postgres | Spark | Trino | |
---|---|---|---|---|---|---|---|
File |
---|
To compare this set of functionality against other offline stores, please see the full .
get_historical_features
yes
yes
yes
yes
yes
yes
yes
pull_latest_from_table_or_query
yes
yes
yes
yes
yes
yes
yes
pull_all_from_table_or_query
yes
yes
yes
yes
yes
yes
yes
offline_write_batch
yes
yes
yes
yes
no
no
no
write_logged_features
yes
yes
yes
yes
no
no
no
export to dataframe
yes
yes
yes
yes
yes
yes
yes
export to arrow table
yes
yes
yes
yes
yes
yes
yes
export to arrow batches
no
no
no
yes
no
no
no
export to SQL
no
yes
yes
yes
yes
no
yes
export to data lake (S3, GCS, etc.)
no
no
yes
no
yes
no
no
export to data warehouse
no
yes
yes
yes
yes
no
no
export as Spark dataframe
no
no
yes
no
no
yes
no
local execution of Python-based on-demand transforms
yes
yes
yes
yes
yes
no
yes
remote execution of Python-based on-demand transforms
no
no
no
no
no
no
no
persist results in the offline store
yes
yes
yes
yes
yes
yes
no
preview the query plan before execution
yes
yes
yes
yes
yes
yes
yes
read partitioned data
yes
yes
yes
yes
yes
yes
yes
export to dataframe | yes |
export to arrow table | yes |
export to arrow batches | no |
export to SQL | no |
export to data lake (S3, GCS, etc.) | no |
export to data warehouse | no |
export as Spark dataframe | no |
local execution of Python-based on-demand transforms | yes |
remote execution of Python-based on-demand transforms | no |
persist results in the offline store | yes |
preview the query plan before execution | yes |
read partitioned data | yes |
| yes |
| yes |
| yes |
| yes |
| yes |
The Snowflake offline store provides support for reading SnowflakeSources.
All joins happen within Snowflake.
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be uploaded to Snowflake as a temporary table in order to complete join operations.
In order to use this offline store, you'll need to run pip install 'feast[snowflake]'
.
If you're using a file based registry, then you'll also need to install the relevant cloud extra (pip install 'feast[snowflake, CLOUD]'
where CLOUD
is one of aws
, gcp
, azure
)
You can get started by then running feast init -t snowflake
.
The full set of configuration options is available in SnowflakeOfflineStoreConfig.
The set of functionality supported by offline stores is described in detail here. Below is a matrix indicating which functionality is supported by the Snowflake offline store.
Below is a matrix indicating which functionality is supported by SnowflakeRetrievalJob
.
To compare this set of functionality against other offline stores, please see the full functionality matrix.
The BigQuery offline store provides support for reading BigQuerySources.
All joins happen within BigQuery.
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be uploaded to BigQuery as a table (marked for expiration) in order to complete join operations.
In order to use this offline store, you'll need to run pip install 'feast[gcp]'
. You can get started by then running feast init -t gcp
.
The full set of configuration options is available in BigQueryOfflineStoreConfig.
The set of functionality supported by offline stores is described in detail here. Below is a matrix indicating which functionality is supported by the BigQuery offline store.
Below is a matrix indicating which functionality is supported by BigQueryRetrievalJob
.
*See GitHub issue for details on proposed solutions for enabling the BigQuery offline store to understand tables that use _PARTITIONTIME
as the partition column.
To compare this set of functionality against other offline stores, please see the full functionality matrix.
Please see Offline Store for a conceptual explanation of offline stores.
The Redshift offline store provides support for reading .
All joins happen within Redshift.
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be uploaded to Redshift temporarily in order to complete join operations.
In order to use this offline store, you'll need to run pip install 'feast[aws]'
. You can get started by then running feast init -t aws
.
Below is a matrix indicating which functionality is supported by RedshiftRetrievalJob
.
Feast requires the following permissions in order to execute commands for Redshift offline store:
The following inline policy can be used to grant Feast the necessary permissions:
The following inline policy can be used to grant Redshift necessary permissions to access S3:
While the following trust relationship is necessary to make sure that Redshift, and only Redshift can assume this role:
The Spark offline store provides support for reading .
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be converted to a Spark dataframe and processed as a temporary view.
The Spark offline store does not achieve full test coverage. Please do not assume complete stability.
In order to use this offline store, you'll need to run pip install 'feast[spark]'
. You can get started by then running feast init -t spark
.
Below is a matrix indicating which functionality is supported by SparkRetrievalJob
.
The MsSQL offline store provides support for reading . Specifically, it is developed to read from on Microsoft Azure
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe.
In order to use this offline store, you'll need to run pip install 'feast[azure]'
. You can get started by then following this .
The MsSQL offline store does not achieve full test coverage. Please do not assume complete stability.
Below is a matrix indicating which functionality is supported by MsSqlServerRetrievalJob
.
The PostgreSQL offline store provides support for reading .
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be uploaded to Postgres as a table in order to complete join operations.
The PostgreSQL offline store does not achieve full test coverage. Please do not assume complete stability.
In order to use this offline store, you'll need to run pip install 'feast[postgres]'
. You can get started by then running feast init -t postgres
.
Below is a matrix indicating which functionality is supported by PostgreSQLRetrievalJob
.
Snowflake | |
---|---|
Snowflake | |
---|---|
BigQuery | |
---|---|
BigQuery | |
---|---|
The full set of configuration options is available in .
The set of functionality supported by offline stores is described in detail . Below is a matrix indicating which functionality is supported by the Redshift offline store.
Redshift |
---|
Redshift |
---|
To compare this set of functionality against other offline stores, please see the full .
In addition to this, Redshift offline store requires an IAM role that will be used by Redshift itself to interact with S3. More concretely, Redshift has to use this IAM role to run and commands. Once created, this IAM role needs to be configured in feature_store.yaml
file as offline_store: iam_role
.
In order to use , specify a workgroup instead of a cluster_id and user.
Please note that the IAM policies above will need the version, rather than the standard .
The full set of configuration options is available in .
The set of functionality supported by offline stores is described in detail . Below is a matrix indicating which functionality is supported by the Spark offline store.
Spark |
---|
Spark |
---|
To compare this set of functionality against other offline stores, please see the full .
The set of functionality supported by offline stores is described in detail . Below is a matrix indicating which functionality is supported by the Spark offline store.
MsSql |
---|
MsSql |
---|
To compare this set of functionality against other offline stores, please see the full .
Note that sslmode
, sslkey_path
, sslcert_path
, and sslrootcert_path
are optional parameters. The full set of configuration options is available in .
The set of functionality supported by offline stores is described in detail . Below is a matrix indicating which functionality is supported by the PostgreSQL offline store.
Postgres |
---|
Postgres |
---|
To compare this set of functionality against other offline stores, please see the full .
get_historical_features
(point-in-time correct join)
yes
pull_latest_from_table_or_query
(retrieve latest feature values)
yes
pull_all_from_table_or_query
(retrieve a saved dataset)
yes
offline_write_batch
(persist dataframes to offline store)
yes
write_logged_features
(persist logged features to offline store)
yes
export to dataframe
yes
export to arrow table
yes
export to arrow batches
yes
export to SQL
yes
export to data lake (S3, GCS, etc.)
yes
export to data warehouse
yes
export as Spark dataframe
yes
local execution of Python-based on-demand transforms
yes
remote execution of Python-based on-demand transforms
no
persist results in the offline store
yes
preview the query plan before execution
yes
read partitioned data
yes
get_historical_features
(point-in-time correct join)
yes
pull_latest_from_table_or_query
(retrieve latest feature values)
yes
pull_all_from_table_or_query
(retrieve a saved dataset)
yes
offline_write_batch
(persist dataframes to offline store)
yes
write_logged_features
(persist logged features to offline store)
yes
export to dataframe
yes
export to arrow table
yes
export to arrow batches
no
export to SQL
yes
export to data lake (S3, GCS, etc.)
no
export to data warehouse
yes
export as Spark dataframe
no
local execution of Python-based on-demand transforms
yes
remote execution of Python-based on-demand transforms
no
persist results in the offline store
yes
preview the query plan before execution
yes
read partitioned data*
partial
| yes |
| yes |
| yes |
| yes |
| yes |
export to dataframe | yes |
export to arrow table | yes |
export to arrow batches | yes |
export to SQL | yes |
export to data lake (S3, GCS, etc.) | no |
export to data warehouse | yes |
export as Spark dataframe | no |
local execution of Python-based on-demand transforms | yes |
remote execution of Python-based on-demand transforms | no |
persist results in the offline store | yes |
preview the query plan before execution | yes |
read partitioned data | yes |
Command | Permissions | Resources |
Apply | redshift-data:DescribeTable redshift:GetClusterCredentials | arn:aws:redshift:<region>:<account_id>:dbuser:<redshift_cluster_id>/<redshift_username> arn:aws:redshift:<region>:<account_id>:dbname:<redshift_cluster_id>/<redshift_database_name> arn:aws:redshift:<region>:<account_id>:cluster:<redshift_cluster_id> |
Materialize | redshift-data:ExecuteStatement | arn:aws:redshift:<region>:<account_id>:cluster:<redshift_cluster_id> |
Materialize | redshift-data:DescribeStatement | * |
Materialize | s3:ListBucket s3:GetObject s3:DeleteObject | arn:aws:s3:::<bucket_name> arn:aws:s3:::<bucket_name>/* |
Get Historical Features | redshift-data:ExecuteStatement redshift:GetClusterCredentials | arn:aws:redshift:<region>:<account_id>:dbuser:<redshift_cluster_id>/<redshift_username> arn:aws:redshift:<region>:<account_id>:dbname:<redshift_cluster_id>/<redshift_database_name> arn:aws:redshift:<region>:<account_id>:cluster:<redshift_cluster_id> |
Get Historical Features | redshift-data:DescribeStatement | * |
Get Historical Features | s3:ListBucket s3:GetObject s3:PutObject s3:DeleteObject | arn:aws:s3:::<bucket_name> arn:aws:s3:::<bucket_name>/* |
| yes |
| yes |
| yes |
| no |
| no |
export to dataframe | yes |
export to arrow table | yes |
export to arrow batches | no |
export to SQL | no |
export to data lake (S3, GCS, etc.) | no |
export to data warehouse | no |
export as Spark dataframe | yes |
local execution of Python-based on-demand transforms | no |
remote execution of Python-based on-demand transforms | no |
persist results in the offline store | yes |
preview the query plan before execution | yes |
read partitioned data | yes |
| yes |
| yes |
| yes |
| no |
| no |
export to dataframe | yes |
export to arrow table | yes |
export to arrow batches | no |
export to SQL | no |
export to data lake (S3, GCS, etc.) | no |
export to data warehouse | no |
local execution of Python-based on-demand transforms | no |
remote execution of Python-based on-demand transforms | no |
persist results in the offline store | yes |
| yes |
| yes |
| yes |
| no |
| no |
export to dataframe | yes |
export to arrow table | yes |
export to arrow batches | no |
export to SQL | yes |
export to data lake (S3, GCS, etc.) | yes |
export to data warehouse | yes |
export as Spark dataframe | no |
local execution of Python-based on-demand transforms | yes |
remote execution of Python-based on-demand transforms | no |
persist results in the offline store | yes |
preview the query plan before execution | yes |
read partitioned data | yes |
The Trino offline store provides support for reading TrinoSources.
Entity dataframes can be provided as a SQL query or can be provided as a Pandas dataframe. A Pandas dataframes will be uploaded to Trino as a table in order to complete join operations.
The Trino offline store does not achieve full test coverage. Please do not assume complete stability.
In order to use this offline store, you'll need to run pip install 'feast[trino]'
. You can then run feast init
, then swap out feature_store.yaml
with the below example to connect to Trino.
The full set of configuration options is available in TrinoOfflineStoreConfig.
The set of functionality supported by offline stores is described in detail here. Below is a matrix indicating which functionality is supported by the Trino offline store.
Below is a matrix indicating which functionality is supported by TrinoRetrievalJob
.
To compare this set of functionality against other offline stores, please see the full functionality matrix.
Trino | |
---|---|
Trino | |
---|---|
get_historical_features
(point-in-time correct join)
yes
pull_latest_from_table_or_query
(retrieve latest feature values)
yes
pull_all_from_table_or_query
(retrieve a saved dataset)
yes
offline_write_batch
(persist dataframes to offline store)
no
write_logged_features
(persist logged features to offline store)
no
export to dataframe
yes
export to arrow table
yes
export to arrow batches
no
export to SQL
yes
export to data lake (S3, GCS, etc.)
no
export to data warehouse
no
export as Spark dataframe
no
local execution of Python-based on-demand transforms
yes
remote execution of Python-based on-demand transforms
no
persist results in the offline store
no
preview the query plan before execution
yes
read partitioned data
yes