Derived Columns
Derived columns work the way a SQL UPDATE
does and is performed after table load,
so that you have access to all of the tables columns and values at derivation time.
Examples
In the following example, we will create the TestCol
column and set it equal
to 'john doe'
. Because this value will be included in a SQLite UPDATE
statement
it’s important that we quote the text.
{
"name": "TestCol",
"columnType": "Derived",
"derivation": "'john doe'"
}
In the next example, we will utilize a column (MyInteger
) and create a new column
that squares that value.
{
"name": "TestCol",
"columnType": "Derived",
"derivation": "MyInteger * MyInteger",
"datatype": "int"
}
In the next example, we will utilize the function UUID
to create UUIDs for
the derived column.
{
"name": "TestCol",
"columnType": "Derived",
"derivation": "UUID()"
}
In the final example, we will show how useful the derivation can be by utilizing
a CASE
statement.
{
"name": "TestCol",
"columnType": "Derived",
"derivation": "CASE
WHEN (ROWID % 2) = 0
THEN ROWID || ' IS EVEN'
ELSE ROWID || ' IS ODD'
END"
}
Under the Hood
When ETLyte reads the schema file it will create the Derived Column in the CREATE TABLE
statement to SQLite. Then, when data is being imported to SQLite, ETLyte gets a list
of all the column names that aren’t Derived for the INSERT
statement (if they aren’t derived, they must be in the source). Then, ETLyte loads the table with all of
the values in the flatfiles, and afterwards performs the derivations.