FME Version
Files
Introduction
In this article, we will perform a couple of translations demonstrating how to use date/time attribute values in destination filenames. These workflows are useful in scenarios such as Status Reports, Work Schedules, and Maintenance Schedules.
This article helps you to understand the following:
- How to set DateTime attribute on the dataset using DateTimeStamper
- Use DateTime Functions (DateTimeConvertor) to extract month name from date Attributes
- Use Data Fanouts on File and Folder-based formats. The behavior of fanout changes based on whether you are working with a file-based format or a directory-based format. For instance, a DWG writer (file-based) will create new layers with a feature type fanout, and new drawings with a dataset fanout. A SHAPE writer (directory-based) will create new shapefiles on a feature-type fanout, and new directories on a dataset fanout.
Step by Step Instructions
Example 1: File-based formats
File-based formats such as GML, DWG, DGN, can assign data to different layers within a single file using Dataset Fanout . In this example, we will create an attribute, then use DateTimeStamper and DateTimeConvertor transformers to generate an ACAD output file with the first 3 letters of a month in the filename. The complete workspace is available in the Downloads section (date-in-file-based-ex1.fmwt)
1. Generate a new workspace
Open FME Workbench and click on Generate Workspace.
Complete dialog, using the following information:
Reader Format: MapInfo TAB
Dataset: Parks.tab (see Downloads section)
Writer Format: MITAB
Dataset: C:\Temp\Output\Parks.dwg
2. Create date attribute
The input data have no attribute with date values, so we are going to add a date attribute. Add a DateTimeStamper transformer on the canvas and insert it between reader and writer feature types. Set the transformer properties as follows:
Set Result Attribute to _month.
The attribute created by the DateTimeStamper stores system-generated current date as YYYYMMDD
3. Format date attribute
As _month attribute stores date in format YYYYMMDD and we want output filenames to contain the first three letters of a month. To achieve this, we will use DateTime functions. Add a DateTimeConvertor and connect it to the DateTimeStamper output port.
Set the transformer properties as follows:
Datetime Attributes: _month
Output Format: %b
NOTE: Expand Quick Reference to check all the functions available
4. Setting Output Filename
The next step is to use the newly generate date attribute in the destination file name using dataset fanout . Connect the output port of DateTimeConverter to ACAD writer.
- In the Navigator window, expand ACAD writer and click on ‘Fanout Dataset’.
- Open Fanout Expression dialog by clicking on the ellipsis button. In the text-editor window add the following expression.
Parks_@Value(_month).dwg
5. Run workspace
Run the workspace by pressing F5 clicking on the Run button on the toolbar. Confirm that the result as shown under Result.
Workspace
The workspace after completion should appear as below.
Result
Run the workspace and open the Output directory. Notice that the file name contains the month value as expected.
Example 2: Folder-based Formats
This example includes folder-based writers such as SHAPE and MITAB (formats that do not have a way to assign data to different layers within a single file). For this exercise, we are going to use DateTimeStamper in conjunction with feature-type fanout. The DateTimeStamper adds a date to our features, and feature-type fanout generates separate files based on that date value. The complete workspace is available in the Downloads section (date-in-folder-based-ex2.fmwt)
1. Generate a new workspace
Open Workbench and click on Generate Workspace.
Reader Format: MapInfo TAB
Dataset: Parks.tab (see Downloads section)
Writer Format: MITAB
Dataset: C:\Temp\Output\Parks.tab
2. Create date attribute
The input data have no attribute with date values, so we are going to add a date attribute. Add a DateTimeStamper transformer on the canvas and insert it between the reader and writer feature types.
Set the transformer properties as follows:
Type: Date
Result Attribute: _timestamp
The attribute (_timestamp) stores system-generated current date as YYYYMMDD
3. Setting file-name
The next step is to use this newly generated date attribute to name destination file using feature-type fanout.
- Open the writer FeatureType properties dialog.
- Under Parameters tab > General > TableName.
- Click the drop-down button and select _timestamp attribute as the input
4. Run workspace
Run the workspace by pressing F5 clicking on the Run button on the toolbar. Confirm that the file is written with date, as shown under Result
Workspace
The workspace after completion should appear as below.
Result
Run the workspace and open the Output directory. Notice that the file name contains the current date.
Please follow the link for more information on Data Fanouts.
Data Attribution
The data used here originates from open data made available by the City of Vancouver, British Columbia. It contains information licensed under the Open Government License - Vancouver.
Comments
0 comments
Please sign in to leave a comment.