DynamicTableWriter

DynamicTableWriter creates a TableWriter for writing data to a real-time, in-memory table.

Syntax

DynamicTableWriter(header, constantValues)
DynamicTableWriter(header)
DynamicTableWriter(columnNames, columnTypes, constantValues)
DynamicTableWriter(columnNames, columnTypes)
DynamicTableWriter(definition)
DynamicTableWriter(definition, constantValues)

Parameters

ParameterTypeDescription
columnNamesString[]

Column names.

columnTypesClass[]

Column data types.

headerTableHeader

The names and types of the columns in the output table (and our input).

constantValuesMap<String, Object>

A Map of columns with constant values.

definitionTableDefinition

The table definition to create the Dynamic Table Writer for.

Returns

A TableWriter.

Methods

DynamicTableWriter supports the following methods:

Examples

In this example, DynamicTableWriter is used to create a table with two columns:

  • The first contains the row number.
  • The second contains a string.
import io.deephaven.engine.table.impl.util.DynamicTableWriter

columnNames = ["Numbers", "Words"] as String[]
columnTypes = [int.class, String.class] as Class[]
tableWriter = new DynamicTableWriter(columnNames, columnTypes)

result = tableWriter.getTable()

// The logRow method adds a row to the table
tableWriter.logRow(1, "Testing")
sleep(3000)
tableWriter.logRow(2, "Dynamic")
sleep(3000)
tableWriter.logRow(3, "Table")
sleep(3000)
tableWriter.logRow(4, "Writer")

The above result table

The example above writes data to result from the main thread. As a result, the Deephaven web interface will not display the result table until the script finishes execution.

The example below uses a dedicated thread to write data to the table. The Deephaven web interface immediately updates to display all result table changes.

import io.deephaven.engine.table.impl.util.DynamicTableWriter

columnNames = ["Numbers", "Words"] as String[]
columnTypes = [int.class, String.class] as Class[]
tableWriter = new DynamicTableWriter(columnNames, columnTypes)

result = tableWriter.getTable()

// Thread to log data to the dynamic table
def thread = Thread.start {
    def strings = ["Testing", "Dynamic", "Table", "Writer"]

    for(int i = 0; i < 4; i++) {
        // The logRow method adds a row to the table
        tableWriter.logRow(i + 1, strings[i])
        sleep(3000)
    }

    return
}