Skip to main content
Version: Java (Groovy)

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")

img

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
}