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 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;
[125.27,125.29]
$ typestr(a);
FAST DOUBLE VECTOR
$ a=sliceByKey(t,("IBM",'S'));
$ a;
sym |
side |
price |
qty |
---|---|---|---|
IBM |
S |
125.29 |
200 |
$ typestr(a);
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 |