Using readers and writers to extract and load data.
Recently active
Does anyone know a good built-in or pre-created solution to read “Tabular JSON” that’s in a format of schema followed by values rather than key:value? See example below. I have ~40 schema values but only included 2. I’m looking for something dynamic rather than manually assigning column names in a specific order.{ "schema": { "title": "Data Export", "type": "array", "properties": { "id": { "title": "id", "type": "integer", "default": "", "minimum": -2147483648.0, "maximum": 2147483647.0 }, "code": { "title": "code", "type": "string", "default": "" } } }, "data": [ [ 1, "DEMO1234" ] ]}
Working in FME Workbench v.2024.2I am working on a process that validates my metadata format and converts it if needed, then exports the final format to xml for backup. We are trying to ensure all of our metadata is in ISO 19139, but we know some feature classes are FGDC CSDGM Metadata. We would like to use FME to convert the format and then update/write to the existing feature class's metadata in our enterprise geodatabase with it. Secondly, we want to also create a backup of the xml file which will be saved to a local folder. I have done this using an "Attribute File Writer" and only writing the geodb_metadata_string to a .xml file, however, when trying to reimport it into ArcMap/ArcGIS Pro I receive a "Failed to import metadata" alert. Comparing it an export directly from ArcGIS it is clear they differ. It seems like FME is converting it to their own format when reading it in.Any suggestions on either of these processes would be appreciated, thanks!
Ive been wondering about this for quite some time now, but couldn’t get any satisfying reply so far. The only solution I had in mind was to create a pythoncaller that automatically checks this..but that does feel a bit supoptimal. Maybe I am missing something? I’m building a daily monitoring workflow in FME Flow (REST API v4 / fmeapiv4). Goal: once per day I want to store counts like “successful runs” and “failed runs” for a specific repository + workspace.I currently use the /jobs endpoint like this:GET /fmeapiv4/jobs ?status=success &repository=repo%20Name &workspace=workspace.fmw &limit=1000 &offset=0Problem: I only want today’s runs (or a specific day), but according to the Swagger docs for GET /jobs the available query params are things like status, repository, workspace, sort, limit, offset, etc. There is no start / end or other date range filter.Swagger notes:default sort is by timeFinished descsorting supported on workspace, timeFinished, timeStarted, statu
Hello,I am a student who is discovering FME and learning it through self-training. I have a dataset that I need to process in FME, and I have been given the following technical requirements:Expected specifications:Each linear segment must not be longer than 10 meters. If there is no network point at a vertex of a linear feature, a point must be created with the following two attributes: Network depth (in cm): to be calculated according to the interpolation rules below: If there is no depth value at both the upstream and downstream ends of the linear feature → set depth to 100 cm. If there is a depth value at either the upstream or downstream end only → interpolate from the known depth to 100 cm at the unknown end, ensuring that the difference between two consecutive points does not exceed 20 cm. If there are depth values at both the upstream and downstream ends → interpolate the depth between them, weighted according to distance. If anyone has suggestions on how to implement thi
I have written a workbench were user can upload a excel spreadsheet and the workbench will convert the coordinates in the spreadsheet to a variety of different coordinate systems.The last step is a dynamic(excel) writer which works perfectly if I give the new coordinate attribute (column) a generic name (new_X and new_Y).I introduced a bulk attribute renamer to add a suffix reflecting the new coordinate system ( for example: X_WGS84 and Y_WGS84) which makes the output more intuitive and will avoid any confusion.When I do this the dynamic reader changes the order of the output columns to alphabetical.All the spreadsheets are different, so I don't think I can use a template.Is there an easy way to achieve this?
Hi,I would like to know how to pass a dynamic variable to the FeatureWriter that is generated in the SQLCreator at the start of the process. If I explicitly write the name of the feature class name it works, if I try a pass the table name identified in the SQLCreator it fails, it looks like it is passing an empty string as the nameBelow is a screen shot of the table_name variable being used. Below is a screen shot of the name being written, this works.Thanks for any assistance.Elliott
Using various recent versions of FME Form, I’ve discovered that a common key field that we use to join datasets on has a sloppy join when the FeatureJoiner Comparison Mode is set to Automatic.Since Automatic is the default comparison mode and the results are not at all what I would expect, I find this somewhat concerning. One needs to get into the data a bit to realize that the join is happening in a sort of loose/”like” fashion instead of a clean match.The key values are alphanumeric plus other characters such as a period or hyphen. As an example, on a subset of data, these are the record counts with the default Automatic comparison mode: And these are the record counts with the String comparison mode: The Automatic comparison mode is joining ID values that are close, but not the same, at least in some cases by dropping a trailing “0” (or more than one trailing “0”) and making bad 1:M matches instead of the expected 1:1 matches. For examples: and The above is in FME Form FME(R) 2025.1
I am reading a dwg with object data table in it. I set the mode to Group by Object Data. (set the workflow options to single merged feature type)I then created a tester to distinguish which features have been attached to the table. (tester_8). Then i use an attributekeeper. The OD table attributes are not available in the keeper. Then attach the same exact tester (tester_11) and all of the features fail. If i remove the attributekeeper the features route correctly. Also after using data preview correctly and viewing cache in the attributekeeper, the data preview will never show the OD table attributes again (add the reader again)Also setting additional attributes to expose does not stick. Each time i go in to the reader and update features i must add all the attributes to expose. These two problems seem to be related to each other.
Hi All, I’ve tried to add in a custom coordinate system and it just doesn’t work. I’ve restarted my computer twice and the co ordinate system won’t come up in the csmap reprojector. I would love to use the online webform that has been created, but I am unsure at which username and password is required to log-in. My usual FME doesn’t work. I’ve created a file in the FME folder in documents and edited both coordinate files in the reprojector folder. This is what I have written below:# COORDINATE_SYSTEM_DEF PerthCoastalGrid1994 \\# PROJ TM \\ # UNIT METER \\# SOURCE "spatialreference.org" \\ # DT_NAME GDA94 \\# EL_NAME GRS1980 \\ # DESC_NM "Perth Coastal Grid 1994" \\ # GROUP AUSNZ \\ # PARM1 115.8166666666667 \\ # ORG_LAT 0 \\
Using truncate and append with arcsde geodatabase writer . The SDE is on an orace database.Inserting 3milion rows. FME on prem takes 1 hour. but when on azure cloud it takes 8 hours. Any idea how to improve this.Any parameters that I can tweek.
I am having an issue converting data from an Excel file to xml due to an invalid character reference. In Excel the character appears as a space but as a square or “GS” when read in FME (see images). I am trying to build a validation tool that will find cells in the Excel file that contain these special characters. How do i find these characters using for example test filter, attribute validator or stringsearcher etc
Hi allI have been batting my skull against this for some time and havent been able to come up with a solution.I have about 60 datasets (and will be receiving about 60 every month from now on) where every line has a date and a time and a value containing a number. See attached file. its a dataset from a callcenter where every line is and hour and the number is the number of staff that are answering phones. the number of staff varies from hour to hour and from callcenter to callcenter. but the dataset only contains date hours where a staff memeber has been checked in, if none have checked in here isnt a line. My task is to find the ‘missing’ lines/hours where no staff has been active to monitor if the callcenter has been unstaffed when it shouldnt have been. I cant figure out a way to find these missing lines and add them in an automated way the i can use over and over again. Has anyone tried anything similar and found a solution?
I’m currently working on a project in relation to building a major road network which can be used for future traffic surveys. I’ve hit a snag where I’m trying to find potential way of detecting branches within the carriageways so that we can set a condition that should the branch be longer than 500 metres, then we need to separate this branch as its own features. What I’m struggling with is trying to detect the branching by applying unique identifiers (e.g. integer values) if branching occurs within a connected groups of features, something similar to the below: Essentially, I’ve built a two-way road network using the Ordnance Survey road network data and I’ve merged the road sections based on their connectivity (using the [NetworkTopologyCalculator] and [LineCombiner] transformers) and also depending on their ownership (i.e. locally owned vs centrally owned roads) and their road classification number (e.g. A303, A1(M) etc.). Within each of these merged features we need to work out
I just updated to version 25.2 and my oracle reader is failing and throwing this warning (not an error):An error occurred while fetching from query `SELECT a.*** FROM *** a' : OCI_SUCCESS_WITH_INFO: ORA-24347: Warning of a NULL column in an aggregate functionWhich causes Translation FAILED with 0 error(s) and 1 warning(s) (0 feature(s) output).My colleague tried the same on version 25.1 and whilst he also gets the warning his translation does not stop and he gets all features to work with. (As did I before my update)Ignoring the fact that the view should be fixed, is there a way to continue the translation with all features? Troubleshoot option Ignoring failed readers simply skips the reader and thus returning zero features.Furthermore I did see a few changes regarding oracle in the changelogs but I could not pinpoint which one is referring to this problem.
Is it possible to switch the Versioning in an Enterprise Geodatabase (on SQL Server) from "traditional" to "Branch Versioning" without touching FME Workspaces containing Esri Geodatase Readers and Writers (GEODATABASE_SDE)? In a first attempt in the test environment, everything seems to be running like before, after we switched to Branch Versioning of our feature classes. A quick look in the geodatabase tables seems to prove that the internal fields like GDB_ARCHIVE_OID, GDB_FROM_DATE, ... are filled correctly. Can it really be that simple? Does FME support the switch to Branch Versioning while keeping the Workspaces untouched? Of course, this would be a dream, but this seems too good to be true.
Hi!I have a workspace containing four Writers that write tables to a geodatabase. One of the writers is not working as expected. When i press “Run workspace” some of the attributes get null on almost all of the rows. It seems to filtered on one of the attributes (an attrribute called Name) since it is the same names that ends up null. The transformer in the step just before the writer looks as it should, so something goes wrong in the writer, not somewhere in the workspace. The strange thing is that when i press “Run to this” on the problematic writer, everything works as expected and there is no null values anymore. I don’t get any error messages. Using FME Workbench 2025.2Hope someone has any idea of what could be wrong, or if it is a bug?
Hi,Into an Esri ArcGIS Portal Feature Service Writer sending data to ArcGIS Portal what is the difference between Publishing and Spatial.There is nothing about Spatial in the documentation.Thanks.
The failed feature type issueWe are reading in many featureclasses using GEODATABASE_SDE reader in workspace and recently noticed an issue in FME Form (24.1) where it only throws a warning“A table name ‘HeritageSites_Exclusion’ could not be found in the geodatabase as either a featureclass or table. This may be due because the current user does not have permissions to see HeritageSites_Exclusion”The rejected feature handling is set to TerminateThe workspace runs in success, although this missing table was joined upon and is necessary for the right outcome. I guess I’m posting here to see if others have/had this issue, where only a warning of a missing featuretype is given… we believe it should be an Error WorkaroundObviously, we can place NoFeatureTesters and connect a Terminator to the NoInput port. This is alot of work, so we looked into parameters of the GEODATABASE_SDE reader moreUnsure how the Reader parameter “Ignore Failed Readers” truly works. It seems designed very early on to
Hello,I am creating PDF files using FME and am experiencing a serious performance issue (the process is very slow).I have a PDF template that I read and merge with my data so that each ID gets its own template. I use specific X,Y coordinates to write text at the correct positions in the PDF, and then I use the ID in the PDF writer to generate one PDF document per ID that includes both the data and the template.The output is correct and matches my expectations; however, exporting all records with the template takes a very long time.I was thinking to use the PDF Page Transformer, but rebuilding the pages also takes a significant amount of time.Is there any way to improve performance and make my current solution faster without completely rebuilding the workflow? thanks in advance FME 2021
Can FME create a pg database tables with attribute names that have upper cases? I know that this is possible in postgres - column names are case-sensitive when double-quoted. But no matter which parameters of PostgreSQL writer I select (standard/dynamic writing, with checked or unchecked option to Lowe Case Attribute Names in Table Creation Parameter), FME keeps replacing double-quotes with underscores and output is always folded to lowercase. Is it something that can be bypassed?
Hi I’m clipping point clouds with a polygon (1km x 1km), the inside result goes through a rasterdemgenerator with a cell spacing of 0.5m and I write it away as a geotif. When I compare the result with the polygon I see that the geotif is 0.25m bigger than the polygon. I know it has something to do with how a pixel is considered. As a polygon or as point in the center or something, but it doesn’t make any sense to me as you can divide 1km perfectly by 0.5m… It should be 2000 pixels by 2000 pixels right? How do I solve this? I tried playing with the clipper settings. Like changing “determine cell location by” to bounds and some other things. I got a result that’s 0.25cm smaller, but never an exact fit.
Hi, I am writing data to Esri ArcSDE in FME Form and have tested using both CoordinateSystemSetter and Reprojector to define the coordinate system. However, when I open the feature class in ArcGIS Pro I get a message that the coordinate system is missing. Has anyone had similar experiences?
We have multiple workspaces that write to ArcGIS Online with multipart geometries. The old ARCGISONLINEFEATURES writer works and correctly writes the geometries. The new (2025) Esri ArcGIS Feature Service Writer returns an error rejecting the features and the following warning:ArcGISFeatureServiceWriter: INSERT error for a feature in Project Stats by State. The error code from the server was '1000' and the message was 'Adding/updating geometries that result in SQL GeometryCollections is currently not supported (SQL Server performance).' Using a Deaggregator seems to fix this in most cases. However, we want to retain the multipart geometries. In other cases, I see a similar warning and the following error after using a Deaggregator:ArcGISFeatureServiceWriter: INSERT error for a feature in Terracon Offices Closest Areas. The error code from the server was '1000' and the message was 'Data is Null. This method or property cannot be called on Null values.' I’ve tried a NullAttributeMapper a
Hi,I’d like to read a folder of documents and a set of points (say from a csv) and then join these together (filename of documents might match an attribute on the points), then write them all to an ArcGIS Online feature service with the documents as attachments. I would ideally like to do this in one workspace and not have to hardcode anything.I don’t think this is possible without using one workspace to write the CSV to feature service, and then another to read it and add attachments using the ArcGISAttachmentCOnnector, as that requires the feature service URL, which may not be known at the time of creating the feature service.Thanks,Marc
I’m struggling with dynamic worflow when i want to change the target MS SQL DB schema (table qualifier). When i want to migrate data between databases with the same DB schema, it’s fine. But when i want to change the schema i’m running into errors. So far I could manage to migrate data from custom schema (e.g. “ldm”) to default “dbo” schema manipulating “fme_feature_type” and fme_feature_type_name” (also not sure about the differnce of these 2 attributes) in Attribute Manager assigning just Table name and omitting the schema qualifier.When i want to use another target schema than “dbo” (e.g. “test”) i always run into error:Microsoft SQL Server Spatial Writer: A feature has arrived with 'fme_feature_type' of test.OPSiteEK, but the feature type is not recognized. Halting translation1) Does anyone know how to reliably change the target schema for dynamic worflow?2) I have also noticed that if I want drop and recreate tables with no data, i have to send at least 1 data feature, because if