IMPORTANT:
this is not a Support Forum! Experienced users might answer from time to time questions posted here. If you need a professional and reliable answer, or if you want to report a bug, please contact Altova Support instead.

Executing Maps Options · View
jazeera
Posted: Thursday, June 13, 2013 5:49:35 PM
Rank: Newbie

Joined: 6/13/2013
Posts: 7
Hello,

I am a newbie and have been experimenting with this tool only a few days ago. I know how to execute a map but no clue how you would enable detail loggiing of runtime errors. Was able to compile a map file to an execution file.

I am using the following syntax to execute the MFX file:-

MapForceServer.exe run C:\xxx\xx\FF_EDI_ORDERS.mfx

I don't see very many switches that you could give it at the commandline to create a detail logfile. Is this the only way you execute a map or is there a way to execute it from within the GUI like most ETL tools?

Thanks
Jaz

File Attachment(s):
VR_EDI_ORDERS.mfd (19kb) downloaded 371 time(s).


pfisher44
Posted: Thursday, June 13, 2013 7:58:54 PM
Rank: Advanced Member

Joined: 8/29/2012
Posts: 146
Location: atlanta
Not sure what kind of detail you are looking for. The /log option on the command line tool will basically show you the same kind of output you'd get on the message window of the mapforce tool along with any general info such as invalid data sizes etc.
If you are looking for some magic switch you can throw to see what data is being copied from source node A to target node B, you'll be out of luck.

The only way you can get that is to insert system out calls into the actual generated source code so you can see it after it's compiled, but the downside is that the generated code doesn't maintain any human readable map references, it's all sequential identifiers.

welcome to mapforce :-)

jazeera wrote:
Hello,

I am a newbie and have been experimenting with this tool only a few days ago. I know how to execute a map but no clue how you would enable detail loggiing of runtime errors. Was able to compile a map file to an execution file.

I am using the following syntax to execute the MFX file:-

MapForceServer.exe run C:\xxx\xx\FF_EDI_ORDERS.mfx

I don't see very many switches that you could give it at the commandline to create a detail logfile. Is this the only way you execute a map or is there a way to execute it from within the GUI like most ETL tools?

Thanks
Jaz
vlad
Posted: Thursday, June 13, 2013 9:18:23 PM
Rank: Advanced Member

Joined: 12/13/2005
Posts: 2,856
Location: Mauritius
Your post is confusing, because you seem to ask two very different questions:

"no clue how you would enable detail loggiing of runtime errors"

and

"Is this the only way you execute a map or is there a way to execute it from within the GUI like most ETL tools"

even though you say

"I know how to execute a map"

So, please make yourself clear. You seem to have some very exact expectations, but so far nobody knows what are they.
jazeera
Posted: Friday, June 14, 2013 3:59:35 PM
Rank: Newbie

Joined: 6/13/2013
Posts: 7
I come from a conventional ETL tools background wherein you have ways to execute a map within the GUI besides a commandline option as well. Here in the case of Altova I don't see that. Do you always have to compile it to an executable file and then issue the MapForceServer.exe command?

Also, I am running into an error which says the following:-

Access to non-existing field Number.

Output files:
CustomersTarget1: C:\xxx\xx\ - Error occurred!

Now that gets me nowhere. I have checked and rechecked all my mappings and I don't see anything wrong.

Thanks
pfisher44
Posted: Friday, June 14, 2013 7:39:34 PM
Rank: Advanced Member

Joined: 8/29/2012
Posts: 146
Location: atlanta
I've never used the server, but if you look for the windows menu item Altova mission kit, it should show Mapforce, this then opens the UI. Compiling the generated code is only if you are not running the command line exe to directly run a map or not run via the UI (for production environments you'd maybe never use the UI).

UI mostly for building a map
mapforce.exe to directly run a map on the command line (windows only)
generate source code to deploy on non-windows boxes (except C++ which is a nightmare to port to Linux (to costly for production environment))

jazeera wrote:
I come from a conventional ETL tools background wherein you have ways to execute a map within the GUI besides a commandline option as well. Here in the case of Altova I don't see that. Do you always have to compile it to an executable file and then issue the MapForceServer.exe command?

Also, I am running into an error which says the following:-

Access to non-existing field Number.

Output files:
CustomersTarget1: C:\xxx\xx\ - Error occurred!

Now that gets me nowhere. I have checked and rechecked all my mappings and I don't see anything wrong.

Thanks
vlad
Posted: Friday, June 14, 2013 9:59:23 PM
Rank: Advanced Member

Joined: 12/13/2005
Posts: 2,856
Location: Mauritius
>I come from a conventional ETL tools background wherein you have ways to execute a map within the GUI besides a commandline option as well. Here in the case of Altova I don't see that

ok, didn't expect such a simple question - just click the Output tab
DBNewbie_2007
Posted: Monday, June 17, 2013 1:47:51 PM
Rank: Advanced Member

Joined: 9/9/2010
Posts: 51
Location: Pittsburgh, PA, USA
I have not run the server product either, but how about doing a command line re-direct?

MapForceServer.exe run C:\xxx\xx\FF_EDI_ORDERS.mfx > C:\xx\xx\FF_EDI_ORDERS.log

If you are running it as a batch process (FF_EDI_ORDERS.bat), you can also add in a "rename" to concatenate the date/time:

MapForceServer.exe run C:\xxx\xx\FF_EDI_ORDERS.mfx > C:\xx\xx\FF_EDI_ORDERS.log

REM Rename File
for /f "delims=/ tokens=1-3" %%a in ("%DATE:~4%") do (
for /f "delims=:. tokens=1-4" %%m in ("%TIME: =0%") do (
rename FF_EDI_ORDERS.log FF_EDI_ORDERS-%%c-%%b-%%a-%%m%%n%%o%%p.txt
)
)
jazeera
Posted: Monday, June 17, 2013 1:59:06 PM
Rank: Newbie

Joined: 6/13/2013
Posts: 7
DBNewbie,

That's all fine and dandy but all I get when I redirect output to a file is what I am seeing on sysout. It just does not tell me where exactly the problem lies. If Mapforce thinks that I am accessing a non-existing field number then why does it validate map successfully? The error message tells me nothing.

I have worked with a slew of popular ETL tools but this is just pathetic. You can't execute a map and when you execute a map from the cmdline it throws an error that should have been caught while validating the map.

All I want is to execute and see what goes to the target. Clicking on Output option will not help.

Can anyone tell me what the error 'Access to non-existing field Number' means?

Thanks
Jaz
vlad
Posted: Monday, June 17, 2013 8:26:50 PM
Rank: Advanced Member

Joined: 12/13/2005
Posts: 2,856
Location: Mauritius
How can we answer your specific question if you don't show us your mapping, including source files?

Mapping validation cannot show you errors which depend from the particular source file. The mapping itself is obviously valid, the source file not. But we can discuss this for another week - if you don't share with us your mapping nobody can help you.
jazeera
Posted: Tuesday, June 18, 2013 10:48:33 AM
Rank: Newbie

Joined: 6/13/2013
Posts: 7
Vlad,

Attached here is my map file. Let me know what you can find.

Thanks
Jaz

File Attachment(s):
VR_EDI_ORDERS.mfd (19kb) downloaded 262 time(s).


vlad
Posted: Tuesday, June 18, 2013 11:02:43 AM
Rank: Advanced Member

Joined: 12/13/2005
Posts: 2,856
Location: Mauritius
You are using the Customers database table. Such a message could mean that the Number field, which you've used as a source of the Filter node/row, doesn't exist in one of the processed rows.

The biggest problem with your mapping is the fact that you compare the field FirstName from Customers table, in order to get the value of Number field, without ever pointing in your mapping to which row they both belong. You did never map the Customers row itself.

MapForce can (if at all) only process such mapping if you have a single row in your Customers table.

Now, what you are obviously trying to do is to lookup in your Customers table for the FirstName and get a corresponding Number field as a result. There is a simple, and the only really performing way to do this - to use a SQL-WHERE component (see documentation for details). Your current approach not only doesn't really work, but also requires MapForce to load all records into memory and look for a corresponding value - given your experience with ETL, I'm sure you don't want it to do so. SQL-WHERE component will look in the database directly for result.
jazeera
Posted: Tuesday, June 25, 2013 6:31:59 PM
Rank: Newbie

Joined: 6/13/2013
Posts: 7
Vlad,

I figured what the problem was. I am afraid it had nothing to do with the need for a Sql-Where/Order component. It was the user defined library I was using. The mapping from the user defined library was not right because I was taking the Number and the OrderId from it when there was nothing coming in. They were not defined in otherwords. I inadvertently mapped the Articles structure in the library component to the Articles table in the Access database.

The size of the joining table [Customers] would matter in terms of memory if it had 100 million rows but at 3 rows it better not be an issue.

Well, it was indeed an experience.

Thanks

Jaz
Users browsing this topic
guest

Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

Use of the Altova User Forum(s) is governed by the Altova Terms of Use.