wire.data.DataTable

Properties

A data table holds an array of objects in the Rows property much like the rows in a relational database table. Each property in the object has a column that stores meta data about the property in the Columns property.

Name

Type

Default

Description

Columns

array

[ ]

Stores an array of column meta data about each property in the the list of objects stored in each row.

Rows

array

[ ]

Holds the raw list of objects in the data table.

Create a new data table by passing in an array of rows and an optional list of columns. If the columns aren't passed in, they will be created from the rows automatically.

let rows = [
    { UserName: "apeters", FullName: "Amy Peters", Quota: 1000, Active: true},
    { UserName: "jross", FullName: "John Ross", Quota: 1500, Active: true }    
]

let table = new wire.data.DataTable(rows);

Methods

Name

Description

cast

Static method that casts an object with the same data table properties into an instance of the DataTable class.

Select Methods

Use the select method in order to select data from the data table. The select method can take an optional list of comma delimited fields to be selected.

Name

Description

calc(function)

Creates a calculated column. As the function is evaluated, it will receive the current row, index position, and the list of all rows as delegate parameters. Visit Working with DataTable Columns or DataTable Columns for more detail.

column(column)

Select an individual column name.

distinct

Return a distinct list of rows based on the columns being selected.

nonEmpty

Return only rows that contain no null values.

orderBy(column)

Return the list of rows sorted by column.

top(N)

Return on the top N number of records.

as(newName)

Change the name of the column selected from the column method to newName.

format(format)

Format selected column using the specification in format. This can also be a custom function.

Select Aggregate Methods

Name

Description

avg(column)

Aggregate the numeric column using an average or arithmetic mean.

count(column)

Aggregate the numeric column by counting the rows.

distinctCount(column)

Aggregate the numeric column using a discount count of the rows based on the selected columns.

max(column)

Return the largest numeric value in the column.

min(column)

Return the smallest numeric value in the column.

sum(column)

Aggregate the numeric column by totaling all of its values.

Select the UserName column from the data table. Also select the FullName field but change its name to DisplayName. Aggregate the Quota column using a sum and format it to a whole number with no decimals which will include thousand separator commas. The result will automatically be grouped by UserName and DisplayName.

table.select("UserName")
    .column("FullName").as("DisplayName")
    .sum("Quota").format("N0");

Filter Methods

Start a filter chain using the where method.

Name

Description

filter(function)

Use a custom function to filter the rows of the data table. As the function is evaluated, it will receive the current row, index position, and the list of all rows as delegate parameters.

between(column, value1, value2)

Filter rows to those that have a column value that is between value1 and value2. This comparison will handle numbers and dates and is case sensitive. It is also inclusive and will include of value1 and value2 if applicable.

contains(column, expression)

Filter rows to those that contain a specific expression inside a column. A value will be included in this filter if any part of the value contains the expression. This comparison is case insensitive.

eq(column, value)

Filter rows to those that have a column value that equals value. This comparison is case sensitive.

in(column, values)

Filter rows to those that are contained inside the array of values in column. This comparison is case sensitive.

ne(column, value)

Filter rows to those that have a column value that do not equal value. This comparison is case sensitive.

starts(column, value)

Filter rows to those that start with a specific expression inside a column. This comparison is case insensitive.

Filter the data table to UserName equal to apeters but only if her Quota is greater than 800.

table.select().where()
    .eq("UserName", "apeters")
    .filter((row, index, rows) => {
       return row.Quota > 800; 
    });

Evaluation Methods

Once fields are selected and filtered, use the following methods to evaluate the resulting rows.

Name

Type

Description

count

number

Returns the number row in the result set.

exists

boolean

Returns a true if any rows exist in the result set. Otherwise, returns false.

first

object | null

Returns the first row in the result set. If there are no rows, returns null.

firstOrDefault

object

Returns the first row in the result set. If there are no rows, returns a row with values for each column set to null.

rows

array

Returns all the rows in the result set.

scaler

string | number

Returns the first value in the first row. Assumes there is only one row and one column in the result set.

table

DataTable

Creates a new data table from the result set.

The following creates a new data table with just the UserName field from the original data table.

let newTable = table.select("UserName").table();

Visit Working with DataTables for more details and examples on using data tables.

Last updated