in
(T.‘a in U.‘a) -> T.boolean, operator
The reserved keyword in is a binary operator returning true if the value found on the left vector exists anywhere in the right vector, and false otherwise.
Example:
table Products[product] = with
[| as product, as Price |]
[| "apple", 1.25 |]
[| "banana", 0.75 |]
table Orders = with
[| as Pid, as OrderDate, as Quantity |]
[| "apple", date(2020, 8, 15), 3 |]
[| "apple", date(2020, 8, 16), 7 |]
[| "orange", date(2020, 8, 16), 2 |]
where Orders.Pid in product // 'orange' is filtered out
Orders.Amount = Orders.Quantity * Products.Price[Orders.Pid]
show table "Orders" with
Orders.Pid
Orders.OrderDate
Orders.Amount
The in keyword can also be applied to tuples of vectors.
table T = with
[| as A, as X, as Y, as Z |]
[| "foo", 0, 1, 1 |]
[| "bar", 1, 0, 0 |]
table U = with
[| as X, as Y, as Z |]
[| 0, 0, 0 |]
[| 0, 1, 1 |]
where (T.X, T.Y, T.Z) in (U.X, U.Y, U.Z) // select the 'foo' line
show table "T" with T.A, T.X, T.Y, T.Z
The in operator also works with enum values, using the enum type itself rather than the text labels.
table enum ME = "A", "B", "C"
table A = extend.range(2)
A.Code = if A.N == 1 then "A" else "B"
A.E = enum<<ME>>(A.Code)
table B = extend.range(3)
B.Code = match B.N with
1 -> "A"
2 -> "C"
.. -> "B"
B.E = enum<<ME>>(B.Code)
where B.E in A.E // filters out "C"
show table "Common enums" with
B.Code
B.E
(tile placement in region)
The keyword in is also used in block placement on show statements to
target a grid by name, as in ... in regionName or ... in top. This
placement syntax is not StyleCode, even though it uses the same { ... }
delimiters and can appear next to StyleCode declarations in the same block.
See show for the placement syntax and
region for grids and special regions.
overview = show region { ..4, ..6 nocard }
show label "Headline" { .., ..2 in overview }
show table "Summary" { .., 4..5 in overview } with
"A" as "Item"
42 as "Value"