Skip to content

Commit be0d6b5

Browse files
romiikRomik Amipara
andauthored
add telemetry for feature store (#5557)
Co-authored-by: Romik Amipara <romikdev@amazon.com>
1 parent 2e37c82 commit be0d6b5

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

src/sagemaker/feature_store/feature_group.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@
7171
TargetStoreEnum,
7272
)
7373
from sagemaker.utils import resolve_value_from_config, format_tags, Tags
74+
from sagemaker.telemetry.telemetry_logging import _telemetry_emitter
75+
from sagemaker.telemetry.constants import Feature
7476

7577
logger = logging.getLogger(__name__)
7678

@@ -672,6 +674,7 @@ class FeatureGroup:
672674
FeatureTypeEnum.STRING.value: "STRING",
673675
}
674676

677+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.create")
675678
def create(
676679
self,
677680
s3_uri: Union[str, bool],
@@ -788,10 +791,12 @@ def create(
788791

789792
return self.sagemaker_session.create_feature_group(**create_feature_store_args)
790793

794+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.delete")
791795
def delete(self):
792796
"""Delete a FeatureGroup."""
793797
self.sagemaker_session.delete_feature_group(feature_group_name=self.name)
794798

799+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.describe")
795800
def describe(self, next_token: str = None) -> Dict[str, Any]:
796801
"""Describe a FeatureGroup.
797802
@@ -805,6 +810,7 @@ def describe(self, next_token: str = None) -> Dict[str, Any]:
805810
feature_group_name=self.name, next_token=next_token
806811
)
807812

813+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.update")
808814
def update(
809815
self,
810816
feature_additions: Sequence[FeatureDefinition] = None,
@@ -843,6 +849,9 @@ def update(
843849
throughput_config=throughput_config_parameter,
844850
)
845851

852+
@_telemetry_emitter(
853+
feature=Feature.FEATURE_STORE_V2, func_name="feature_group.update_feature_metadata"
854+
)
846855
def update_feature_metadata(
847856
self,
848857
feature_name: str,
@@ -871,6 +880,9 @@ def update_feature_metadata(
871880
parameter_removals=(parameter_removals or []),
872881
)
873882

883+
@_telemetry_emitter(
884+
feature=Feature.FEATURE_STORE_V2, func_name="feature_group.describe_feature_metadata"
885+
)
874886
def describe_feature_metadata(self, feature_name: str) -> Dict[str, Any]:
875887
"""Describe feature metadata by feature name.
876888
@@ -1038,6 +1050,7 @@ def load_feature_definitions(
10381050
self.feature_definitions = feature_definitions
10391051
return self.feature_definitions
10401052

1053+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.get_record")
10411054
def get_record(
10421055
self,
10431056
record_identifier_value_as_string: str,
@@ -1057,6 +1070,7 @@ def get_record(
10571070
feature_names=feature_names,
10581071
).get("Record")
10591072

1073+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.put_record")
10601074
def put_record(
10611075
self,
10621076
record: Sequence[FeatureValue],
@@ -1080,6 +1094,7 @@ def put_record(
10801094
ttl_duration=ttl_duration.to_dict() if ttl_duration is not None else None,
10811095
)
10821096

1097+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_group.delete_record")
10831098
def delete_record(
10841099
self,
10851100
record_identifier_value_as_string: str,

src/sagemaker/feature_store/feature_store.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
SortOrderEnum,
3434
Identifier,
3535
)
36+
from sagemaker.telemetry.telemetry_logging import _telemetry_emitter
37+
from sagemaker.telemetry.constants import Feature
3638

3739

3840
@attr.s
@@ -47,6 +49,7 @@ class FeatureStore:
4749

4850
sagemaker_session: Session = attr.ib(default=Session)
4951

52+
@_telemetry_emitter(feature=Feature.FEATURE_STORE_V2, func_name="feature_store.create_dataset")
5053
def create_dataset(
5154
self,
5255
base: Union[FeatureGroup, pd.DataFrame],
@@ -92,6 +95,9 @@ def create_dataset(
9295
kms_key_id,
9396
)
9497

98+
@_telemetry_emitter(
99+
feature=Feature.FEATURE_STORE_V2, func_name="feature_store.list_feature_groups"
100+
)
95101
def list_feature_groups(
96102
self,
97103
name_contains: str = None,
@@ -137,6 +143,9 @@ def list_feature_groups(
137143
next_token=next_token,
138144
)
139145

146+
@_telemetry_emitter(
147+
feature=Feature.FEATURE_STORE_V2, func_name="feature_store.batch_get_record"
148+
)
140149
def batch_get_record(
141150
self,
142151
identifiers: Sequence[Identifier],

src/sagemaker/telemetry/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class Feature(Enum):
3030
# Note: HyperPod CLI uses codes 6 and 7
3131
JUMPSTART_V2 = 8 # Added to support JumpStart telemetry
3232
MLOPS_V2 = 9 # Added to support MLOps telemetry
33+
FEATURE_STORE_V2 = 10
3334

3435
def __str__(self): # pylint: disable=E0307
3536
"""Return the feature name."""

src/sagemaker/telemetry/telemetry_logging.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
# Note: HyperPod CLI uses codes 6 and 7
5959
str(Feature.JUMPSTART_V2): 8,
6060
str(Feature.MLOPS_V2): 9,
61+
str(Feature.FEATURE_STORE_V2): 10,
6162
}
6263

6364
STATUS_TO_CODE = {

0 commit comments

Comments
 (0)