Message-ID: <1950475927.857.1571407018855.JavaMail.daemon@e613c95ee270> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_856_1923849056.1571407018855" ------=_Part_856_1923849056.1571407018855 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html Ternary Operators

Ternary Operators

Ternary operators allow you to build if/then/else condition= al logic within your transforms. Please use the=20 IF function instead.

NOTE: Ternary operators have been superseded by the IF function. See IF Function<= /a>.

In the following, if the test expression<= span> evaluates to true, the true_expression is executed. Otherwise, the = false_expression is executed.

=20
(test_expr=
ession) ? (true_expression) : (false_expression)
=20

All of these expressions can be constants (strings, integers, or any oth= er supported literal value) or sophisticated elements of logical, although = the test expression must evaluate to a Boolean value.

Usage

Example data:

X Y
true true
true false
false true
false false

Transforms:

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name <= code>New formula Single row formula (X =3D=3D Y) ? 'yes' : 'no' 'equals'
=20

Results:

Your output looks like the following:

X Y equals
true true yes
true false no
false true no
false false yes

Examples

Example - Stock Quotes

You have a set of stock prices that you want to analyze. Based on a set = of rules, you want to determine any buy, sell, or hold action to take. = ;

Source:

Ticket Qty BuyPrice CurrentPrice
GOOG 10 705.25 674.5
FB 100 84.00 101.125
AAPL 50 125.25 97.375
MSFT 100 38.875 45.25

Transformation:

You can perform evaluations of this data using ternary operators to dete= rmine if you want to take action.

To assist in evaluation, you might first want to create columns that con= tain the cost (Basis) and the current value (CurrentValu= e) for each stock:

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name <= code>New formula Single row formula (Qty * BuyPrice) 'Basis'
=20

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name <= code>New formula Single row formula (Qty * CurrentPrice) 'CurrentValue'
=20

Now, you can build some rules based on the spread between Bas= is and CurrentValue.

The most important action is determining if it is time to sell. The foll= owing rule writes a sell notification if the current value is = \$1000 or more than the cost. Otherwise, no value is written to the action c= olumn.

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name <= code>New formula Single row formula (CurrentValue - 1000 > Basis) ? 'sell' = : '' 'action'
=20

But what about buying more? The following transform is an edit to the pr= evious one. In this new version, the sell test is performed, and if writes = a buy action if the CurrentPrice is within 1= 0% of the BuyPrice

This second evaluation is performed after the first one, as it replaces = the else clause, which did nothing in the previous version. In the Recipe p= anel, click the previous transform and edit it, replacing it with the new v= ersion:

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name <= code>New formula Single row formula ((CurrentValue - 1000) > Basis) ? 'sell= ' : ((abs(CurrentValue - Basis) <=3D (Basis * 0.1)) ? 'buy' : 'hold') 'action'
=20

If neither test evaluates to true, the written action = is hold

You might want to format some of your columns using dollar formatting, a= s in the following:

NOTE: The following formatting inserts a dollar sign (\$= ) in front of the value, which changes the data type to String.

=20
=20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20 =20
Transformation Name Edit column with formula BuyPrice NUMFORMAT(BuyPrice, '\$ ##,###.00')<= /td>=20
=20

Results:

After moving your columns, your dataset should look like the following, = if you completed the number formatting steps:

Ticket Qty BuyPrice CurrentPrice Basis CurrentValue action
GOOG 10 705.25 \$ 674.50 \$ 7,052.50 \$ 6,745.00 buy
FB 100 84.00 \$ 101.13 \$ 8,400.00 \$ 10,112.50 sell
AAPL 50 125.25 \$ 97.38 \$ 6,262.50 \$ 4,868.75 hold
MSFT 100 38.88 \$ 45.25 \$ 3,887.50 \$ 4,525.00 hold

=20