This is an automated email from the ASF dual-hosted git repository.

luchunliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 6234b9ea01 [INLONG-10935][SDK] Transform support DAYNAME function 
(#10937)
6234b9ea01 is described below

commit 6234b9ea01391b536928c0c0126023a4f5e2ab49
Author: Xincheng Huang <60057611+ying-...@users.noreply.github.com>
AuthorDate: Mon Sep 2 10:50:14 2024 +0800

    [INLONG-10935][SDK] Transform support DAYNAME function (#10937)
    
    * [INLONG-10935][SDK] Transform support DAYNAME function
    
    * fix the style
    
    * fix the failed UT
---
 .../transform/process/function/DateExtractFunction.java    | 14 +++++++++++++-
 .../sdk/transform/process/operator/OperatorTools.java      |  1 -
 .../process/TestTransformTemporalFunctionsProcessor.java   | 10 ++++++++++
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git 
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/DateExtractFunction.java
 
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/DateExtractFunction.java
index ff0eb6b01e..cac2273619 100644
--- 
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/DateExtractFunction.java
+++ 
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/function/DateExtractFunction.java
@@ -42,6 +42,7 @@ import java.util.Locale;
  * - dayofyear(date)--returns the day of a year (an integer between 1 and 366) 
from SQL date
  * - dayofmonth(date)--returns the day of a month (an integer between 1 and 
31) from SQL date
  * - dayofweek(date)--returns the day of a week (an integer between 1(Sunday) 
and 7(Saturday)) from SQL date
+ * - dayname(date)--returns the name of the day of the week from SQL date
  */
 public abstract class DateExtractFunction implements ValueParser {
 
@@ -50,7 +51,7 @@ public abstract class DateExtractFunction implements 
ValueParser {
     private static final TemporalField weekOfYearField = 
WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear();
 
     public enum DateExtractFunctionType {
-        YEAR, QUARTER, MONTH, WEEK, DAY_OF_YEAR, DAY_OF_MONTH, DAY_OF_WEEK
+        YEAR, QUARTER, MONTH, WEEK, DAY_OF_YEAR, DAY_OF_MONTH, DAY_OF_WEEK, 
DAY_NAME
     }
 
     @TransformFunction(names = {"year"})
@@ -109,6 +110,14 @@ public abstract class DateExtractFunction implements 
ValueParser {
         }
     }
 
+    @TransformFunction(names = {"day_name", "dayname"})
+    public static class DayNameExtractFunction extends DateExtractFunction {
+
+        public DayNameExtractFunction(Function expr) {
+            super(DateExtractFunctionType.DAY_NAME, expr);
+        }
+    }
+
     public DateExtractFunction(DateExtractFunctionType type, Function expr) {
         this.type = type;
         List<Expression> expressions = expr.getParameters().getExpressions();
@@ -142,6 +151,9 @@ public abstract class DateExtractFunction implements 
ValueParser {
             // dayofweek(between 1 and 7)
             case DAY_OF_WEEK:
                 return localDate.getDayOfWeek().getValue() % 7 + 1;
+            // dayname(between Sunday and Saturday)
+            case DAY_NAME:
+                return localDate.getDayOfWeek().name();
             default:
                 return null;
         }
diff --git 
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/operator/OperatorTools.java
 
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/operator/OperatorTools.java
index 5e69984564..02b24cdb6b 100644
--- 
a/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/operator/OperatorTools.java
+++ 
b/inlong-sdk/transform-sdk/src/main/java/org/apache/inlong/sdk/transform/process/operator/OperatorTools.java
@@ -49,7 +49,6 @@ public class OperatorTools {
     public static final String ROOT_KEY = "$root";
 
     public static final String CHILD_KEY = "$child";
-
     public static ExpressionOperator buildOperator(Expression expr) {
         if (expr instanceof AndExpression) {
             return new AndOperator((AndExpression) expr);
diff --git 
a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformTemporalFunctionsProcessor.java
 
b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformTemporalFunctionsProcessor.java
index f2c73ee3d9..14c1fab04b 100644
--- 
a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformTemporalFunctionsProcessor.java
+++ 
b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformTemporalFunctionsProcessor.java
@@ -216,6 +216,16 @@ public class TestTransformTemporalFunctionsProcessor {
         List<String> output7 = processor7.transform("2024-02-29", new 
HashMap<>());
         Assert.assertEquals(1, output7.size());
         Assert.assertEquals(output7.get(0), "result=5");
+
+        String transformSql8 = "select dayname(string1) from source";
+        TransformConfig config8 = new TransformConfig(transformSql8);
+        TransformProcessor<String, String> processor8 = TransformProcessor
+                .create(config8, 
SourceDecoderFactory.createCsvDecoder(csvSource),
+                        SinkEncoderFactory.createKvEncoder(kvSink));
+        // case8: dayname(2024-02-29) (Thursday)
+        List<String> output8 = processor8.transform("2024-02-29", new 
HashMap<>());
+        Assert.assertEquals(1, output8.size());
+        Assert.assertEquals(output8.get(0), "result=THURSDAY");
     }
 
     @Test

Reply via email to