-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Historical retrieval without an entity dataframe #1611
Comments
Does this mean the resulting |
Actually my example was poor. I've modified it to show that we can query multiple feature views. Essentially how it works is that we will query the |
Should there also be an option to "keep latest" only, when used in conjunction with the time range filtering The usecase for this in my mind is for backtesting purposes. |
Do you mean entity row or entity key? https://docs.feast.dev/concepts/data-model-and-concepts#entity-row So you would not want to return features with the same entity key over different dates? |
I was thinking entity key. Only as an option - there are use cases for enabling both of them. For example, if our machine learning deployment is a daily batch job, perhaps for back-testing we would have the Though this then raises a good question on how this kind of workflow should be productionised? E.g. if I have an hourly/daily batch which goes through our whole customer base to find fraudulent customers, how should this work in feast? We wouldn't really use the online store for this, and this API could look something like:
Probably a discussion for another thread... |
Can I give this a go and raise a PR for File based offlinestore only? I'll stick the spec written(?), though I noticed elsewhere in the repo the nomenclature used was |
I can see the value in this. In fact, some other folks have also asked for it. Would you mind creating a new issue and linking back to this issue for us? I think it's worth a separate discussion. Specifically, the need for a |
You can give it a go, but we probably won't release it until we have support for all our main stores. Perhaps a better middle ground is to add a new method to the FeatureStore class and have it throw a |
Sounds good, hopefully I'll pull something together "soon". I'll name the method something sensible as well. |
Hi there 👋 , As I already explained to Willem, we built an higher level API on our side to make the life of our users easier It basically does the following def get_historical_features(
feature_refs: List[str],
threshold: Union[datetime, date] = None,
sample_size: int = 1000,
left_feature_view: Union[pd.DataFrame, str] = None,
full_feature_names: bool = False,
) -> BigQueryRetrievalJob:
# If all the features come from the same FeatureView then we infer the `left_feature_view` parameter
# We get the unique_join_keys in order to remove some duplicate data if it exists
# It's more or less the following
query = f"""
SELECT
{', '.join(unique_join_keys)},
TIMESTAMP '{str_timestamp}' AS {timestamp_column}
FROM {source_table}
{where_clause}
GROUP BY {', '.join(unique_join_keys)}
{limit_clause}
"""
# The limit_clause only exist if we want a sample of the left FeatureView
store = FeatureStore()
# We build the query for our users and pass it to Feast
return store.get_historical_features(
entity_df=sql_query,
feature_refs=features,
full_feature_names=full_feature_names,
) Happy to have a chat about a similar API implemented in Feast |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Any workaround for the problem of getting "training datasets" (with no passing entity ids)? |
(2) Any workaround for the problem of getting "training datasets" (with no passing entity ids)? |
You can use `pull_latest_from_table_or_query` which will do the trick. Of
course it would be nice if there is a suitable abstraction that feels the
"same" as existing APIs
…On Wed, 30 Mar 2022 at 08:04, Felipe ***@***.***> wrote:
(2) Any workaround for the problem of getting "training datasets" (with no
passing entity ids)?
—
Reply to this email directly, view it on GitHub
<#1611 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AATCATVYO6JWYMIYSECBX6TVCNV4NANCNFSM455IQMGQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
--
Chapman
|
Hi there, could you please show an example of how to use |
There is an example for Spark. It doesn't understand multi sources, FeatureViews... from feast.infra.offline_stores.contrib.spark_offline_store.spark import SparkOfflineStore
fs = feast.FeatureStore(repo_path="/home/feast/feast_repo/large_foal/feature_repo")
feast_features = [
"crim",
"zn",
"indus"
]
srj_latest = SparkOfflineStore.pull_latest_from_table_or_query(
config=fs.config,
data_source=fs.get_data_source("boston_source"),
join_key_columns=["entity_id"],
feature_name_columns=feast_features,
timestamp_field="update_ts",
created_timestamp_column="create_ts",
start_date=datetime(2022, 11, 20),
end_date=datetime(2022, 11, 21)
)
srj_latest.to_spark_df().show() |
Hello, Thanks |
Hi everyone, |
@TalalZafar88 - This is not yet implemented. Do you mind to share your solution? if possible will you be able to open a PR for it? |
@TalalZafar88 if your code is openly forked, I can contribute it back to Feast. |
Is your feature request related to a problem? Please describe.
The current Feast
get_historical_features()
method requires that users provide an entity dataframe as followsHowever, many users would like the feature store to provide entities to them for training, instead of having to query or provide entities as part of the entity dataframe.
Describe the solution you'd like
Allow users to specify an existing feature view from which an entity dataframe will be queried.
With the addition of time range filtering.
The text was updated successfully, but these errors were encountered: