Snowflake has many advantages:
Snowflake is a cloud database and as such brings continuous updates and behavioral changes. If you are interested in those changes, please follow the official Snowflake change log.
There are two types of loading tables into your workspace. You can select either Copy Table or Clone Table.
Copy Table is the default option, and it physically copies the table from our Storage to your workspace. This option allows you to refine the input mapping using various filters.
Clone Table avoids physical transfer of the data and clones the table from Storage without any processing.
Clone Table is pre-selected if the selected table is bigger than 100 MB.
By switching Load Type to Clone Table the input mapping will utilize the Snowflake
CLONE
command.
As the CLONE
command has no further options, all other input mapping options will be disabled
(except for Source and Destination of course).
Clone Table
is useful when
The CLONE
command will execute the input mapping almost instantly for a table of any size (typically under 10 seconds)
as it physically does not move any data.
_timestamp
system columnA table loaded using Clone Table will contain all columns of the original table plus a new _timestamp
column.
This column is used internally by Keboola for comparison with the value of the Changed in last filter.
The value in the column contains a unix timestamp of the last change of the row, which is
You can use this column to set up incremental processing.
This feature is currently in public beta and is enabled for each project separately. To enable this feature, contact us using the support button in your project.
In some cases, you may need to abort the transformation execution and exit with an error message.
To abort the execution, set the ABORT_TRANSFORMATION
variable to any nonempty value.
This example will set the ABORT_TRANSFORMATION
variable value to 'Integrity check failed'
if the INTEGRITY_CHECK
table
contains one or more records with the RESULT
column equal to the value 'failed'
.
The transformation engine checks the ABORT_TRANSFORMATION
after each successfully executed query and returns the value
of the variable as a user error, Transformation aborted: Integrity check failed.
in this case.
Unlike Redshift, Snowflake is case sensitive. All unquoted table/column names are converted to upper case while quoted names keep their case.
So if you want to create the following table,
all of these commands will work
while this one will not:
Be especially careful when setting up input and output mappings.
When writing your transformation script, quoting all table and column names is required. Snowflake converts all unquoted table/column identifiers to uppercase, which won’t match table/column identifiers created by Keboola.
Storage tables store data in character types. When you create a table used on output mapping, you can rely on implicit casting to char:
Or, you can create the table directly with character columns (and rely on implicit casting to char):
You can also explicitly cast the columns to char:
When using an unstructured data type, you always have to use the explicit cast:
The implicit cast does not work for the ARRAY
, OBJECT
and VARIANT
types, so the following code:
will lead to an error:
Expression type does not match column data type, expecting VARCHAR(16777216) but got OBJECT for column OBJ, SQL state 22000
By default, Snowflake uses the
YYYY-MM-DD HH24:MI:SS.FF3
format
when converting the timestamp
column to a character string.
This means that if you create a table in a transformation which uses a timestamp
column,
the table value will come out as 2018-04-09 06:43:57.866 -0700
in Storage. If you
want to output it in a different format, you have to cast the column to a string first, for example:
Do not use ALTER SESSION
queries to modify the default timestamp format, as the loading and unloading sessions are separate
from your transformation/sandbox session and the format may change unexpectedly.
Important: In the default US Keboola region (connection.keboola.com), the following Snowflake default parameters are overridden:
DY, DD MON YYYY HH24:MI:SS TZHTZM
TIMESTAMP_LTZ
yes
Important: Snowflake works with time zones (and Daylight Savings Time), requiring you to distinguish between various conversion functions: