diff --git a/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/Indicators.java b/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/Indicators.java
index d68d729..2787979 100644
--- a/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/Indicators.java
+++ b/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/Indicators.java
@@ -20,7 +20,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.skywalking.oap.server.core.analysis.indicator.AvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
 import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
 import org.apache.skywalking.oap.server.core.analysis.indicator.PercentIndicator;
 
@@ -28,12 +28,12 @@
     private static Map<String, Class<? extends Indicator>> REGISTER = new HashMap<>();
 
     static {
-        REGISTER.put("avg", AvgIndicator.class);
+        REGISTER.put("longAvg", LongAvgIndicator.class);
         REGISTER.put("percent", PercentIndicator.class);
     }
 
     public static Class<? extends Indicator> find(String functionName) {
-        String func = functionName.toLowerCase();
+        String func = functionName;
         Class<? extends Indicator> indicatorClass = REGISTER.get(func);
         if (indicatorClass == null) {
             throw new IllegalArgumentException("Can't find indicator.");
diff --git a/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java b/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
similarity index 85%
rename from oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java
rename to oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
index 27027f6..f98e068 100644
--- a/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java
+++ b/oal-parser/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
@@ -23,16 +23,14 @@
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.ConstOne;
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.Entrance;
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorOperator;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.SourceFrom;
-import org.apache.skywalking.oap.server.core.remote.selector.Selector;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
 
 /**
  * @author peng-yongsheng
  */
 @IndicatorOperator
-public abstract class AvgIndicator extends Indicator {
+public abstract class LongAvgIndicator extends Indicator {
 
     protected static final String SUMMATION = "summation";
     protected static final String COUNT = "count";
@@ -49,7 +47,7 @@
     }
 
     @Override public final void combine(Indicator indicator) {
-        AvgIndicator avgIndicator = (AvgIndicator)indicator;
-        combine(avgIndicator.summation, avgIndicator.count);
+        LongAvgIndicator longAvgIndicator = (LongAvgIndicator)indicator;
+        combine(longAvgIndicator.summation, longAvgIndicator.count);
     }
 }
diff --git a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
index b958cb5..55156ad 100644
--- a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
+++ b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
@@ -40,7 +40,7 @@
         result.setSourceAttribute("latency");
         result.setMetricName("ServiceAvg");
         result.setAggregationFunctionName("avg");
-        result.setIndicatorClassName("AvgIndicator");
+        result.setIndicatorClassName("LongAvgIndicator");
         EntryMethod method = new EntryMethod();
         method.setMethodName("combine");
         method.setArgsExpressions(new LinkedList<>());
diff --git a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
index ac4277e..c87b702 100644
--- a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
+++ b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
@@ -30,7 +30,7 @@
         result.setPackageName("service.serviceavg");
         result.setSourceAttribute("latency");
         result.setMetricName("ServiceAvg");
-        result.setAggregationFunctionName("avg");
+        result.setAggregationFunctionName("longAvg");
 
         DeepAnalysis analysis = new DeepAnalysis();
         result = analysis.analysis(result);
@@ -54,7 +54,7 @@
         result.setPackageName("endpoint.endpointavg");
         result.setSourceAttribute("latency");
         result.setMetricName("EndpointAvg");
-        result.setAggregationFunctionName("avg");
+        result.setAggregationFunctionName("longAvg");
 
         DeepAnalysis analysis = new DeepAnalysis();
         result = analysis.analysis(result);
diff --git a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
index 94abfd8..658acb1 100644
--- a/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
+++ b/oal-parser/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
@@ -27,8 +27,8 @@
     @Test
     public void testParse() throws IOException {
         ScriptParser parser = ScriptParser.createFromScriptText(
-            "Endpoint_avg = from(Endpoint.latency).avg(); //comment test" + "\n" +
-                "Service_avg = from(Service.latency).avg()"
+            "Endpoint_avg = from(Endpoint.latency).longAvg(); //comment test" + "\n" +
+                "Service_avg = from(Service.latency).longAvg()"
         );
         List<AnalysisResult> results = parser.parse();
 
@@ -38,13 +38,13 @@
         Assert.assertEquals("EndpointAvg", endpointAvg.getMetricName());
         Assert.assertEquals("Endpoint", endpointAvg.getSourceName());
         Assert.assertEquals("latency", endpointAvg.getSourceAttribute());
-        Assert.assertEquals("avg", endpointAvg.getAggregationFunctionName());
+        Assert.assertEquals("longAvg", endpointAvg.getAggregationFunctionName());
 
         AnalysisResult serviceAvg = results.get(1);
         Assert.assertEquals("ServiceAvg", serviceAvg.getMetricName());
         Assert.assertEquals("Service", serviceAvg.getSourceName());
         Assert.assertEquals("latency", serviceAvg.getSourceAttribute());
-        Assert.assertEquals("avg", serviceAvg.getAggregationFunctionName());
+        Assert.assertEquals("longAvg", serviceAvg.getAggregationFunctionName());
     }
 
     @Test
diff --git a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
index 95fd194..4a02bcd 100644
--- a/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
+++ b/oal-parser/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
@@ -35,7 +35,7 @@
 @IndicatorType
 @StreamData
 @StorageEntity(name = "service_avg", builder = ServiceAvgIndicator.Builder.class)
-public class ServiceAvgIndicator extends AvgIndicator {
+public class ServiceAvgIndicator extends LongAvgIndicator {
 
     @Setter @Getter @Column(columnName = "id") private int id;
 
diff --git a/oal-parser/src/test/resources/oal_test.oal b/oal-parser/src/test/resources/oal_test.oal
index b74f729..a722650 100644
--- a/oal-parser/src/test/resources/oal_test.oal
+++ b/oal-parser/src/test/resources/oal_test.oal
@@ -16,15 +16,15 @@
  *
  */
 
-Service_Avg = from(Service.latency).avg();
+Service_Avg = from(Service.latency).longAvg();
 
-endpoint_Avg = from(Endpoint.latency).avg();
+endpoint_Avg = from(Endpoint.latency).longAvg();
 endpoint_percent = from(Endpoint.*).percent(status == true);
 
-instance_jvm_cpu = from(ServiceInstanceJVMCPU.usePercent).avg();
+instance_jvm_cpu = from(ServiceInstanceJVMCPU.usePercent).longAvg();
 
-instance_jvm_memory_max = from(ServiceInstanceJVMMemory.max).avg();
+instance_jvm_memory_max = from(ServiceInstanceJVMMemory.max).longAvg();
 
-instance_jvm_memory_pool_max = from(ServiceInstanceJVMMemoryPool.max).avg();
+instance_jvm_memory_pool_max = from(ServiceInstanceJVMMemoryPool.max).longAvg();
 
-instance_jvm_gc_time = from(ServiceInstanceJVMGC.time).avg();
\ No newline at end of file
+instance_jvm_gc_time = from(ServiceInstanceJVMGC.time).longAvg();
\ No newline at end of file
