You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by GitBox <gi...@apache.org> on 2022/03/21 21:52:56 UTC

[GitHub] [nifi] Lehel44 opened a new pull request #5888: NIFI-7230: Created toInstant() and formatInstant() EL functions

Lehel44 opened a new pull request #5888:
URL: https://github.com/apache/nifi/pull/5888


   …e functions
   
   <!--
     Licensed to the Apache Software Foundation (ASF) under one or more
     contributor license agreements.  See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
     the License.  You may obtain a copy of the License at
         http://www.apache.org/licenses/LICENSE-2.0
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
   -->
   Thank you for submitting a contribution to Apache NiFi.
   
   Please provide a short description of the PR here:
   
   #### Description of PR
   
   https://issues.apache.org/jira/browse/NIFI-7230
   
   Added **toInstant** and **formatInstant** functions to EL to support nanosecond precision datetime.
   
   In order to streamline the review of the contribution we ask you
   to ensure the following steps have been taken:
   
   ### For all changes:
   - [ ] Is there a JIRA ticket associated with this PR? Is it referenced 
        in the commit message?
   
   - [ ] Does your PR title start with **NIFI-XXXX** where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
   
   - [ ] Has your PR been rebased against the latest commit within the target branch (typically `main`)?
   
   - [ ] Is your initial contribution a single, squashed commit? _Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not `squash` or use `--force` when pushing to allow for clean monitoring of changes._
   
   ### For code changes:
   - [ ] Have you ensured that the full suite of tests is executed via `mvn -Pcontrib-check clean install` at the root `nifi` folder?
   - [ ] Have you written or updated unit tests to verify your changes?
   - [ ] Have you verified that the full build is successful on JDK 8?
   - [ ] Have you verified that the full build is successful on JDK 11?
   - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)?
   - [ ] If applicable, have you updated the `LICENSE` file, including the main `LICENSE` file under `nifi-assembly`?
   - [ ] If applicable, have you updated the `NOTICE` file, including the main `NOTICE` file found under `nifi-assembly`?
   - [ ] If adding new Properties, have you added `.displayName` in addition to .name (programmatic access) for each of the new properties?
   
   ### For documentation related changes:
   - [ ] Have you ensured that format looks appropriate for the output in which it is rendered?
   
   ### Note:
   Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [nifi] Lehel44 commented on pull request #5888: NIFI-7230: Created toInstant() and formatInstant() EL functions

Posted by GitBox <gi...@apache.org>.
Lehel44 commented on pull request #5888:
URL: https://github.com/apache/nifi/pull/5888#issuecomment-1075415121


   Probably will add precision argument to the toNumber() function soon.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [nifi] mattyb149 commented on a change in pull request #5888: NIFI-7230: Created toInstant() and formatInstant() EL functions

Posted by GitBox <gi...@apache.org>.
mattyb149 commented on a change in pull request #5888:
URL: https://github.com/apache/nifi/pull/5888#discussion_r832685039



##########
File path: nifi-docs/src/main/asciidoc/expression-language-guide.adoc
##########
@@ -2264,6 +2296,33 @@ chaining together the two functions: `${date:toDate('MM-dd-yyyy'):format('yyyy/M
 
 
 
+[.function]
+=== toInstant
+
+*Description*: [.description]#Converts a String or Number into an Instant data type, based on the format specified by the argument. The argument
+must be a String that is a valid Java DateTimeFormatter syntax. The Subject is expected to be a String that is formatted
+according the argument or a number which represents the datetime in milliseconds. The datetime will be evaluated using the local time zone unless
+specified in the second optional argument.#
+
+*Subject Type*: [.subject]#String or Number#
+
+*Arguments*:
+
+- [.argName]#_format_# : [.argDesc]#The current format to use when parsing the Subject, in the Java DateTimeFormatter syntax.#
+- [.argName]#_time zone_# : [.argDesc]#Optional argument that specifies the time zone to use when parsing the Subject, in the Java TimeZone syntax.#
+
+
+*Return Type*: [.returnType]#Instant#
+
+*Examples*: If the attribute "time" has the value "2014/12/31 15:36:03.264Z" then the expression `${time:toDate("yyyy/MM/dd HH:mm:ss.SSS'Z'", "GMT")}` will result in a Date data type for
+15:36:03.264 GMT on December 31, 2014.
+
+Often, this function is used in conjunction with the <<formatInstant>> function to change the format of a date/time. For example,
+if the attribute "instant" has the value "12-24-2014 12:06:59" and we want to change the format to "2014/12/24", we can do so by
+chaining together the two functions: `${date:toDate('MM-dd-yyyy HH:mm:ss'):format('yyyy/MM/dd')}`.

Review comment:
       Should this be using `toInstant()` and/or `formatInstant()`?

##########
File path: nifi-docs/src/main/asciidoc/expression-language-guide.adoc
##########
@@ -2264,6 +2296,33 @@ chaining together the two functions: `${date:toDate('MM-dd-yyyy'):format('yyyy/M
 
 
 
+[.function]
+=== toInstant
+
+*Description*: [.description]#Converts a String or Number into an Instant data type, based on the format specified by the argument. The argument
+must be a String that is a valid Java DateTimeFormatter syntax. The Subject is expected to be a String that is formatted
+according the argument or a number which represents the datetime in milliseconds. The datetime will be evaluated using the local time zone unless
+specified in the second optional argument.#
+
+*Subject Type*: [.subject]#String or Number#
+
+*Arguments*:
+
+- [.argName]#_format_# : [.argDesc]#The current format to use when parsing the Subject, in the Java DateTimeFormatter syntax.#
+- [.argName]#_time zone_# : [.argDesc]#Optional argument that specifies the time zone to use when parsing the Subject, in the Java TimeZone syntax.#
+
+
+*Return Type*: [.returnType]#Instant#
+
+*Examples*: If the attribute "time" has the value "2014/12/31 15:36:03.264Z" then the expression `${time:toDate("yyyy/MM/dd HH:mm:ss.SSS'Z'", "GMT")}` will result in a Date data type for

Review comment:
       Should this be calling `toInstant()`? and doesn't it return an Instant object (or a String made from one)?

##########
File path: nifi-docs/src/main/asciidoc/expression-language-guide.adoc
##########
@@ -2233,8 +2233,40 @@ In order to run the correct method, the parameter types must be correct. The Exp
 |============================================================================
 
 
+[[formatInstant]]
+[.function]
+=== formatInstant
+
+*Description*: [.description]#Formats a number or string as a date/time according to the format specified by the argument.
+The argument must be a String that is a valid Java DateTimeFormatter format. The Subject is expected to be a Number that
+represents the number of milliseconds since Midnight GMT on January 1, 1970 or a String with one of the following
+DateTimeFromatter syntaxes:#

Review comment:
       Typo, should be `DateTimeFormatter`

##########
File path: nifi-docs/src/main/asciidoc/expression-language-guide.adoc
##########
@@ -2233,8 +2233,40 @@ In order to run the correct method, the parameter types must be correct. The Exp
 |============================================================================
 
 
+[[formatInstant]]
+[.function]
+=== formatInstant
+
+*Description*: [.description]#Formats a number or string as a date/time according to the format specified by the argument.
+The argument must be a String that is a valid Java DateTimeFormatter format. The Subject is expected to be a Number that
+represents the number of milliseconds since Midnight GMT on January 1, 1970 or a String with one of the following
+DateTimeFromatter syntaxes:#
+
+- _ISO_OFFSET_ such as '2011-12-03T10:15:30+01:00'
+- _ISO_INSTANT_ such as '2011-12-03T10:15:30Z'
+- _RFC_1123_ such as 'Thu, 01 Dec 1994 16:00:00 GMT'
+
+*Subject Type*: [.subject]#Number#
+
+*Arguments*:
 
+- [.argName]#_format_# : [.argDesc]#The format to use in the Java DateTimeFormatter syntax#
+- [.argName]#_time zone_# : [.argDesc]#Optional argument that specifies the time zone to use (in the Java TimeZone syntax)#
 
+*Return Type*: [.returnType]#String#
+
+*Examples*: If the attribute "time" has the value "1647884009479", timeIsoOffset has the value "2022-12-03T10:15:30+01:00",
+timeIsoInstant has the value "2022-12-03T10:15:30Z" and "timeRFC1123" has the value "Thu, 01 Dec 2022 16:00:00 GMT",
+then the following Expressions will yield the following results:
+
+.format Examples
+|============================================================================
+| Expression | Value
+| `${time:formatInstant("yyyy/MM/dd HH:mm:ss.SSS\'Z'", "GMT")}` | `2022/03/21 17:33:29.479Z`
+| `${timeIsoOffset:format("yyyy/MM/dd HH:mm:ss.SSS\'Z'", "Asia/Tokyo")}` | `2022/12/03 18:15:30.000Z`

Review comment:
       Should these be calls to `formatInstant`?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [nifi] Lehel44 commented on a change in pull request #5888: NIFI-7230: Created toInstant() and formatInstant() EL functions

Posted by GitBox <gi...@apache.org>.
Lehel44 commented on a change in pull request #5888:
URL: https://github.com/apache/nifi/pull/5888#discussion_r833828735



##########
File path: nifi-docs/src/main/asciidoc/expression-language-guide.adoc
##########
@@ -2264,6 +2296,33 @@ chaining together the two functions: `${date:toDate('MM-dd-yyyy'):format('yyyy/M
 
 
 
+[.function]
+=== toInstant
+
+*Description*: [.description]#Converts a String or Number into an Instant data type, based on the format specified by the argument. The argument
+must be a String that is a valid Java DateTimeFormatter syntax. The Subject is expected to be a String that is formatted
+according the argument or a number which represents the datetime in milliseconds. The datetime will be evaluated using the local time zone unless
+specified in the second optional argument.#
+
+*Subject Type*: [.subject]#String or Number#
+
+*Arguments*:
+
+- [.argName]#_format_# : [.argDesc]#The current format to use when parsing the Subject, in the Java DateTimeFormatter syntax.#
+- [.argName]#_time zone_# : [.argDesc]#Optional argument that specifies the time zone to use when parsing the Subject, in the Java TimeZone syntax.#
+
+
+*Return Type*: [.returnType]#Instant#
+
+*Examples*: If the attribute "time" has the value "2014/12/31 15:36:03.264Z" then the expression `${time:toDate("yyyy/MM/dd HH:mm:ss.SSS'Z'", "GMT")}` will result in a Date data type for

Review comment:
       That's right!




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org