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 <[email protected]>
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