ExternalFeatureGroup#
ExternalFeatureGroup#
hsfs.feature_group.ExternalFeatureGroup(
storage_connector,
query=None,
data_format=None,
path=None,
options={},
name=None,
version=None,
description=None,
primary_key=None,
featurestore_id=None,
featurestore_name=None,
created=None,
creator=None,
id=None,
features=None,
location=None,
statistics_config=None,
event_time=None,
expectation_suite=None,
)
Creation#
create_external_feature_group#
FeatureStore.create_external_feature_group(
name,
storage_connector,
query=None,
data_format=None,
path="",
options={},
version=None,
description="",
primary_key=[],
features=[],
statistics_config=None,
event_time=None,
expectation_suite=None,
)
Create a external feature group metadata object.
Lazy
This method is lazy and does not persist any metadata in the
feature store on its own. To persist the feature group metadata in the feature store,
call the save()
method.
Arguments
- name
str
: Name of the external feature group to create. - query
Optional[str]
: A string containing a SQL query valid for the target data source. the query will be used to pull data from the data sources when the feature group is used. - data_format
Optional[str]
: If the external feature groups refers to a directory with data, the data format to use when reading it - path
Optional[str]
: The location within the scope of the storage connector, from where to read the data for the external feature group - storage_connector
hsfs.StorageConnector
: the storage connector to use to establish connectivity with the data source. - version
Optional[int]
: Version of the external feature group to retrieve, defaults toNone
and will create the feature group with incremented version from the last version in the feature store. - description
Optional[str]
: A string describing the contents of the external feature group to improve discoverability for Data Scientists, defaults to empty string""
. - primary_key
Optional[List[str]]
: A list of feature names to be used as primary key for the feature group. This primary key can be a composite key of multiple features and will be used as joining key, if not specified otherwise. Defaults to empty list[]
, and the feature group won't have any primary key. - features
Optional[List[hsfs.feature.Feature]]
: Optionally, define the schema of the external feature group manually as a list ofFeature
objects. Defaults to empty list[]
and will use the schema information of the DataFrame resulting by executing the provided query against the data source. - statistics_config
Optional[Union[hsfs.StatisticsConfig, bool, dict]]
: A configuration object, or a dictionary with keys "enabled
" to generally enable descriptive statistics computation for this external feature group,"correlations
" to turn on feature correlation computation,"histograms"
to compute feature value frequencies and"exact_uniqueness"
to compute uniqueness, distinctness and entropy. The values should be booleans indicating the setting. To fully turn off statistics computation passstatistics_config=False
. Defaults toNone
and will compute only descriptive statistics. - event_time
Optional[str]
: Optionally, provide the name of the feature containing the event time for the features in this feature group. If event_time is set the feature group can be used for point-in-time joins. Defaults toNone
. - expectation_suite
Optional[Union[hsfs.expectation_suite.ExpectationSuite, great_expectations.core.expectation_suite.ExpectationSuite]]
: Optionally, attach an expectation suite to the feature group which dataframes should be validated against upon insertion. Defaults toNone
.
Returns
ExternalFeatureGroup
. The external feature group metadata object.
Retrieval#
get_external_feature_group#
FeatureStore.get_external_feature_group(name, version=None)
Get a external feature group entity from the feature store.
Getting a external feature group from the Feature Store means getting its
metadata handle so you can subsequently read the data into a Spark or
Pandas DataFrame or use the Query
-API to perform joins between feature groups.
Arguments
- name
str
: Name of the external feature group to get. - version
Optional[int]
: Version of the external feature group to retrieve, defaults toNone
and will return theversion=1
.
Returns
ExternalFeatureGroup
: The external feature group metadata object.
Raises
RestAPIError
: If unable to retrieve feature group from the feature store.
Properties#
created#
creator#
data_format#
description#
event_time#
Event time feature in the feature group.
expectation_suite#
Expectation Suite configuration object defining the settings for data validation of the feature group.
features#
id#
location#
name#
options#
path#
primary_key#
List of features building the primary key.
query#
statistics#
Get the latest computed statistics for the feature group.
statistics_config#
Statistics configuration object defining the settings for statistics computation of the feature group.
storage_connector#
version#
Methods#
add_tag#
ExternalFeatureGroup.add_tag(name, value)
Attach a tag to a feature group.
A tag consists of a
Arguments
- name
str
: Name of the tag to be added. - value: Value of the tag to be added.
Raises
RestAPIError
in case the backend fails to add the tag.
append_features#
ExternalFeatureGroup.append_features(features)
Append features to the schema of the feature group.
Safe append
This method appends the features to the feature group description safely. In case of failure your local metadata object will contain the correct schema.
It is only possible to append features to a feature group. Removing features is considered a breaking change.
Arguments
- features
Union[hsfs.feature.Feature, List[hsfs.feature.Feature]]
: Feature or list. A feature object or list thereof to append to the schema of the feature group.
Returns
FeatureGroup
. The updated feature group object.
compute_statistics#
ExternalFeatureGroup.compute_statistics()
Recompute the statistics for the feature group and save them to the feature store. Statistics are only computed for data in the offline storage of the feature group. Returns
Statistics
. The statistics metadata object.
Raises
RestAPIError
. Unable to persist the statistics.
delete#
ExternalFeatureGroup.delete()
Drop the entire feature group along with its feature data.
Potentially dangerous operation
This operation drops all metadata associated with this version of the feature group and all the feature data in offline and online storage associated with it.
Raises
RestAPIError
.
delete_expectation_suite#
ExternalFeatureGroup.delete_expectation_suite()
Delete the expectation suite attached to the featuregroup.
Raises
RestAPIException
.
delete_tag#
ExternalFeatureGroup.delete_tag(name)
Delete a tag attached to a feature group.
Arguments
- name
str
: Name of the tag to be removed.
Raises
RestAPIError
in case the backend fails to delete the tag.
filter#
ExternalFeatureGroup.filter(f)
Apply filter to the feature group.
Selects all features and returns the resulting Query
with the applied filter.
from hsfs.feature import Feature
fg.filter(Feature("weekly_sales") > 1000)
If you are planning to join the filtered feature group later on with another feature group, make sure to select the filtered feature explicitly from the respective feature group:
fg.filter(fg.feature1 == 1).show(10)
Composite filters require parenthesis:
fg.filter((fg.feature1 == 1) | (fg.feature2 >= 2))
Arguments
- f
Union[hsfs.constructor.filter.Filter, hsfs.constructor.filter.Logic]
: Filter object.
Returns
Query
. The query object with the applied filter.
from_response_json#
ExternalFeatureGroup.from_response_json(json_dict)
get_all_validation_reports#
ExternalFeatureGroup.get_all_validation_reports(ge_type=True)
Return the latest validation report attached to the feature group if it exists.
Arguments
- ge_type
bool
: IfTrue
returns a native Great Expectation type, Hopsworks custom type otherwise. Conversion can be performed via theto_ge_type()
method on hopsworks type. Defaults toTrue
.
Returns
ValidationReport
. The latest validation report attached to the feature group.
Raises
RestAPIException
.
get_expectation_suite#
ExternalFeatureGroup.get_expectation_suite(ge_type=True)
Return the expectation suite attached to the feature group if it exists.
Arguments
- ge_type
bool
: IfTrue
returns a native Great Expectation type, Hopsworks custom type otherwise. Conversion can be performed via theto_ge_type()
method on hopsworks type. Defaults toTrue
.
Returns
ExpectationSuite
. The expectation suite attached to the feature group.
Raises
RestAPIException
.
get_feature#
ExternalFeatureGroup.get_feature(name)
Retrieve a Feature
object from the schema of the feature group.
There are several ways to access features of a feature group:
fg.feature1
fg["feature1"]
fg.get_feature("feature1")
Note
Attribute access to features works only for non-reserved names. For example
features named id
or name
will not be accessible via fg.name
, instead
this will return the name of the feature group itself. Fall back on using
the get_feature
method.
Args: name (str): [description]
Returns: [type]: [description]
get_latest_validation_report#
ExternalFeatureGroup.get_latest_validation_report(ge_type=True)
Return the latest validation report attached to the feature group if it exists.
Arguments
- ge_type
bool
: IfTrue
returns a native Great Expectation type, Hopsworks custom type otherwise. Conversion can be performed via theto_ge_type()
method on hopsworks type. Defaults toTrue
.
Returns
ValidationReport
. The latest validation report attached to the feature group.
Raises
RestAPIException
.
get_statistics#
ExternalFeatureGroup.get_statistics(commit_time=None)
Returns the statistics for this feature group at a specific time.
If commit_time
is None
, the most recent statistics are returned.
Arguments
- commit_time
Optional[str]
: Commit time in the formatYYYYMMDDhhmmss
, defaults toNone
.
Returns
Statistics
. Statistics object.
Raises
RestAPIError
.
get_tag#
ExternalFeatureGroup.get_tag(name)
Get the tags of a feature group.
Arguments
- name
str
: Name of the tag to get.
Returns
tag value
Raises
RestAPIError
in case the backend fails to retrieve the tag.
get_tags#
ExternalFeatureGroup.get_tags()
Retrieves all tags attached to a feature group.
Returns
Dict[str, obj]
of tags.
Raises
RestAPIError
in case the backend fails to retrieve the tags.
json#
ExternalFeatureGroup.json()
read#
ExternalFeatureGroup.read(dataframe_type="default")
Get the feature group as a DataFrame.
save#
ExternalFeatureGroup.save()
save_expectation_suite#
ExternalFeatureGroup.save_expectation_suite(
expectation_suite, run_validation=True, validation_ingestion_policy="ALWAYS"
)
Attach an expectation suite to a feature group and saves it for future use. If an expectation suite is already attached, it is replaced. Note that the provided expectation suite is modified inplace to include expectationId fields.
Arguments
- expectation_suite
Union[hsfs.expectation_suite.ExpectationSuite, great_expectations.core.expectation_suite.ExpectationSuite]
: The expectation suite to attach to the featuregroup. - run_validation: Set whether the expectation_suite will run on ingestion
- validation_ingestion_policy: Set the policy for ingestion to the featuregroup.
- "STRICT" only allows DataFrame passing validation to be inserted into featuregroup.
- "ALWAYS" always insert the DataFrame to the featuregroup, irrespective of overall validation result.
Raises
RestAPIException
.
save_validation_report#
ExternalFeatureGroup.save_validation_report(validation_report, ge_type=True)
Save validation report to hopsworks platform along previous reports of the same featuregroup.
Arguments
- validation_report
Union[dict, hsfs.validation_report.ValidationReport, great_expectations.core.expectation_validation_result.ExpectationSuiteValidationResult]
: The validation report to attach to the featuregroup. - ge_type
bool
: IfTrue
returns a native Great Expectation type, Hopsworks custom type otherwise. Conversion can be performed via theto_ge_type()
method on hopsworks type. Defaults toTrue
.
Raises
RestAPIException
.
select#
ExternalFeatureGroup.select(features=[])
Select a subset of features of the feature group and return a query object.
The query can be used to construct joins of feature groups or create a training dataset with a subset of features of the feature group.
Arguments
- features
List[Union[str, hsfs.feature.Feature]]
: list, optional. A list ofFeature
objects or feature names as strings to be selected, defaults to [].
Returns
Query
: A query object with the selected features of the feature group.
select_all#
ExternalFeatureGroup.select_all()
Select all features in the feature group and return a query object.
The query can be used to construct joins of feature groups or create a training dataset immediately.
Returns
Query
. A query object with all features of the feature group.
select_except#
ExternalFeatureGroup.select_except(features=[])
Select all features of the feature group except a few and return a query object.
The query can be used to construct joins of feature groups or create a training dataset with a subset of features of the feature group.
Arguments
- features
List[Union[str, hsfs.feature.Feature]]
: list, optional. A list ofFeature
objects or feature names as strings to be excluded from the selection. Defaults to [], selecting all features.
Returns
Query
: A query object with the selected features of the feature group.
show#
ExternalFeatureGroup.show(n)
Show the first n rows of the feature group.
to_dict#
ExternalFeatureGroup.to_dict()
update_description#
ExternalFeatureGroup.update_description(description)
Update the description of the feature group.
Safe update
This method updates the feature group description safely. In case of failure your local metadata object will keep the old description.
Arguments
- description
str
: New description string.
Returns
FeatureGroup
. The updated feature group object.
update_feature_description#
ExternalFeatureGroup.update_feature_description(feature_name, description)
Update the description of a single feature in this feature group.
Safe update
This method updates the feature description safely. In case of failure your local metadata object will keep the old description.
Arguments
- feature_name
str
: Name of the feature to be updated. - description
str
: New description string.
Returns
FeatureGroup
. The updated feature group object.
update_features#
ExternalFeatureGroup.update_features(features)
Update metadata of features in this feature group.
Currently it's only supported to update the description of a feature.
Unsafe update
Note that if you use an existing Feature
object of the schema in the
feature group metadata object, this might leave your metadata object in a
corrupted state if the update fails.
Arguments
- features
Union[hsfs.feature.Feature, List[hsfs.feature.Feature]]
:Feature
or list of features. A feature object or list thereof to be updated.
Returns
FeatureGroup
. The updated feature group object.
update_from_response_json#
ExternalFeatureGroup.update_from_response_json(json_dict)
update_statistics_config#
ExternalFeatureGroup.update_statistics_config()
Update the statistics configuration of the feature group.
Change the statistics_config
object and persist the changes by calling
this method.
Returns
FeatureGroup
. The updated metadata object of the feature group.
Raises
RestAPIError
.
validate#
ExternalFeatureGroup.validate(save_report=False, validation_options={})
Run validation based on the attached expectations
Returns
FeatureGroupValidation
. The feature group validation metadata object.