Browse the docs
Moving to Trinium

Moving from CloverDX

A CloverDX graph becomes a Trinium pipeline and a jobflow becomes a Flow. This guide maps the components and ideas, and says where the two differ.

The ideas

In CloverDXIn Trinium
GraphPipeline: nodes wired together on a canvas. Every node runs at once and rows stream between them.
ComponentNode.
EdgeWire.
MetadataColumns worked out as you build: every node shows its output columns without a run, so there is no metadata to define by hand.
CTL2One SQL expression language for every rule and formula.
Graph parametersParameters: values supplied when a pipeline runs, by a person, a schedule or a Flow step.
JobflowFlow: steps that run whole pipelines in order or side by side, branching on how each one ended.
SubgraphNo equivalent: there are no reusable parts of a pipeline. A shared pipeline run from several Flows covers reuse at the job level.
Server scheduleSchedule.
File event listenerA schedule that runs when files arrive in S3, Azure Blob Storage, Google Cloud Storage or SFTP.

Component by component

Readers

TheirsTriniumNotes
FlatFileReader, UniversalDataReaderCSV FilesDelimited text. Fixed-width text is not read.
SpreadsheetDataReaderExcel Files
JSONReader, JSONExtractJSON Files, JSONJSON Parse reads JSON held in a column.
XMLExtract, XMLReader, XMLXPathReaderXML Files, XMLRecords are found by path; XPath expressions are not supported.
ParquetReaderParquet Files
DatabaseReaderPostgres input, MySQL input, SQL Server input, Redshift input, Snowflake input, BigQuery input, Databricks input, ClickHouse input, Trino / Starburst inputOne input node per database or warehouse.
MongoDBReaderMongoDB input
SalesforceReader, SalesforceBulkReaderSalesforce input
DataGeneratorGenerate Rows, Text Input
KafkaReader, JMSReader, EmailReaderNo nodeNot supported: Trinium runs batch pipelines over tables and files, not message streams.

Writers

TheirsTriniumNotes
FlatFileWriter, UniversalDataWriterCSV File
SpreadsheetDataWriterExcel ReportWrites a new one-sheet workbook.
JSONWriterJSON File
ParquetWriterParquet File
XMLWriterNo nodeNo equivalent: Trinium does not write XML files.
DatabaseWriter and the bulk writersPostgres output, MySQL output, SQL Server output, Redshift output, Snowflake output, BigQuery output, Databricks output, ClickHouse output, Trino / Starburst outputOne output node per database or warehouse, each loading in the database's own way.
MongoDBWriterMongoDB output
SalesforceWriter, SalesforceBulkWriterSalesforce output
EmailSenderSend Email
TrashNo nodeNo node needed: rows on an output with nothing wired to it go nowhere.

Transformers

TheirsTriniumNotes
MapFormula, Manage ColumnsFormula computes columns; Manage Columns keeps, renames and retypes them.
FilterFilter
PartitionRouteUp to ten named branches, first match wins, plus one for unmatched rows.
DedupUnique
ExtSort, FastSort, SortWithinGroupsSort
AggregateSummarize
RollupSummarize, Formula Multi-RowCustom per-group code has no equivalent; Summarize and window functions cover the usual cases.
Denormalizer, PivotCross Tab
Normalizer, MetaPivotTranspose, Text to Columns
Concatenate, SimpleGather, MergeUnion
SimpleCopyNo nodeNo node needed: wire one output to several inputs and every wire gets every row.
DataSamplerSample
DataIntersectionJoin, Data CompareJoin keeps left-only, matched and right-only rows on outputs of their own.

Joiners

TheirsTriniumNotes
ExtHashJoin, ExtMergeJoin, RelationalJoinJoin, Join MultipleTrinium chooses how to join; there is no hash or merge choice to make.
LookupJoinJoin
DBJoinDatabase LookupSends a stream's keys to the database table.
CrossJoinAppend Fields

Data Quality

TheirsTriniumNotes
ValidatorData ValidationRows that break a rule leave on an output of their own, naming the rule.
ProfilerProbeData Profile

Others

TheirsTriniumNotes
HTTPConnector, RESTConnectorREST API (Read), API Lookup, REST API (Write)
WebServiceClientAPI Lookup, XMLA SOAP call is an API Lookup with an XML body, its response parsed with XML Parse.
DBExecuteNo nodePre-SQL and post-SQL statements on the database nodes. There is no standalone SQL node.

File Operations

TheirsTriniumNotes
ListFilesList Files
CopyFiles, MoveFiles, DeleteFilesFile ActionOne File Action copies, moves or deletes files on S3, Azure Blob, GCS, SFTP or a network share, before the data is processed or after the run succeeds or fails. It names no folder of its own: the input, List Files or File from URL wired to its Files anchor hands it the files.

Job Control

TheirsTriniumNotes
ExecuteGraphNo nodeA Run pipeline step in a Flow.
ConditionNo nodeA Flow wire's condition: on success, on failure or on complete. Inside a pipeline, Filter and Route branch on values.
BarrierNo nodeA Flow step with several incoming wires waits for all of them.
Loop, SleepNo nodeNot supported: a Flow does not loop and has no wait step.
SubgraphNo nodeNo reusable part of a pipeline. A shared pipeline run from several Flows, each step handing it its own parameters, covers reuse at the job level.

What does not carry over

  • Custom Java components and transforms. Trinium has no Java extension point. Put the logic behind an HTTPS endpoint of your own, and API Batch Lookup sends it the rows many at a time.
  • Message streams and EDI: Kafka, JMS, HL7, EDIFACT and X12 are not read or written.
  • Loops and waits in a jobflow, and passing a value one step produced to a later step. Hand data between pipelines through a table or a folder.
  • Fixed-width files and XML output.

Moving a graph

  1. Create a connection for each system the graph reads or writes.
  2. Rebuild the components with the table above. There is no metadata to declare: each node's columns follow from its settings and the node before it.
  3. Rewrite CTL transforms as SQL expressions in Formula, Filter and the other nodes that take a rule.
  4. Press Test for a 50-row sample, deploy to Staging, and compare a full run with the CloverDX output using Data Compare.
  5. Rebuild each jobflow as a Flow, one Run pipeline step per graph.

CloverDX component and job names are as of CloverDX 7.6.1, from CloverDX's public documentation: the component reference, job types, subgraphs and listeners. CloverDX is a trademark of its owner. Trinium is not affiliated with CloverDX.