public static PredictDictionary GetInputsFromParentKeys(this PredictorPredictContext ctx, Dictionary <QueryToken, object?> parentKeyValues, PredictionOptions?options = null) { if (!ctx.Predictor.MainQuery.GroupResults) { var kvp = parentKeyValues.SingleEx(); if (kvp.Key.FullKey() != "Entity") { throw new InvalidOperationException("only Entity expected"); } var filters = new List <Filter> { new FilterCondition(kvp.Key, FilterOperation.EqualTo, kvp.Value) }; return(ctx.FromFilters(filters, options).SingleEx()); } else { var filters = ctx.Predictor.MainQuery.Columns .Select(a => a.Token.Token) .Where(t => !(t is AggregateToken)) .Select(t => (Filter) new FilterCondition(t, FilterOperation.EqualTo, parentKeyValues.GetOrThrow(t))) .ToList(); return(ctx.FromFilters(filters, options).SingleEx()); } }
public static PredictDictionary GetInputsFromEntity(this PredictorPredictContext ctx, Lite <Entity> entity, PredictionOptions?options = null) { var qd = QueryLogic.Queries.QueryDescription(ctx.Predictor.MainQuery.Query.ToQueryName()); var entityToken = QueryUtils.Parse("Entity", qd, 0); return(ctx.FromFilters(new List <Filter> { new FilterCondition(entityToken, FilterOperation.EqualTo, entity) }, options).SingleEx()); }