Skip to main content

Source - TabularWriteableSourceBuilder

Source.TabularWriteableSourceBuilder

A helper class to build a data

Source, which populates a data Stream with data. Data sources can range from simple clocks to complex database queries or API requests.

A corresponding

Template can be created using .toTemplate().

Remarks

See

Ingest Structured Data for a related learning module.

Type parameters

NameType
Textends DictType
Inputsextends Record

Hierarchy

  • AbstractSourceBuilder

    TabularWriteableSourceBuilder

Source

error

error(config):

TabularWriteableSourceBuilder

Check the source outputs for validity and identify any errors. When the if predicate returns true the source will be terminated with an error message and output data will not be produced.

Parameters

NameTypeDescription
configObjectthe error message and predicate
config.if(value: Variable, inputs: Inputs) => EastFunctionIf true an error will be created
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that an error is created

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.error({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.error


errorEvery

errorEvery(config):

TabularWriteableSourceBuilder

Add an assertion on every row of the source output to identify errors. For each row when the if predicate returns true the source will be terminated with an error message and output data will not be produced.

Parameters

NameTypeDescription
configObjectthe error message and predicate
config.if(fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionIf true an error will be created
config.messagestring | (fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionThe message in the case that an error is created

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const maximumValue = Stream("MaximumValue", FloatType)

const tableSource = new SourceBuilder("TableSource")
.input({ name: "max", stream: other })
.writeable(DictType(StringType, StructType({ id: IntegerType, value: FloatType, })))
.errorEvery({
if: ({ value }, { max }) => Greater(value, max),
message: ({ id }) => StringJoin`The value for row with id ${id} exceeds maximum`
})

input

input(config):

TabularWriteableSourceBuilder<T, Inputs & { [K in string]: Variable }>

Add a stream as input to the SourceBuilder, which can be used in expressions to configure how the

Source will access the data (such as a URL or password), the output data, or any data assertions (preconditions and postconditions).

Type parameters

NameType
Nameextends string
Sextends EastType

Parameters

NameTypeDescription
configObjectthe configuration for the input
config.nameName extends "input" | keyof Inputs ? never : Namethe name to give the input Variable
config.streamStreamthe input stream (the stream and associated preconditions)

Returns

TabularWriteableSourceBuilder<T, Inputs & { [K in string]: Variable }>

a new

SourceBuilder

Example

 const other = Stream("Other", FloatType)
const source = new SourceBuilder("Source")
.input({ name: "other", stream: other })
.clock({ cron: "0 * * * *" })
.toSource()

log

log(config):

TabularWriteableSourceBuilder

Produce log messages based on the source outputs and inputs. When the if predicate returns true source will register a warning with a message, but will proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe log message and optional predicate
config.if?(value: Variable, inputs: Inputs) => EastFunctionIf true a log message will be produced (optional)
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is created

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.log({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.log


logEvery

logEvery(config):

TabularWriteableSourceBuilder

Produce a long message for every row of the table. For each row when the if predicate returns true the source will register a log message and proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe log message and optional predicate
config.if?(fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionIf true a log message will be produced
config.messagestring | (fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is create

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const maximumValue = Stream("MaximumValue", FloatType)

const tableSource = new SourceBuilder("TableSource")
.input({ name: "max", stream: other })
.writeable(DictType(StringType, StructType({ id: IntegerType, value: FloatType, })))
.logEvery({
if: ({ value }, { max }) => Greater(value, max),
message: ({ id }) => StringJoin`The value for row with id ${id} exceeds maximum`
})

outputStream

outputStream():

Stream

Return the

Stream containing the output of the data source.

Returns

Stream

Example

// Create a datastream where a password can be written by end-user at runtime.
const hourly = new SourceBuilder("DatabasePassword")
.writeable(StringType)
.outputStream()

Overrides

AbstractSourceBuilder.outputStream


toTemplate

toTemplate():

Template

Return a

Template fragment containing the Streams and TaskDescriptions built by this builder.

Returns

Template

Example

// Create a datastream which is updated to the current time at the beginning of every hour
export default new SourceBuilder("Hourly")
.clock({ cron: "0 * * * *" })
.toTemplate()

Overrides

AbstractSourceBuilder.toTemplate


warn

warn(config):

TabularWriteableSourceBuilder

Check the source outputs for validity and produce warnings as necessary. When the if predicate returns true the source will register a warning with a message, but will proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe warning message and predicate
config.if(value: Variable, inputs: Inputs) => EastFunctionIf true a warning will be produced
config.messagestring | (value: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is created

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const source = new SourceBuilder("FloatSource")
.input({ name: "max", stream: max_stream })
.writeable(FloatType)
.warn({
if: (value, { max }) => Greater(value, max),
message: (value) => StringJoin`The value ${value} exceeds maximum`
})

Inherited from

AbstractSourceBuilder.warn


warnEvery

warnEvery(config):

TabularWriteableSourceBuilder

Add an warning on every row of the source output to identify errors. For each row when the if predicate returns true the source will register a warning with a message, but will proceed to proceed to produce output data.

Parameters

NameTypeDescription
configObjectthe warning message and predicate
config.if(fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionIf true a warning will be produced
config.messagestring | (fields: TypeToFields, key: Variable, inputs: Inputs) => EastFunctionThe message in the case that a warning is create

Returns

TabularWriteableSourceBuilder

a new

SourceBuilder

Example

 const maximumValue = Stream("MaximumValue", FloatType)

const tableSource = new SourceBuilder("TableSource")
.input({ name: "max", stream: other })
.writeable(DictType(StringType, StructType({ id: IntegerType, value: FloatType, })))
.warnEvery({
if: ({ value }, { max }) => Greater(value, max),
message: ({ id }) => StringJoin`The value for row with id ${id} exceeds maximum`
})

writeableStream

writeableStream():

Stream

Return the

Stream containing the stream end-users can write to.

Returns

Stream

Example

// Create a datastream where a password can be written by end-user at runtime.
const hourly = new SourceBuilder("DatabasePassword")
.writeable(StringType)
.outputStream()