SnowConvert AI - Informatica PowerCenter - dbt mappings and transformations¶
This page shows how SnowConvert AI converts each Informatica PowerCenter Mapping transformation into a dbt model, with a before (Informatica) and after (Snowflake) example for each. For the dbt project layout and the three-tier model architecture, see the dbt output overview. For the concept map and supported-component matrix, see the Informatica PowerCenter overview.
Each transformation becomes a SQL model: source reads become stg_ staging models, intermediate transformations become int_ models, and Targets become marts models. The examples below are taken from the SnowConvert AI test suite.
Sources and staging¶
Source Qualifier and Source Definition¶
A Source Qualifier (or Source Definition) becomes a staging model that reads from a table declared in sources.yml. SnowConvert AI generates one staging model per source and a sources.yml that lists the source tables.
sources.yml:
Snowflake (stg_raw__SQ_DimCurrency.sql):
Important
Replace the YOUR_SCHEMA and YOUR_DB placeholders in sources.yml with your actual Snowflake schema and database before you run the project.
Row-level transformations¶
Expression¶
An Expression transformation becomes an int_ model whose SELECT list carries each output port’s formula. Informatica operators and functions convert to their Snowflake equivalents (for example, || stays string concatenation). For the full list, see the expression functions reference (coming soon).
Informatica output port: NEW_NAME = NAME || '!!!'
Snowflake (int_EXPTRANS.sql):
Filter¶
A Filter transformation becomes an int_ model with a WHERE clause that carries the Filter condition.
Informatica filter condition: SALARY > 10 AND SALARY <= 100000
Snowflake (int_t_dummy_filter_1.sql):
Combining data¶
Joiner¶
A Joiner becomes an int_ model with a SQL JOIN. The Informatica join type maps to the matching SQL join: Normal Join to INNER JOIN, Master Outer to RIGHT JOIN, Detail Outer to LEFT JOIN, and Full Outer to FULL OUTER JOIN. The Join condition becomes the ON clause.
Informatica join: Normal Join on FactInternetSales.ProductKey = DimProduct.ProductKey
Snowflake (int_t_join_DimProduct_FactInternetSales.sql):
Union¶
A Union transformation becomes an int_ model that combines its inputs with UNION ALL. Each input is a CTE that aligns its columns to the Union’s output ports.
Snowflake (int_union.sql):
Lookup¶
A Lookup becomes an int_ model with a LEFT JOIN to the lookup source. The lookup source is a CTE that keeps one row per lookup key with QUALIFY ROW_NUMBER(), matching Informatica’s single-row lookup behavior.
Snowflake (int_t_lookup_currency.sql):
Note
When a lookup can match multiple rows, Snowflake’s row selection is not guaranteed to be stable between runs, so SnowConvert AI emits the functional-difference marker SSC-FDM-INF0070. Add an ORDER BY to the lookup if you need a specific row. An unconnected Lookup is converted the same way, with the lookup result returned to the calling expression.
Aggregation and ranking¶
Aggregator¶
An Aggregator becomes an int_ model that computes each aggregate with a window function partitioned by the group-by ports, then keeps one row per group with QUALIFY ROW_NUMBER() = 1. This reproduces Informatica’s one-row-per-group output.
Informatica: group by DEPARTMENT, output deptsalary = SUM(SALARY)
Snowflake (int_AGGTRANS.sql):
Rank¶
A Rank transformation becomes an int_ model that assigns ROW_NUMBER() over the rank port and keeps the top or bottom N rows with QUALIFY. The example below selects the bottom 10 rows by price.
Snowflake (int_rank.sql):
Sorting¶
Sorter¶
A Sorter becomes an ORDER BY on the model that consumes its output, using the Sorter’s sort keys and their direction. When the Sorter has the distinct option enabled, SnowConvert AI also removes duplicate rows. Because dbt models are unordered relations, the ordering is applied where the data is consumed rather than stored.
Routing and normalizing¶
Router¶
A Router produces one int_ model per output group, each named int_{router_name}__{group_name} and filtered by that group’s condition. The default group keeps the rows that match no other group.
Informatica output group high_credits: Credits > 70
Snowflake (int_RTRTRANS__high_credits.sql):
Normalizer¶
A Normalizer becomes an int_ model that pivots repeating groups from columns into rows. Each occurrence becomes a CTE, the occurrences are combined with UNION ALL, and a generated-column ID (gcid_) and generated key (gk_) reproduce Informatica’s occurrence numbering.
Snowflake (int_normalizer.sql):
Note
The example is trimmed to two occurrences for brevity. SnowConvert AI generates one occurrence_n CTE per repeating column. VSAM Normalizers are not supported and generate an EWI.
Keys and load strategy¶
Sequence Generator¶
A Sequence Generator becomes a ROW_NUMBER() expression, offset by the Sequence’s start value. Because a dbt model is reprocessed on each run and rows are not inherently ordered, the generated numbers are not stable across runs, so SnowConvert AI emits SSC-EWI-INF0043.
Snowflake (int_seqgen.sql):
Note
Add a deterministic ORDER BY to the ROW_NUMBER() window if you need stable surrogate keys, or generate keys with a Snowflake sequence for state that persists across runs.
Update Strategy¶
An Update Strategy directs how rows reach the Target. When a Mapping uses one, the Target mart model is materialized as incremental with the merge strategy, so inserts and updates are applied with a Snowflake MERGE.
Snowflake (mart model):
Reuse and external logic¶
Mapplet¶
A Mapplet is a reusable group of transformations. SnowConvert AI converts a Mapplet into a dbt macro (macros/{mapplet_name}.sql) and calls the macro from each Mapping that uses the Mapplet, so the shared logic is defined once.
Stored Procedure¶
A Stored Procedure transformation calls an external procedure. SnowConvert AI preserves the call so you can point it at the migrated Snowflake stored procedure. A connected Stored Procedure participates in the data flow; a disconnected (pre- or post-session) Stored Procedure becomes a dbt hook. When the transformation references a named database connection, SnowConvert AI emits an EWI so you can confirm the target.
Targets¶
Target Definition¶
A Target Definition becomes a mart model named after the target table. It reads from the last intermediate model in the Mapping and aliases the columns to the target’s column names.
Snowflake (TargetTable.sql):
When the Mapping includes an Update Strategy, the mart is materialized incrementally with a merge, as shown in Update Strategy.