A TDM task copies a Business Entity (BE) from a source environment to a target environment. A BE can have multiple LUs with either a flat or a hierarchical structure. For instance, a Customer BE consists of Customer Care, Billing, Ordering and Usage LUs. The ability to break up a BE into several LUs enables maximum flexibility and prevents duplication of development. Additionally, defining a hierarchical structure of parent-child LUs enables creating LUs, based on the natural root entity of the related data sources, instead of forcefully setting unified root entities on all LUs related to a given BE.
Each LU in a TDM project should have additional components in order to support TDM functionalities, as described below:
Each LU in a TDM project has the following structure:
Dummy root table - FABRIC_TDM_ROOT.
Generic TDM LU tables that are linked to the root table.
2 main branches that are linked to the root table:
Source branch - LU tables that extract an entity's source data. Source LU tables are populated when a TDM task needs to load (insert) entities into a target environment and they therefore must extract the source data of these entities.
Target branch - LU tables that extract the target keys of an entity. The keys are extracted from the target environment in order to enable deleting an entity from the target environment if required by the TDM task.
Click for more information about Fabric implementation and deleting entities from the target environment.
Use either one of the following methods to add the TDM LU tables to the new LU:
This method adds the TDM tables to the LU schema in advance, before adding the source LU tables to the LU.
Import the TDM_LIBRARY LU from the TDM Library to your project and duplicate it to the newly created LU (right-click -> Duplicate Logical Unit). Now you have a template of the new LU with the TDM tables, including FABRIC_TDM_ROOT table as a root LU table.
Note that the LU_PARAMS table must be added to the LU schema although it is not required for defining LU parameters.
After building the LU schema with the source LU tables, the TDMLUInit flow runs on the LU one time in order to add the TDM tables to this LU schema as well. The flow edits the LU as follows:
It adds the TDM tables to the LU schema.
It sets the FABRIC_TDM_ROOT LU table to be the root LU table and links it to the main source LU table.
It sets the ROOT_TABLE_NAME and ROOT_COLUMN_NAME Globals on the LU.
It recreates the LU population of the main source LU table.
Click here for more information about the main source LU table's population's logic.
It creates the sequence Actors for the load and data generation flows.
It creates the delete and load flows.
Optional updates:
Verify that the LU schema does not have grouped tables, and deploy the LU to Fabric debug server before running the flow.
Set the flow's input parameters before executing it:
LU_NAME
ROOT_TABLE_NAME - populated with the current root LU table (the main source LU table). For example: customer.
ROOT_COLUMN_NAME - populated with the current instance ID field. For example: customer_id.
SOURCE_INTERFACE - populated with the source DB interface name.
SOURCE_SCHEMA - populated with the source DB schema name.
TARGET_SCHEMA - populated with the target DB schema name.
TARGET_INTERFACE - populated with the target DB interface name.
TARGET_ENVIRONMENT - populated with one of the target environments' names.
Additional flow input parameters:
Set the CREATE_DELETE_TABLES input parameter to true in order to create and add the target tables to the LU.
Set the CREATE_GENERATE_FLOWS input parameter to true in order to create data generation flows for the LU.
Below is an example of the TDMLUInit flow's input parameters:
Run the flow in Fabric Studio.
TDM 9.0.2 has added a new flow: TDMLUInitBasedOnFabric. This flow is identical to the TDMLUInit flow except for the way it gets the schema structure: the TDMLUInit gets the schema structure from the source and target interfaces, but the TDMLUInitBasedOnFabric gets the schema structure from the LU. The new flow can be used instead of the TDMLUInit flow for a better performance under the following conditions:
Note that this flow requires setting the source and target interfaces and schemas as they need to be added to the main table population and to the load and delete flows.
The population of the LU table needs to be based on a Broadway flow.
Fabric 7.2 introduces Fabric Discovery and Catalog solution), which provides an insight into the Fabric interfaces, starting with the RDBMS interface types in the MVP version. Fabric Catalog supports a Catalog-based masking of PII fields.
TDM 8.1 adds new templates to integrate the TDM with the Catalog masking. These templates add the CatalogMaskingMapper Actor to the LU population flows in order to run the Catalog-based masking on the identified PII fields before loading them into the LU table. Note that it is not mandatory to implement the Fabric Catalog: if the Catalog is not implemented, the CatalogMaskingMapper Actor returns an empty output.
Optional: Edit the population flows to override the Catalog masking for some of the PII fields: add Masking Actors after the CatalogMaskingMapper Actor and link them to the relevant fields in the DbLoad Actor.
The main source LU tables have their own logic and are generated by a dedicated TDM template: populationRootTable.pop.flow.
Use either one of the following methods to generate the LU population for the main source LU tables:
Implement all source LU tables with the default population template. Then run the TDMLUInit flow to add the TDM tables to the LU schema and to regenerate the LU population for the main source LU table.
Generate the population flow based on populationRootTable.pop.flow:
Right-click the table name > New Table Population Flow From Template > populationRootTable.pop.flow. A pop-up window opens.
Populate the pop-up window's settings as follows:
File Name - populate the file name by [LU Table Name].[flow name]
Parameters -
Example:
Click here for more information about the main source LU table's population's logic.
Mask sensitive data in the LU tables by adding Masking Actors to the population flows.
Click for more information about TDM Masking.
Link the remaining source LU tables to the main LU tables, in a way that if the main source LU table is not populated, the remaining source LU tables remain empty as well.
Edit LuParams MTable in order to enable a subset of entities from selected parameters for this LU.
Click for more information about Handling TDM Parameters.
Use either one of the following methods to create and add the target tables to the LU:
Click for more information about the deleting entities implementation.
Click for more information about deleting entities from a target environment, using a TDM task.
The LUI should include the source environment, which should be set as the active environment in Fabric. When running a Data Viewer on the LU to debug its implementation, do either:
_dev_
. For example, _dev_1.A TDM task copies a Business Entity (BE) from a source environment to a target environment. A BE can have multiple LUs with either a flat or a hierarchical structure. For instance, a Customer BE consists of Customer Care, Billing, Ordering and Usage LUs. The ability to break up a BE into several LUs enables maximum flexibility and prevents duplication of development. Additionally, defining a hierarchical structure of parent-child LUs enables creating LUs, based on the natural root entity of the related data sources, instead of forcefully setting unified root entities on all LUs related to a given BE.
Each LU in a TDM project should have additional components in order to support TDM functionalities, as described below:
Each LU in a TDM project has the following structure:
Dummy root table - FABRIC_TDM_ROOT.
Generic TDM LU tables that are linked to the root table.
2 main branches that are linked to the root table:
Source branch - LU tables that extract an entity's source data. Source LU tables are populated when a TDM task needs to load (insert) entities into a target environment and they therefore must extract the source data of these entities.
Target branch - LU tables that extract the target keys of an entity. The keys are extracted from the target environment in order to enable deleting an entity from the target environment if required by the TDM task.
Click for more information about Fabric implementation and deleting entities from the target environment.
Use either one of the following methods to add the TDM LU tables to the new LU:
This method adds the TDM tables to the LU schema in advance, before adding the source LU tables to the LU.
Import the TDM_LIBRARY LU from the TDM Library to your project and duplicate it to the newly created LU (right-click -> Duplicate Logical Unit). Now you have a template of the new LU with the TDM tables, including FABRIC_TDM_ROOT table as a root LU table.
Note that the LU_PARAMS table must be added to the LU schema although it is not required for defining LU parameters.
After building the LU schema with the source LU tables, the TDMLUInit flow runs on the LU one time in order to add the TDM tables to this LU schema as well. The flow edits the LU as follows:
It adds the TDM tables to the LU schema.
It sets the FABRIC_TDM_ROOT LU table to be the root LU table and links it to the main source LU table.
It sets the ROOT_TABLE_NAME and ROOT_COLUMN_NAME Globals on the LU.
It recreates the LU population of the main source LU table.
Click here for more information about the main source LU table's population's logic.
It creates the sequence Actors for the load and data generation flows.
It creates the delete and load flows.
Optional updates:
Verify that the LU schema does not have grouped tables, and deploy the LU to Fabric debug server before running the flow.
Set the flow's input parameters before executing it:
LU_NAME
ROOT_TABLE_NAME - populated with the current root LU table (the main source LU table). For example: customer.
ROOT_COLUMN_NAME - populated with the current instance ID field. For example: customer_id.
SOURCE_INTERFACE - populated with the source DB interface name.
SOURCE_SCHEMA - populated with the source DB schema name.
TARGET_SCHEMA - populated with the target DB schema name.
TARGET_INTERFACE - populated with the target DB interface name.
TARGET_ENVIRONMENT - populated with one of the target environments' names.
Additional flow input parameters:
Set the CREATE_DELETE_TABLES input parameter to true in order to create and add the target tables to the LU.
Set the CREATE_GENERATE_FLOWS input parameter to true in order to create data generation flows for the LU.
Below is an example of the TDMLUInit flow's input parameters:
Run the flow in Fabric Studio.
TDM 9.0.2 has added a new flow: TDMLUInitBasedOnFabric. This flow is identical to the TDMLUInit flow except for the way it gets the schema structure: the TDMLUInit gets the schema structure from the source and target interfaces, but the TDMLUInitBasedOnFabric gets the schema structure from the LU. The new flow can be used instead of the TDMLUInit flow for a better performance under the following conditions:
Note that this flow requires setting the source and target interfaces and schemas as they need to be added to the main table population and to the load and delete flows.
The population of the LU table needs to be based on a Broadway flow.
Fabric 7.2 introduces Fabric Discovery and Catalog solution), which provides an insight into the Fabric interfaces, starting with the RDBMS interface types in the MVP version. Fabric Catalog supports a Catalog-based masking of PII fields.
TDM 8.1 adds new templates to integrate the TDM with the Catalog masking. These templates add the CatalogMaskingMapper Actor to the LU population flows in order to run the Catalog-based masking on the identified PII fields before loading them into the LU table. Note that it is not mandatory to implement the Fabric Catalog: if the Catalog is not implemented, the CatalogMaskingMapper Actor returns an empty output.
Optional: Edit the population flows to override the Catalog masking for some of the PII fields: add Masking Actors after the CatalogMaskingMapper Actor and link them to the relevant fields in the DbLoad Actor.
The main source LU tables have their own logic and are generated by a dedicated TDM template: populationRootTable.pop.flow.
Use either one of the following methods to generate the LU population for the main source LU tables:
Implement all source LU tables with the default population template. Then run the TDMLUInit flow to add the TDM tables to the LU schema and to regenerate the LU population for the main source LU table.
Generate the population flow based on populationRootTable.pop.flow:
Right-click the table name > New Table Population Flow From Template > populationRootTable.pop.flow. A pop-up window opens.
Populate the pop-up window's settings as follows:
File Name - populate the file name by [LU Table Name].[flow name]
Parameters -
Example:
Click here for more information about the main source LU table's population's logic.
Mask sensitive data in the LU tables by adding Masking Actors to the population flows.
Click for more information about TDM Masking.
Link the remaining source LU tables to the main LU tables, in a way that if the main source LU table is not populated, the remaining source LU tables remain empty as well.
Edit LuParams MTable in order to enable a subset of entities from selected parameters for this LU.
Click for more information about Handling TDM Parameters.
Use either one of the following methods to create and add the target tables to the LU:
Click for more information about the deleting entities implementation.
Click for more information about deleting entities from a target environment, using a TDM task.
The LUI should include the source environment, which should be set as the active environment in Fabric. When running a Data Viewer on the LU to debug its implementation, do either:
_dev_
. For example, _dev_1.