There are two ternary analytics operations iif and if that take three input sequences, cond, then and else, and produce a sequence of values that represent the result of an If-Then-Else condition. When the boolean value in sequence cond is true, an element from sequence then is selected; when false from sequence else. However, the positions in sequence 2 and 3 are advanced differently. For iif the position in both is advanced to correspond with the position in sequence cond; for if the position of only the “selected” sequence is advanced.
To illustrate, suppose we have the following data sets in the three input sequences:
cond: {0,1,0,0,1} then: {-1,-2,-3,-4,-5} else: {1,2,3,4,5}The result sequence for
with these data sets is obtained as indicated in the following table:
mco_seq_iif_TYPE()
cond then else result 0
-1
1
1
1
-2
2
-2
0
-3
3
3
0
-4
4
4
1
-5
5
-5
For
mco_seq_if_TYPE()
:
cond then else result 0 -1 1 1 1 -2 2 -1 0 -3 3 2 0 -4 4 3 1 -5 5 -2 Examples
C API
The C function signatures are of the following form:
MCO_RET mco_seq_operator_TYPE(mco_seq_iterator_h result, mco_seq_iterator_h cond, mco_seq_iterator_h then_iter, mco_seq_iterator_h else_iter)where TYPE is one of the types listed in the Analytics Functions page and operator is iif or if.
Following is an example code snippet demonstrating a C ternary function:
{ mco_seq_iterator_t result, cond_iterator, then_iterator, else_iterator; MCO_RET rc; ... rc = mco_seq_iif_float(&result, &cond_iterator, &then_iterator, &else_iterator); ... }Python Methods
The Python ternary methods are iif() and if(). Following is an example code snippet demonstrating a Python ternary method:
cursor = con.cursor("Quote", "by_sym") for quote in cursor: ... openit,closeit = dayit.project('open', 'close') gtit = quote.close.gt(quote.open) iffit = gtit.iff(quote.close,quote.open) ...SQL Functions
INSERT INTO SimpleSequence(testNumber,bVal1,iVal2,iVal3) VALUES(1,'{0,1,0,0,1}','{-1,-2,-3,-4,-5}','{1,2,3,4,5}'); SELECT bVal1,iVal2,iVal3,seq_iif(bVal1,iVal2,iVal3) AS "iif" FROM SimpleSequence WHERE testNumber=1; SELECT bVal1,iVal2,iVal3,seq_if(bVal1,iVal2,iVal3) AS "if" FROM SimpleSequence WHERE testNumber=1; bVal1{} iVal2{} iVal3{} iif{} ------------------------------------------------------------------------- {0, 1, 0, 0, 1} {-1, -2, -3, -4, -5} {1, 2, 3, 4, 5} {1, -2, 3, 4, -5} bVal1{} iVal2{} iVal3{} if{} ------------------------------------------------------------------------- {0, 1, 0, 0, 1} {-1, -2, -3, -4, -5} {1, 2, 3, 4, 5} {1, -1, 2, 3, -2}