Skip to content

Commit 44764ae

Browse files
committed
Add feature store telemetry
1 parent 23371ca commit 44764ae

File tree

6 files changed

+16
-0
lines changed

6 files changed

+16
-0
lines changed

sagemaker-core/src/sagemaker/core/telemetry/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class Feature(Enum):
2828
MODEL_TRAINER = 14
2929
MODEL_CUSTOMIZATION = 15
3030
MLOPS = 16
31+
FEATURE_STORE = 17
3132

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

sagemaker-core/src/sagemaker/core/telemetry/telemetry_logging.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
str(Feature.MODEL_TRAINER): 14,
5757
str(Feature.MODEL_CUSTOMIZATION): 15,
5858
str(Feature.MLOPS): 16,
59+
str(Feature.FEATURE_STORE): 17,
5960
}
6061

6162
STATUS_TO_CODE = {
@@ -81,6 +82,9 @@ def wrapper(*args, **kwargs):
8182
if len(args) > 0 and hasattr(args[0], "sagemaker_session"):
8283
# Get the sagemaker_session from the instance method args
8384
sagemaker_session = args[0].sagemaker_session
85+
elif len(args) > 0 and hasattr(args[0], "_sagemaker_session"):
86+
# Get the sagemaker_session from the instance method args (private attribute)
87+
sagemaker_session = args[0]._sagemaker_session
8488
elif feature == Feature.REMOTE_FUNCTION:
8589
# Get the sagemaker_session from the function keyword arguments for remote function
8690
sagemaker_session = kwargs.get(

sagemaker-mlops/src/sagemaker/mlops/feature_store/athena_query.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
)
1515

1616
from sagemaker.core.helper.session_helper import Session
17+
from sagemaker.core.telemetry import Feature, _telemetry_emitter
1718

1819
@dataclass
1920
class AthenaQuery:
@@ -37,6 +38,7 @@ class AthenaQuery:
3738
_result_bucket: str = field(default=None, init=False)
3839
_result_file_prefix: str = field(default=None, init=False)
3940

41+
@_telemetry_emitter(Feature.FEATURE_STORE, "AthenaQuery.run")
4042
def run(
4143
self, query_string: str, output_location: str, kms_key: str = None, workgroup: str = None
4244
) -> str:
@@ -82,6 +84,7 @@ def get_query_execution(self) -> Dict[str, Any]:
8284
"""
8385
return get_query_execution(self.sagemaker_session, self._current_query_execution_id)
8486

87+
@_telemetry_emitter(Feature.FEATURE_STORE, "AthenaQuery.as_dataframe")
8588
def as_dataframe(self, **kwargs) -> DataFrame:
8689
"""Download the result of the current query and load it into a DataFrame.
8790

sagemaker-mlops/src/sagemaker/mlops/feature_store/dataset_builder.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pandas as pd
1010

1111
from sagemaker.core.helper.session_helper import Session
12+
from sagemaker.core.telemetry import Feature, _telemetry_emitter
1213
from sagemaker.mlops.feature_store import FeatureGroup
1314
from sagemaker.mlops.feature_store.feature_definition import FeatureDefinition, FeatureTypeEnum
1415
from sagemaker.mlops.feature_store.feature_utils import (
@@ -422,6 +423,7 @@ def with_event_time_range(
422423
self._event_time_ending_timestamp = ending_timestamp
423424
return self
424425

426+
@_telemetry_emitter(Feature.FEATURE_STORE, "DatasetBuilder.to_csv_file")
425427
def to_csv_file(self) -> tuple[str, str]:
426428
"""Get query string and result in .csv format file.
427429
@@ -435,6 +437,7 @@ def to_csv_file(self) -> tuple[str, str]:
435437
return self._to_csv_from_feature_group()
436438
raise ValueError("Base must be either a FeatureGroup or a DataFrame.")
437439

440+
@_telemetry_emitter(Feature.FEATURE_STORE, "DatasetBuilder.to_dataframe")
438441
def to_dataframe(self) -> tuple[pd.DataFrame, str]:
439442
"""Get query string and result in pandas.DataFrame.
440443

sagemaker-mlops/src/sagemaker/mlops/feature_store/feature_utils.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sagemaker.mlops.feature_store import FeatureGroup as CoreFeatureGroup, FeatureGroup
1717
from sagemaker.core.helper.session_helper import Session
1818
from sagemaker.core.s3.client import S3Uploader, S3Downloader
19+
from sagemaker.core.telemetry import Feature, _telemetry_emitter
1920
from sagemaker.mlops.feature_store.feature_definition import (
2021
FeatureDefinition,
2122
FractionalFeatureDefinition,
@@ -420,6 +421,7 @@ def as_hive_ddl(
420421
return ddl
421422

422423

424+
@_telemetry_emitter(Feature.FEATURE_STORE, "ingest_dataframe")
423425
def ingest_dataframe(
424426
feature_group_name: str,
425427
data_frame: DataFrame,
@@ -471,6 +473,7 @@ def ingest_dataframe(
471473
manager.run(data_frame=data_frame, wait=wait, timeout=timeout)
472474
return manager
473475

476+
@_telemetry_emitter(Feature.FEATURE_STORE, "get_feature_group_as_dataframe")
474477
def get_feature_group_as_dataframe(
475478
feature_group_name: str,
476479
athena_bucket: str,

sagemaker-mlops/src/sagemaker/mlops/feature_store/ingestion_manager_pandas.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from sagemaker.core.resources import FeatureGroup as CoreFeatureGroup
1717
from sagemaker.core.shapes import FeatureValue
1818
from sagemaker.core.utils.utils import Unassigned
19+
from sagemaker.core.telemetry import Feature, _telemetry_emitter
1920

2021
logger = logging.getLogger(__name__)
2122

@@ -67,6 +68,7 @@ def failed_rows(self) -> List[int]:
6768
"""
6869
return self._failed_indices
6970

71+
@_telemetry_emitter(Feature.FEATURE_STORE, "IngestionManagerPandas.run")
7072
def run(
7173
self,
7274
data_frame: DataFrame,

0 commit comments

Comments
 (0)