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

Function ValidateFeatureRefs

go/internal/feast/onlineserving/serving.go:301–348  ·  view source on GitHub ↗
(requestedFeatures []*FeatureViewAndRefs, fullFeatureNames bool)

Source from the content-addressed store, hash-verified

299}
300
301func ValidateFeatureRefs(requestedFeatures []*FeatureViewAndRefs, fullFeatureNames bool) error {
302 featureRefCounter := make(map[string]int)
303 featureRefs := make([]string, 0)
304 for _, viewAndFeatures := range requestedFeatures {
305 for _, feature := range viewAndFeatures.FeatureRefs {
306 projectedViewName := viewAndFeatures.View.Base.Name
307 if viewAndFeatures.View.Base.Projection != nil {
308 projectedViewName = viewAndFeatures.View.Base.Projection.NameToUse()
309 }
310
311 featureRefs = append(featureRefs,
312 fmt.Sprintf("%s:%s", projectedViewName, feature))
313 }
314 }
315
316 for _, featureRef := range featureRefs {
317 if fullFeatureNames {
318 featureRefCounter[featureRef]++
319 } else {
320 _, featureName, _ := ParseFeatureReference(featureRef)
321 featureRefCounter[featureName]++
322 }
323
324 }
325 for featureName, occurrences := range featureRefCounter {
326 if occurrences == 1 {
327 delete(featureRefCounter, featureName)
328 }
329 }
330 if len(featureRefCounter) >= 1 {
331 collidedFeatureRefs := make([]string, 0)
332 for collidedFeatureRef := range featureRefCounter {
333 if fullFeatureNames {
334 collidedFeatureRefs = append(collidedFeatureRefs, collidedFeatureRef)
335 } else {
336 for _, featureRef := range featureRefs {
337 _, featureName, _ := ParseFeatureReference(featureRef)
338 if featureName == collidedFeatureRef {
339 collidedFeatureRefs = append(collidedFeatureRefs, featureRef)
340 }
341 }
342 }
343 }
344 return featureNameCollisionError{collidedFeatureRefs, fullFeatureNames}
345 }
346
347 return nil
348}
349
350func TransposeFeatureRowsIntoColumns(featureData2D [][]onlinestore.FeatureData,
351 groupRef *GroupedFeaturesPerEntitySet,

Callers 1

GetOnlineFeaturesMethod · 0.92

Calls 3

ParseFeatureReferenceFunction · 0.85
deleteFunction · 0.85
NameToUseMethod · 0.80

Tested by

no test coverage detected