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