1010from great_expectations .core import ExpectationSuite
1111
1212from ads import deprecated
13+ from oci .feature_store .models import (
14+ DatasetFeatureGroupCollection ,
15+ DatasetFeatureGroupSummary ,
16+ )
17+
1318from ads .common import utils
1419from ads .common .oci_mixin import OCIModelMixin
1520from ads .feature_store .common .enums import (
2934 OciExecutionStrategyProvider ,
3035)
3136from ads .feature_store .feature import DatasetFeature
37+ from ads .feature_store .feature_group import FeatureGroup
3238from ads .feature_store .feature_group_expectation import Expectation
3339from ads .feature_store .feature_option_details import FeatureOptionDetails
3440from ads .feature_store .service .oci_dataset import OCIDataset
@@ -116,6 +122,7 @@ class Dataset(Builder):
116122 CONST_ITEMS = "items"
117123 CONST_LAST_JOB_ID = "jobId"
118124 CONST_MODEL_DETAILS = "modelDetails"
125+ CONST_FEATURE_GROUP = "datasetFeatureGroups"
119126
120127 attribute_map = {
121128 CONST_ID : "id" ,
@@ -133,6 +140,7 @@ class Dataset(Builder):
133140 CONST_LIFECYCLE_STATE : "lifecycle_state" ,
134141 CONST_MODEL_DETAILS : "model_details" ,
135142 CONST_PARTITION_KEYS : "partition_keys" ,
143+ CONST_FEATURE_GROUP : "dataset_feature_groups" ,
136144 }
137145
138146 def __init__ (self , spec : Dict = None , ** kwargs ) -> None :
@@ -530,6 +538,44 @@ def with_model_details(self, model_details: ModelDetails) -> "Dataset":
530538
531539 return self .set_spec (self .CONST_MODEL_DETAILS , model_details .to_dict ())
532540
541+ @property
542+ def feature_groups (self ) -> List ["FeatureGroup" ]:
543+ collection : "DatasetFeatureGroupCollection" = self .get_spec (
544+ self .CONST_FEATURE_GROUP
545+ )
546+ feature_groups : List ["FeatureGroup" ] = []
547+ if collection :
548+ for datasetFGSummary in collection .items :
549+ feature_groups .append (
550+ FeatureGroup .from_id (datasetFGSummary .feature_group_id )
551+ )
552+
553+ return feature_groups
554+
555+ @feature_groups .setter
556+ def feature_groups (self , feature_groups : List ["FeatureGroup" ]):
557+ self .with_feature_groups (feature_groups )
558+
559+ def with_feature_groups (self , feature_groups : List ["FeatureGroup" ]) -> "Dataset" :
560+ """Sets the model details for the dataset.
561+
562+ Parameters
563+ ----------
564+ feature_groups: List of feature groups
565+ Returns
566+ -------
567+ Dataset
568+ The Dataset instance (self).
569+
570+ """
571+ collection : List ["DatasetFeatureGroupSummary" ] = []
572+ for group in feature_groups :
573+ collection .append (DatasetFeatureGroupSummary (feature_group_id = group .id ))
574+
575+ return self .set_spec (
576+ self .CONST_FEATURE_GROUP , DatasetFeatureGroupCollection (items = collection )
577+ )
578+
533579 @property
534580 def partition_keys (self ) -> List [str ]:
535581 return self .get_spec (self .CONST_PARTITION_KEYS )
0 commit comments