MCPcopy Index your code
hub / github.com/feast-dev/feast / compute_metrics

Function compute_metrics

sdk/python/feast/api/registry/rest/monitoring.py:85–139  ·  view source on GitHub ↗

Submit a DQM job to compute and store metrics. Returns job_id. When set_baseline is True and no date range is provided, computes baseline from all available source data.

(request: ComputeMetricsRequest)

Source from the content-addressed store, hash-verified

83
84 @router.post("/monitoring/compute", tags=["Monitoring"])
85 async def compute_metrics(request: ComputeMetricsRequest):
86 """Submit a DQM job to compute and store metrics. Returns job_id.
87
88 When set_baseline is True and no date range is provided, computes
89 baseline from all available source data.
90 """
91 store = _get_store()
92 if request.feature_view_name:
93 fv = store.registry.get_feature_view(
94 name=request.feature_view_name, project=request.project
95 )
96 assert_permissions(fv, actions=[AuthzedAction.UPDATE])
97
98 svc = _get_monitoring_service()
99
100 if request.set_baseline and not request.start_date and not request.end_date:
101 try:
102 result = svc.compute_baseline(
103 project=request.project,
104 feature_view_name=request.feature_view_name,
105 feature_names=request.feature_names,
106 )
107 return result
108 except Exception as e:
109 raise HTTPException(status_code=500, detail=str(e))
110
111 if request.granularity not in VALID_GRANULARITIES:
112 raise HTTPException(
113 status_code=400,
114 detail=f"Invalid granularity '{request.granularity}'. "
115 f"Must be one of {VALID_GRANULARITIES}",
116 )
117
118 params: Dict[str, Any] = {}
119 if request.start_date:
120 params["start_date"] = request.start_date
121 if request.end_date:
122 params["end_date"] = request.end_date
123 if request.feature_names:
124 params["feature_names"] = request.feature_names
125 params["granularity"] = request.granularity
126 params["set_baseline"] = request.set_baseline
127
128 job_id = svc.submit_job(
129 project=request.project,
130 job_type="compute",
131 feature_view_name=request.feature_view_name,
132 parameters=params,
133 )
134
135 try:
136 result = svc.execute_job(job_id)
137 return {"job_id": job_id, **result}
138 except Exception as e:
139 raise HTTPException(status_code=500, detail=str(e))
140
141 @router.post("/monitoring/auto_compute", tags=["Monitoring"])
142 async def auto_compute(request: AutoComputeRequest):

Callers

nothing calls this directly

Calls 7

assert_permissionsFunction · 0.90
_get_storeFunction · 0.85
_get_monitoring_serviceFunction · 0.85
compute_baselineMethod · 0.80
submit_jobMethod · 0.80
get_feature_viewMethod · 0.45
execute_jobMethod · 0.45

Tested by

no test coverage detected