SchemaMapper

Converts the existing schema (data model) of features to a new structure, based on mappings defined in an external lookup table.

This technique is very useful when the mappings are potentially complex or when they need to be maintained by someone who is not familiar with FME. Using an external lookup table to define these mappings simplifies the completion of these tasks.

The schema mapping lookup table, used by the SchemaMapper transformer, defines a series of conditions that are to be met (filters), and a series of actions that will be executed when the conditions are met.

The lookup table may come in different formats such as: a comma-separated or plain text file; a spreadsheet (Excel or Google); or a database such as Oracle, PostGRES, Informix, SQL Server, etc.

If an incoming feature matches the rules in any row of the table, the potential actions of the transformer on that feature are listed by type as follows:

Map Feature Types:

Feature types – as defined by fme_feature_type – are mapped from their existing value, to one which defines the new feature type. For example:

Roads → Center Lines

Map Attributes:

One or more attributes on the feature are mapped by renaming their existing attribute name (s) to a new one. For example:

Name_of_Road → RoadName

Set New Attributes:

A new attribute is created whose name and value are defined in a lookup table.

Transformer Ports

Features that have an action carried out on them are output via the Mapped port. Otherwise, they are output via the Unmapped port.

In addition to the feature type, the geometry of each feature is left untouched.

Features output through the Mapped port will receive a new attribute that specifies which rows from the schema mapping table that were applied to the feature. The rows are specified as a comma-separated string (for example, '3,4,5'). This attribute is specified by the Selected Row Attribute parameter, and can only be changed from within the Navigator pane. Setting this parameter to a blank value will prevent the attribute from being added to features.

SchemaMapper Uses

You can use the SchemaMapper for:

Domain Mapping: where attributes values can be remapped according to a well-defined domain or lookup table. For example:

Dynamic Translations: where workspaces are created to handle any data structure

Automated Schema Mapping: where the manual connections between source and destination schemas are done automatically using an external lookup table.

Note: A schema mapping table (domainSchema.csv) is often derived from a database metadata document such as Esri's XML database schema description, which can be exported from ArcCatalog for any selected geodatabase (Export > XML Workspace Document > Schema Only).

Example: Using the SchemaMapper transformer

The following example describes a typical scenario

Feature Type Mapping

Using an external lookup table (.csv file), you can map feature types to simplify a schema by mapping the old feature type to a new feature type:

Old Feature Type New Feature Type
River Water
Lake Water
Canal Water
Road Transportation
Railway Transportation
Airport Transportation

Attribute Mapping

Using an external lookup table, you can map attributes to new names:

Old Attribute New Attribute
River_Name WaterName
River_Alt_Name AltWaterName
River_Country WaterCountry
River_Length WaterSize
River_Owner WaterOwner

Filters

You can use filters to set your mapping rules. For example, if you want to map an “old pipe type” to a “new pipe type” You can set the rule (filter) according to the size of the pipes:

Old Pipe Type Pipe Size Attribute Pipe Size New Pipe Type
Gas PipeSize 6 GasSmall
Gas PipeSize 12 GasMedium
Gas PipeSize 24 GasLarge
Water Diameter 6 WaterSmall
Water Diameter 12 WaterMedium
Water Diameter 24 WaterLarge
Sewage PipeDiam 6 SewageSmall
Sewage PipeDiam 12 SewageMedium
Sewage PipeDiam 24 SewageLarge

Example Using Feature Type Mapping and Filtering

You can use the SchemaMapper wizard to define the filters and the type of mapping that you need. You accomplish this task by creating actions to be executed on the source schema.

To open the SchemaMapper wizard, click the Properties button of the transformer. The SchemaMapper Parameters dialog opens.

  1. Specify the format and location of the schema mapping table (lookup table) to be used. You may want to edit format parameters but you can use the defaults that Workbench provides. Click Next.
  2. If a dataset has more than one table, specify the table to be used. Click Next.
  3. On the Create Actions pane, click Add and select the action type. For this example, we'll select Feature Type Map.
  1. Select the Source and Destination Feature Type Fields. You can show/hide the table columns, and refresh the contents.

  1. Click OK to return to the Create Actions pane, which now shows the Feature Type Map action you just set.

Note: To transform your source schema to a new schema, you can create more than one action depending on the mapping rules that you want to apply to the existing schema.

  1. To add another action, select from the Add drop-down menu. In this example, we'll select Filter to display the Create Filter dialog:

  1. Select the table columns in the Attribute Name and Value Fields. By default, Blank Attribute Values are ignored but you can choose to include them.
  2. Click OK to return to the Create Actions dialog. The Action column now shows two actions: Map Feature Types and Filter Features:

  1. Click Finish to set the SchemaMapper parameters.

More Information

Editing Transformer Parameters

Using a set of menu options, transformer parameters can be assigned by referencing other elements in the workspace. More advanced functions, such as an advanced editor and an arithmetic editor, are also available in some transformers. To access a menu of these options, click beside the applicable parameter. For more information, see Transformer Parameter Menu Options.

Transformer Categories

Workflows

FME Licensing Level

FME Professional edition and above

Search FME Community

Search for samples and information about this transformer on the FME Community.