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

aloyszhang 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 2409da5c66 [INLONG-10930][SDK] Transform support DAYOFWEEK function 
(#10933)
2409da5c66 is described below

commit 2409da5c66897210f38cf1b7e88579501528f7bf
Author: Xincheng Huang <[email protected]>
AuthorDate: Wed Aug 28 17:08:14 2024 +0800

    [INLONG-10930][SDK] Transform support DAYOFWEEK function (#10933)
---
 .../sdk/transform/process/function/DateExtractFunction.java    |  6 +++++-
 .../inlong/sdk/transform/process/operator/OperatorTools.java   |  1 +
 .../process/TestTransformTemporalFunctionsProcessor.java       | 10 ++++++++++
 3 files changed, 16 insertions(+), 1 deletion(-)

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 d763b657e2..896b67c31a 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
@@ -41,6 +41,7 @@ import java.util.Locale;
  * - week(date)--returns the week of a year (an integer between 1 and 53) from 
SQL date
  * - 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
  */
 public class DateExtractFunction implements ValueParser {
 
@@ -49,7 +50,7 @@ public 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
+        YEAR, QUARTER, MONTH, WEEK, DAY_OF_YEAR, DAY_OF_MONTH, DAY_OF_WEEK
     }
 
     public DateExtractFunction(DateExtractFunctionType type, Function expr) {
@@ -82,6 +83,9 @@ public class DateExtractFunction implements ValueParser {
             // dayofmonth(between 1 and 31)
             case DAY_OF_MONTH:
                 return localDate.getDayOfMonth();
+            // dayofweek(between 1 and 7)
+            case DAY_OF_WEEK:
+                return localDate.getDayOfWeek().getValue() % 7 + 1;
             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 e4bfb2cf62..eb39599b47 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
@@ -158,6 +158,7 @@ public class OperatorTools {
         functionMap.put("week", func -> new 
DateExtractFunction(DateExtractFunctionType.WEEK, func));
         functionMap.put("dayofyear", func -> new 
DateExtractFunction(DateExtractFunctionType.DAY_OF_YEAR, func));
         functionMap.put("dayofmonth", func -> new 
DateExtractFunction(DateExtractFunctionType.DAY_OF_MONTH, func));
+        functionMap.put("dayofweek", func -> new 
DateExtractFunction(DateExtractFunctionType.DAY_OF_WEEK, func));
         functionMap.put("hour",
                 func -> new 
TimestampExtractFunction(TimestampExtractFunction.TimestampExtractFunctionType.HOUR,
 func));
         functionMap.put("minute",
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 6ccfc357b3..8c99b2a6bd 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
@@ -205,6 +205,16 @@ public class TestTransformTemporalFunctionsProcessor {
         List<String> output6 = processor6.transform("2024-02-29", new 
HashMap<>());
         Assert.assertEquals(1, output6.size());
         Assert.assertEquals(output6.get(0), "result=29");
+
+        String transformSql7 = "select dayofweek(string1) from source";
+        TransformConfig config7 = new TransformConfig(transformSql7);
+        TransformProcessor<String, String> processor7 = TransformProcessor
+                .create(config7, 
SourceDecoderFactory.createCsvDecoder(csvSource),
+                        SinkEncoderFactory.createKvEncoder(kvSink));
+        // case7: dayofweek(2024-02-29) (Thursday)
+        List<String> output7 = processor7.transform("2024-02-29", new 
HashMap<>());
+        Assert.assertEquals(1, output7.size());
+        Assert.assertEquals(output7.get(0), "result=5");
     }
 
     @Test

Reply via email to