diff options
3 files changed, 34 insertions, 9 deletions
diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java index e1ba384..1700f7a 100644 --- a/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java +++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/FromUnixTimestamp.java @@ -67,7 +67,14 @@ public class FromUnixTimestamp implements ScalarFunction { public Event evaluate(Event event) { if(event.getExtractedFields().containsKey(lookupFieldName)){ - String timestamp = sdf.format(Long.parseLong(event.getExtractedFields().get(lookupFieldName).toString())); + String value = event.getExtractedFields().get(lookupFieldName).toString(); + String timestamp; + if (value.length() > 10) { + timestamp= sdf.format(Long.parseLong(value)); + }else + { + timestamp= sdf.format(Long.parseLong(value)*1000); + } event.getExtractedFields().put(outputFieldName, timestamp); } return event; diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java index bdb41e0..a601944 100644 --- a/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java +++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/UnixTimestampConverter.java @@ -62,15 +62,11 @@ public class UnixTimestampConverter implements ScalarFunction { if(event.getExtractedFields().containsKey(lookupFieldName)) { Long timestamp = Long.parseLong(event.getExtractedFields().get(lookupFieldName).toString()); - Instant instant = null; - if (String.valueOf(timestamp).length() == 13) { - // 时间戳长度大于10,表示为毫秒级时间戳 + Instant instant ; + if (String.valueOf(timestamp).length() > 10) { instant = Instant.ofEpochMilli(timestamp); - } else if (String.valueOf(timestamp).length() == 10) { - // 时间戳长度小于等于10,表示为秒级时间戳 - instant = Instant.ofEpochSecond(timestamp); } else { - return event; + instant = Instant.ofEpochSecond(timestamp); } switch (precision) { case "seconds": diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java index d02303b..87ca358 100644 --- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java +++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/FromUnixTimestampTest.java @@ -23,7 +23,7 @@ public class FromUnixTimestampTest { udfContext.setOutput_fields(Arrays.asList("timestamp")); } @Test - public void testFromUnixTimestampFunction() throws Exception { + public void testFromUnixTimestampMsFunction() throws Exception { Map<String, Object> parameters = new HashMap<>(); parameters.put("precision", "seconds"); @@ -43,4 +43,26 @@ public class FromUnixTimestampTest { assertEquals("2019-12-31 16:00:00:000", result2.getExtractedFields().get("timestamp")); } + + @Test + public void testFromUnixTimestampFunction() throws Exception { + + Map<String, Object> parameters = new HashMap<>(); + parameters.put("precision", "seconds"); + parameters.put("timezone", "UTC"); + udfContext.setParameters(parameters); + FromUnixTimestamp fromUnixTimestamp = new FromUnixTimestamp(); + fromUnixTimestamp.open(null, udfContext); + Event event = new Event(); + Map<String, Object> extractedFields = new HashMap<>(); + extractedFields.put("unixTimestamp", 1577808000L); + event.setExtractedFields(extractedFields); + Event result1 = fromUnixTimestamp.evaluate(event); + assertEquals("2019-12-31 16:00:00", result1.getExtractedFields().get("timestamp")); + parameters.put("precision", "milliseconds"); + fromUnixTimestamp.open(null, udfContext); + Event result2 = fromUnixTimestamp.evaluate(event); + assertEquals("2019-12-31 16:00:00:000", result2.getExtractedFields().get("timestamp")); + + } } |
