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