[ 
https://issues.apache.org/jira/browse/METRON-690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15861491#comment-15861491
 ] 

ASF GitHub Bot commented on METRON-690:
---------------------------------------

Github user cestella commented on a diff in the pull request:

    https://github.com/apache/incubator-metron/pull/450#discussion_r100571012
  
    --- Diff: 
metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/window/WindowProcessor.java
 ---
    @@ -0,0 +1,321 @@
    +/*
    + *
    + *  Licensed to the Apache Software Foundation (ASF) under one
    + *  or more contributor license agreements.  See the NOTICE file
    + *  distributed with this work for additional information
    + *  regarding copyright ownership.  The ASF licenses this file
    + *  to you under the Apache License, Version 2.0 (the
    + *  "License"); you may not use this file except in compliance
    + *  with the License.  You may obtain a copy of the License at
    + *
    + *      http://www.apache.org/licenses/LICENSE-2.0
    + *
    + *  Unless required by applicable law or agreed to in writing, software
    + *  distributed under the License is distributed on an "AS IS" BASIS,
    + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
implied.
    + *  See the License for the specific language governing permissions and
    + *  limitations under the License.
    + *
    + */
    +package org.apache.metron.profiler.client.window;
    +
    +import org.antlr.v4.runtime.*;
    +import org.antlr.v4.runtime.tree.ParseTree;
    +import org.apache.metron.common.dsl.ErrorListener;
    +import org.apache.metron.common.dsl.GrammarUtils;
    +import org.apache.metron.common.dsl.ParseException;
    +import org.apache.metron.common.dsl.Token;
    +import org.apache.metron.common.utils.ConversionUtils;
    +import 
org.apache.metron.profiler.client.window.generated.WindowBaseListener;
    +import org.apache.metron.profiler.client.window.generated.WindowLexer;
    +import org.apache.metron.profiler.client.window.generated.WindowParser;
    +import org.apache.metron.profiler.client.window.predicates.DayPredicates;
    +
    +import java.util.*;
    +import java.util.concurrent.TimeUnit;
    +import java.util.function.Function;
    +import java.util.function.Predicate;
    +
    +import static org.apache.commons.lang3.StringUtils.isEmpty;
    +
    +public class WindowProcessor extends WindowBaseListener {
    +  private Throwable throwable;
    +  private Deque<Token<?>> stack;
    +  private static final Token<Object> LIST_MARKER = new Token<>(null, 
Object.class);
    +  private static final Token<Object> DAY_SPECIFIER_MARKER = new 
Token<>(null, Object.class);
    +  private Window window;
    +
    +  public WindowProcessor() {
    +    this.stack = new ArrayDeque<>();
    +    this.window = new Window();
    +  }
    +
    +  public Window getWindow() {
    +    return window;
    +  }
    +
    +  private void enterList() {
    +    stack.push(LIST_MARKER);
    +  }
    +
    +  private List<Function<Long, Predicate<Long>>> getPredicates() {
    +    LinkedList<Function<Long, Predicate<Long>>> predicates = new 
LinkedList<>();
    +    while (true) {
    +      Token<?> token = stack.pop();
    +      if (token == LIST_MARKER) {
    --- End diff --
    
    Nope, it's reference equals.  `LIST_MARKER` is a specific instance of Token.


> Create a DSL-based timestamp lookup for profiler to enable sparse windows
> -------------------------------------------------------------------------
>
>                 Key: METRON-690
>                 URL: https://issues.apache.org/jira/browse/METRON-690
>             Project: Metron
>          Issue Type: New Feature
>            Reporter: Casey Stella
>
> I propose that we support the following features:
> * A starting point that is not current time
> * Sparse bins (i.e. the last hour for every tuesday for the last month)
> * The ability to skip events (e.g. weekends, holidays)
> This would result in a new function with the following arguments:
> from - The lookback starting point (default to now)
> fromUnits - The units for the lookback starting point
> to - The ending point for the lookback window (default to from + binSize)
> toUnits - The units for the lookback ending point
> including - A list of conditions which we would skip.
> weekend
> holiday
> sunday through saturday
> excluding - A list of conditions which we would skip.
> weekend
> holiday
> sunday through saturday
> binSize - The size of the lookback bin
> binUnits - The units of the lookback bin
> Given the number of arguments and their complexity and the fact that many, 
> many are optional, 
> PROFILE_LOOKBACK accept a string backed by a DSL to express these criteria
> Base Case: A lookback of 1 hour ago
> PROFILE_LOOKBACK( '1 hour bins from now')
> Example 1: The same time window every tuesday for the last month starting one 
> hour ago
> Just to make this as clear as possible, if this is run at 3PM on Monday 
> January 23rd, 2017, it would include the following bins:
> January 17th, 2PM - 3PM
> January 10th, 2PM - 3PM
> January 3rd, 2PM - 3PM
> December 27th, 2PM - 3PM
> PROFILE_LOOKBACK( '1 hour bins from 1 hour to 1 month including tuesdays')
> Example 2: The same time window every sunday for the last month starting one 
> hour ago skipping holidays
> Just to make this as clear as possible, if this is run at 3PM on Monday 
> January 22rd, 2017, it would include the following bins:
> January 16th, 2PM - 3PM
> January 9th, 2PM - 3PM
> January 2rd, 2PM - 3PM
> NOT December 25th
> PROFILE_LOOKBACK( '1 hour bins from 1 hour to 1 month including tuesdays 
> excluding holidays')



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to