Search in sources :

Example 1 with SelectDistinctRequest

use of io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.SelectDistinctRequest in project deephaven-core by deephaven.

the class JsTable method selectDistinct.

@JsMethod
public Promise<JsTable> selectDistinct(Column[] columns) {
    final ClientTableState state = state();
    // We are going to forget all configuration for the current state
    // by just creating a new, fresh state. This should be an optional flatten()/copy() step instead.
    String[] columnNames = Arrays.stream(columns).map(Column::getName).toArray(String[]::new);
    final ClientTableState distinct = workerConnection.newState((c, cts, metadata) -> {
        SelectDistinctRequest request = new SelectDistinctRequest();
        request.setSourceId(state.getHandle().makeTableReference());
        request.setResultId(cts.getHandle().makeTicket());
        request.setColumnNamesList(columnNames);
        workerConnection.tableServiceClient().selectDistinct(request, metadata, c::apply);
    }, "selectDistinct " + Arrays.toString(columnNames));
    return distinct.refetch(this, workerConnection.metadata()).then(cts -> Promise.resolve(new JsTable(workerConnection, cts)));
}
Also used : SelectDistinctRequest(io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.SelectDistinctRequest) ClientTableState(io.deephaven.web.client.state.ClientTableState) JsMethod(jsinterop.annotations.JsMethod)

Aggregations

SelectDistinctRequest (io.deephaven.javascript.proto.dhinternal.io.deephaven.proto.table_pb.SelectDistinctRequest)1 ClientTableState (io.deephaven.web.client.state.ClientTableState)1 JsMethod (jsinterop.annotations.JsMethod)1