sliceByKey
Syntax
sliceByKey(table, rowKeys, [colNames])
Arguments
table is a keyed table or indexed table.
rowKeys is a scalar/vector indicating the specified values of key columns.
colNames (optional) is a string scalar/vector indicating the names of columns to be selected.
Details
Get the rows containing the specified values of the key columns from a keyed table or an indexed table. It is faster than the corresponding SQL statement.
For a keyed table, rowKeys must contain values for all key columns.
For an indexed table, rowKeys must contain values for the first n key columns.
If colNames is not specified, return all columns.
The data form of the result depends on colNames. If colNames is a scalar, return a vector; if colNames is a vector, return an in-memory table.
Examples
t = indexedTable(`sym`side, 10000:0, `sym`side`price`qty, [SYMBOL,CHAR,DOUBLE,INT])
insert into t values(`IBM`MSFT`IBM, ['B','S','S'], 125.27 208.9 125.29, 1000 800 200)
a=sliceByKey(t,"IBM", 'price');
a;
// output
[125.27,125.29]
typestr(a);
// output
FAST DOUBLE VECTOR
a=sliceByKey(t,("IBM",'S'));
a;
sym | side | price | qty |
---|---|---|---|
IBM | S | 125.29 | 200 |
typestr(a);
// output
IN-MEMORY TABLE
t1 = keyedTable(`sym`side, 10000:0, `sym`side`price`qty, [SYMBOL,CHAR,DOUBLE,INT])
insert into t1 values(`IBM`MSFT`IBM, ['B','S','S'], 125.27 208.9 125.29, 1000 800 200)
sliceByKey(t1, [["IBM", "MSFT"], ['B', 'S']]);
sym | side | price | qty |
---|---|---|---|
IBM | B | 125.27 | 1000 |
MSFT | S | 208.9 | 800 |