Paul, Regarding your original question, the use of the "literal" function solves the issue you were having with allDelineatedValues.
Please submit a JIRA [1] if you'd like to propose changes to documentation or EL. [1] https://issues.apache.org/jira/browse/NIFI On Wed, Aug 24, 2016 at 1:54 PM Paul Nahay <[email protected]> wrote: > It's creating a value. > > Anything "created" is a value, not a literal. > > A literal is a value that is literally in the code, like the number 2 or > the string "two". > > The moment you say "returns" or "creates", etc., you're talking about > producing a value. > > Again, I direct you to Wikipedia's definition, which is correct: > https://en.wikipedia.org/wiki/Literal_%28computer_programming%29 > > > Paul > > > > -----Original Message----- > From: Jeff > Sent: Aug 24, 2016 11:34 AM > To: Paul Nahay , "[email protected]" > Subject: Re: Can't Chain "count()" with "plus()" > > Paul, > > In terms of NiFi EL, the "literal" function takes its argument, evaluates > it if there's an expression as the argument, and returns it as a literal > within the expression in which it is being used. In other words, it's > creating a literal in the code itself. > > On Wed, Aug 24, 2016 at 11:01 AM Paul Nahay <[email protected]> wrote: > >> https://en.wikipedia.org/wiki/Literal_%28computer_programming%29 >> >> >A) The "literal" function's purpose allows the user to evaluate an >> argument that is a literal itself, >> >> Yes >> >> >B) or another expression >> >> That's not a LITERAL, although it is a VALUE. You're confusing "literal >> value" (for which "literal" is a shorthand way of saying the same thing) >> with "value". >> >> As the Wikipedia article explains, a literal is a value coded into the >> code itself. That is NOT the same thing as a value produced by the process >> of EVALUATION, which is what your phrase in "B" above is. So while I >> understand you guys can call anything you want any way you want, your use >> of "literal" is inconsistent with its general universal understanding in >> programming languages, and thus, was very confusing to me when I >> encountered it in your code response to me. >> >> >> Paul >> >> >> -----Original Message----- >> From: Jeff >> Sent: Aug 24, 2016 10:43 AM >> To: Paul Nahay , "[email protected]" >> Subject: Re: Can't Chain "count()" with "plus()" >> >> Paul, >> >> We'll have to agree to disagree. :) The "literal" function's purpose >> allows the user to evaluate an argument that is a literal itself, or >> another expression, as a literal value, and allow functions to be chained >> on the result. It's aptly named, in my opinion. >> >> NiFi EL does have a "toString" function, but it's not subjectless. >> "literal" could be renamed "string", perhaps, but it would introduce >> confusion with the current "toString" function. >> >> On Wed, Aug 24, 2016 at 2:18 AM Paul Nahay <[email protected]> wrote: >> >>> Thanks. >>> >>> BTW: >>> >>> literal >>> >>> *Description*: Returns its argument as a literal String value. This is >>> useful in order to treat a string or a number at the beginning of an >>> Expression as an actual value, rather than treating it as an attribute >>> name. Additionally, it can be used when the argument is an embedded >>> Expression that we would then like to evaluate additional functions against. >>> >>> *Subject Type*: No Subject >>> >>> *Arguments*: >>> >>> - >>> >>> *value* : The value to be treated as a literal string, number, or >>> boolean value. >>> >>> >>> Your function "literal" really should be named "value", since that is >>> what it does: it interprets its argument as a value, rather than as an >>> attribute name. A literal in a program is a literal value like 2 or "two". >>> Or, it should be called "string", if that's what it really produces, even >>> in the case of the argument being a number. But "literal" is definitely the >>> wrong name for it. >>> >>> Paul >>> >>> >>> -----Original Message----- >>> From: Jeff >>> Sent: Aug 23, 2016 2:52 PM >>> To: Paul Nahay , "[email protected]" >>> Subject: Re: Can't Chain "count()" with "plus()" >>> >>> Paul, >>> >>> I refer you to the documentation for count[1], which states: "Aggregate >>> function that counts the number of non-null, non-false values returned" >>> >>> [1] >>> https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#count >>> >>> >>> On Tue, Aug 23, 2016 at 2:37 PM Paul Nahay <[email protected]> wrote: >>> >>>> Thanks. >>>> >>>> However, your documentation is lacking, because in your documentation >>>> for "allDelineatedValues", there is nothing that explains how ":count()" >>>> can be applied to: >>>> *Return Type*: Boolean >>>> meaning, how ":count()" can be applied to each boolean separately to >>>> produce a "4". >>>> >>>> Yes, I understand what it's doing, but your documentation doesn't >>>> explain what it needs to. If this is true: >>>> >>>> *Return Type*: Boolean >>>> >>>> then your table with examples with "Value" in the right-hand column >>>> should have only booleans, not the integer 4 in it. >>>> >>>> Paul >>>> >>>> -----Original Message----- >>>> From: Jeff >>>> Sent: Aug 23, 2016 1:00 PM >>>> To: Paul Nahay , "[email protected]" >>>> Subject: Re: Can't Chain "count()" with "plus()" >>>> >>>> Hello Paul, >>>> >>>> The documentation for allDelineatedValues[1] states that each of the >>>> resulting values are evaluated against the rest of the Expression. You >>>> need to use an embedded expression, since you don't want the plus function >>>> to be evaluated against each split from allDelineatedValues. Try this >>>> slightly more complex expression: >>>> >>>> ${literal(${allDelineatedValues("aaa,bbb,ccc",","):count()}):plus(1)} >>>> >>>> [1] >>>> https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#alldelineatedvalues >>>> >>>> On Tue, Aug 23, 2016 at 12:21 PM Paul Nahay <[email protected]> wrote: >>>> >>>>> The following NiFi Expression Language construct gives me an error, >>>>> and I don't understand why: >>>>> >>>>> ${allDelineatedValues("aaa,bbb,ccc",","):count():plus(1)} >>>>> >>>>> It's fine without the ":plus(1)", but fails with it, with this error: >>>>> >>>>> AttributeExpressionLanguageException: >>>>> Cannot evaluate Expression because it attempts to reference multiple >>>>> attributes but does not use a reducing function >>>>> >>>>> (I am typing the error message above) >>>>> >>>>> It would seem like I should be able to add 1 to a count. >>>>> >>>>> It's NiFi version 0.6.1.c >>>>> >>>>> >>>>> Paul Nahay >>>>> 1013 Rosemere Ave. >>>>> Silver Spring, MD 20904-3008 >>>>> 301-680-3825 (home) >>>>> 301-806-9265 (cell) >>>>> [email protected] >>>>> >>>> >>>> Paul Nahay >>>> 1013 Rosemere Ave. >>>> Silver Spring, MD 20904-3008 >>>> 301-680-3825 (home) >>>> 301-806-9265 (cell)[email protected] >>>> >>>> >>>> >>>> >>> Paul Nahay >>> 1013 Rosemere Ave. >>> Silver Spring, MD 20904-3008 >>> 301-680-3825 (home) >>> 301-806-9265 (cell)[email protected] >>> >>> >>> >>> >>> Paul Nahay >>> 1013 Rosemere Ave. >>> Silver Spring, MD 20904-3008 >>> 301-680-3825 (home) >>> 301-806-9265 (cell)[email protected] >>> >>> >>> >>> >> Paul Nahay >> 1013 Rosemere Ave. >> Silver Spring, MD 20904-3008 >> 301-680-3825 (home) >> 301-806-9265 (cell)[email protected] >> >> >> >> > Paul Nahay > 1013 Rosemere Ave. > Silver Spring, MD 20904-3008 > 301-680-3825 (home) > 301-806-9265 (cell)[email protected] > > > >
