Exemplo n.º 1
0
    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());
        }
    }
Exemplo n.º 2
0
    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());
    }