Configure Microsoft Fabric Warehouse as your Celigo sync destination and let the sync manage the warehouse side for you: it creates the destination schema and tables on the first run and keeps them in step with your source as columns are added or widened. This article covers the destination settings specific to Fabric Warehouse, what the first run creates, how schema changes and ingestion modes work, and the Celigo-to-Fabric Warehouse data type mapping.
Prerequisites: A Microsoft Fabric Warehouse connection with a staging location selected (see Set up a connection to Microsoft Fabric Warehouse). The sync lists only connections that have a staging location, and a sync can’t be saved with a connection whose staging location is None. The connection needs a lakehouse for staging, and its service principal needs the Contributor role in that workspace. The sync also needs permission to create and change tables, in addition to the permissions for loading and merging data: CREATE SCHEMA (not needed for the dbo schema), CREATE TABLE, and ALTER TABLE. The connection test doesn’t check these, so a missing permission shows up as a failed run. For the full list of permissions, see Set up a connection to Microsoft Fabric Warehouse.
Create a data ingestion sync
Follow the instructions in Create a data ingestion sync to create a sync and configure your source application.
Set up Microsoft Fabric Warehouse as your destination
- Select Microsoft Fabric Warehouse as the destination that will ingest and store all source data from the sync.
-
Choose an established connection, or select Create connection to create a new one.
Caution: Avoid sharing connections with flows scheduled at the same time, as running them simultaneously can reduce performance.
-
Name your destination schema — the sync creates a schema based on the objects, exports, and fields you selected when configuring the source application. Give the schema a meaningful name to help you identify the destination tables that correspond to it later. The default is
dbo. A schema name can be up to 128 characters, can contain only letters, numbers, and underscores, and keeps the case you enter. The wizard rejects a name that breaks these rules before you can save.Note: This schema is for use only with this sync. Be careful when entering its name — you can’t change it after you save and run the sync.
This sync names your destination tables using the following structure: <database>.<schema>.<table>
-
<database>— The warehouse set on the connection. -
<schema>— The destination schema name. -
<table>— The specific object, export, or custom table name selected for sync.
What the first run creates
On the first run, the sync creates the destination schema and table if they don’t already exist, so you don’t write any DDL:
- The destination schema, if it doesn’t exist.
- One table per object or export, with columns typed according to the data type mapping.
- Primary key columns are created as
NOT NULLwith a non-enforced primary key. A column defined as anIDENTITYcolumn can’t be used as a primary key — the run fails before loading and names the column. - Column names longer than 128 characters are shortened to fit. If two source fields shorten to the same name, the run stops before any table is created and names both fields so you can rename one at the source or exclude it from the sync.
- Column and table names that match a T-SQL reserved word get a trailing underscore, so you can use them freely in your source data (see Reserved words). Names keep their case, and characters that Fabric Warehouse doesn’t allow in a name are replaced with an underscore.
If the schema or a table can’t be created, the run fails with an error that says which step failed and why.
Ingestion modes and primary keys
Whether rows are updated, appended, or replaced is set per object or export in the source step, not on the destination (see Create a sync from an application’s objects).
- Merge — With a primary key set, rows that match on the key are updated and new rows are inserted.
- Append — Every run adds rows. Without a primary key, every run appends.
- Replace — Each run replaces the table contents, so only the latest data remains.
Note: Fabric Warehouse doesn’t enforce primary keys. If a merge batch contains the same key value more than once, the run fails with an error that names the key columns instead of a raw Fabric error. The sync doesn’t remove duplicates or choose which record is kept.
Fabric Warehouse uses a case-sensitive binary collation (Latin1_General_100_BIN2_UTF8), so string merge keys are case-sensitive: Account and account are different rows. If you moved from a Microsoft SQL destination, you may see new rows where you used to see updates.
How schema changes are applied in Microsoft Fabric Warehouse
The sync’s schema drift policy decides whether a source change is applied to the destination (see Configure a schema drift policy). When it is, this is what happens in Fabric Warehouse:
- A column is added — The column is added to the destination table and loads from the next run.
- A text column grows — The column is widened in place; existing values are untouched.
- A column changes to an incompatible type — The sync replaces the column with a new one of the right type, without losing data or leaving an extra column behind.
- A column would shrink or lose precision — The change is rejected before anything is altered, and the run fails with an error naming the column, its current type, and the attempted type. Change the source field back, or exclude the field from the sync.
Data type mapping
The data types sent to or inferred by Celigo syncs are transferred to Microsoft Fabric Warehouse as follows (see Understand how data types are inferred for what each Celigo data type represents).
| Celigo data type | Microsoft Fabric Warehouse data type |
|---|---|
| SHORT, SMALLINT | SMALLINT |
| INTEGER, BIGINT, NUMERIC, LONG | BIGINT |
| FLOAT, DOUBLE, NUMERICFLOAT | FLOAT |
| NUMBER, DECIMAL, NUMERICDECIMAL | DECIMAL |
| STRING, VARCHAR, TEXT | VARCHAR |
| BINARY, BYTES | VARBINARY |
| BOOLEAN, BOOL | BIT |
| DATE | DATE |
| TIME, TIMETZ | TIME |
| DATETIMENTZ, DATETIMETZ, DATETIMELTZ, TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ | DATETIME2 |
| ARRAY, OBJECT, VARIANT, JSON, STRUCT, GEOGRAPHY, DEFAULT | VARCHAR |
| INTERVAL | VARCHAR(256) |
A few mappings depend on the source field:
-
Integers — A field that the source declares as
SHORTorSMALLINTis stored asSMALLINT. An integer that Celigo infers from sample values is always stored asBIGINT. -
Decimals — The column uses the source field’s precision and scale. A field that declares no precision becomes
DECIMAL(38,s). -
Text — The column uses the source field’s declared length, up to 8000, which is the most Fabric Warehouse allows for a sized text column. A field that declares a longer length, such as a NetSuite field declared as 32767, becomes
VARCHAR(MAX). A field with no declared length also becomesVARCHAR(MAX). Merge key columns are different: a key with no declared length becomesVARCHAR(256), and a key that declares a length over 8000 becomesVARCHAR(8000), notVARCHAR(MAX). Fabric Warehouse doesn’t supportNVARCHAR, so text is stored asVARCHARwith UTF-8 collation.VARCHAR(MAX)holds up to 16 MB, so a row larger than 16 MB fails to load. -
Binary —
BINARYandBYTESfields are stored asVARBINARY. A field with no declared length, or one declared longer than 8000, becomesVARBINARY(MAX). -
Interval —
INTERVALfields are stored asVARCHAR(256). -
Time zones —
TIMEandDATETIME2columns don’t store a time zone offset. -
JSON — Arrays, objects, and variants load as JSON text into
VARCHAR(MAX)columns. -
Unsupported Fabric types — Fabric Warehouse doesn’t support types such as
DATETIMEOFFSET,NVARCHAR,MONEY,TINYINT,XML, andGEOGRAPHY, so the sync maps them to the closest supported type above. -
Value that doesn’t fit — If a source value can’t be converted to the column type, for example text sent to a
BIGINTcolumn, the load fails with an error that names the column and the value. No rows are skipped. - Existing tables — Tables created before these defaults keep their narrower types until they are recreated.
Microsoft Fabric Warehouse reserved words
Celigo sync automatically manages Fabric Warehouse (T-SQL) reserved words when creating or updating destination tables to prevent naming conflicts. You can use these keywords freely in your source data — the sync adds a trailing underscore to the destination name instead of quoting it, so a field named user becomes user_. Names keep their case and can be up to 128 characters, and characters that Fabric Warehouse doesn’t allow in a name are replaced with an underscore.
| Letter | Reserved words |
|---|---|
| A |
ADD, ALL, ALTER, AND, ANY, AS, ASC, AUTHORIZATION
|
| B |
BACKUP, BEGIN, BETWEEN, BREAK, BROWSE, BULK, BY
|
| C |
CASCADE, CASE, CHECK, CHECKPOINT, CLOSE, CLUSTERED, COALESCE, COLLATE, COLUMN, COMMIT, COMPUTE, CONSTRAINT, CONTAINS, CONTAINSTABLE, CONTINUE, CONVERT, CREATE, CROSS, CURRENT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR
|
| D |
DATABASE, DBCC, DEALLOCATE, DECLARE, DEFAULT, DELETE, DENY, DESC, DISK, DISTINCT, DISTRIBUTED, DOUBLE, DROP, DUMP
|
| E |
ELSE, END, ERRLVL, ESCAPE, EXCEPT, EXEC, EXECUTE, EXISTS, EXIT, EXTERNAL
|
| F |
FETCH, FILE, FILLFACTOR, FOR, FOREIGN, FREETEXT, FREETEXTTABLE, FROM, FULL, FUNCTION
|
| G |
GOTO, GRANT, GROUP
|
| H |
HAVING, HOLDLOCK
|
| I |
IDENTITY, IDENTITYCOL, IDENTITY_INSERT, IF, IN, INDEX, INNER, INSERT, INTERSECT, INTO, IS
|
| J | JOIN |
| K |
KEY, KILL
|
| L |
LEFT, LIKE, LINENO, LOAD
|
| M | MERGE |
| N |
NATIONAL, NOCHECK, NONCLUSTERED, NOT, NULL, NULLIF
|
| O |
OF, OFF, OFFSETS, ON, OPEN, OPENDATASOURCE, OPENQUERY, OPENROWSET, OPENXML, OPTION, OR, ORDER, OUTER, OVER
|
| P |
PERCENT, PIVOT, PLAN, PRECISION, PRIMARY, PRINT, PROC, PROCEDURE, PUBLIC
|
| R |
RAISERROR, READ, READTEXT, RECONFIGURE, REFERENCES, REPLICATION, RESTORE, RESTRICT, RETURN, REVERT, REVOKE, RIGHT, ROLLBACK, ROWCOUNT, ROWGUIDCOL, RULE
|
| S |
SAVE, SCHEMA, SECURITYAUDIT, SELECT, SEMANTICKEYPHRASETABLE, SEMANTICSIMILARITYDETAILSTABLE, SEMANTICSIMILARITYTABLE, SESSION_USER, SET, SETUSER, SHUTDOWN, SOME, STATISTICS, SYSTEM_USER
|
| T |
TABLE, TABLESAMPLE, TEXTSIZE, THEN, TO, TOP, TRAN, TRANSACTION, TRIGGER, TRUNCATE, TRY_CONVERT, TSEQUAL
|
| U |
UNION, UNIQUE, UNPIVOT, UPDATE, UPDATETEXT, USE, USER
|
| V |
VALUES, VARYING, VIEW
|
| W |
WAITFOR, WHEN, WHERE, WHILE, WITH, WRITETEXT
|
Limitations
- Fabric Lakehouse tables, SQL database in Fabric, and Parquet format aren’t supported as destinations.
- Connections that use an on-premise agent aren’t supported.
- Fabric Warehouse can’t be used as a data ingestion source.