|
|
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 JazFile Attachment(s):
VR_EDI_ORDERS.mfd (19kb) downloaded 371 time(s).
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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 ) )
|
|
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
|
|
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.
|
|
Rank: Newbie
Joined: 6/13/2013 Posts: 7
|
Vlad,
Attached here is my map file. Let me know what you can find.
Thanks JazFile Attachment(s):
VR_EDI_ORDERS.mfd (19kb) downloaded 262 time(s).
|
|
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.
|
|
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
|
|
|
guest |