cancel
Showing results for 
Search instead for 
Did you mean: 

Transformation rules inside mapper snap not exported to output file

darshthakkar
Valued Contributor

Hi Team,

I have found one of the transformational rules applied on “date field” not getting exported to the final output file (i.e. excel file) when the pipeline has been executed.
Output preview on the snap does show the right data (i.e. expected one), pipeline validation also shows the right data however the file which gets generated after pipeline execution doesn’t get those details.

I have tried the following:

  • validated pipeline via shift+validate
  • tweak the transformation rule, save the pipeline and check the output in the preview
  • validated the preview file (with default 50 records)
  • deleted the file generated by “validate & execute” snap on File writer with default 50 records so that new instance of data comes in
  • executed the pipeline with different file name multiple times

It’s a simple pipeline consisting of

            Snowflake Execute --> Mapper --> Excel Formatter --> File Writer

Sharing some screenshots to help it understand better:
(1) Pipeline with 4 snaps
image

(2) Snowflake execute output preview in JSON format (highlighted yellow fields needs transformation)
image

(3) Transformation Rules on Date fields
image

(4) Transformation Rule: $Expire_Date.toString().replace('{Timestamp=',"").replace('.000+0000}',"Z")

image

(5) Output preview after transformational rule
image

(6) Mapper output preview shows different data
image

→ I’ve observed certain times that the transformation rules won’t work so I go inside the mapper, modify the rule a bit, bring it back to default rule so that I can save it (save is not enabled if there is no change thus this workaround)

(7) As shift+validate didn’t work, had to change the transformation rule, save it and then this is the output preview on mapper snap:
image

(8) Settings under excel formatter snap for reference:
image

(9) Settings under File Writer snap for reference:
image

(10) File generated with default 50 records due to validate & execute on File writer snap
image

(11) Downloaded the file that gets generated in step 10 and below is the output (expected)
image

(12) Executed Pipeline
image

(13) Output File of Executed pipeline
image


image


image

I’ve seen this happening numerous times particularly to fields containing timestamp in other pipelines too, am I doing something wrong over here? Any settings that needs to be changed either in Mapper, Excel Formatter or File Writer snap?

Thanking in advance for your valuable time and suggestions on this one.

Best Regards,
DT

1 ACCEPTED SOLUTION

ptaylor
Employee
Employee

The Snowflake snaps have a setting called Handle Timestamp and Date Time Data. Unfortunately, its default setting, Default Date Time format in UTC Time Zone, has less-than-ideal behavior. The object type of the timestamp objects is java.sql.Timestamp, which will result in the odd inconsistencies you’re seeing between validation vs execution, and it’s also not a very usable type on the SnapLogic expression language.

I suggest changing this setting to the other option, SnapLogic Date Time format in Regional Time Zone. This will convert the timestamps to the type org.joda.time.DateTime, the type that the SnapLogic EL functions are designed to deal with.

This option will also produce a DateTime with the default time zone of the plex node, which can complicate things if the node’s default timezone isn’t UTC. But based on what you’ve shown, your node’s default timezone is UTC, so this shouldn’t be a problem for you, fortunately.

After changing that setting, try using an expression like $Expire_Date.toLocaleDateTimeString({format: "yyyy-MM-dd'T'HH:mm:ss'Z'"}).

Hope that helps.

View solution in original post

23 REPLIES 23

I’ve tested the above transformational rules with csv file and the results are the same as discussed above

Output preview file generated in “Manager” if the File Writer snap has Validate & Execute enabled shows the expected data with both excel and csv versions of file but shows blank when the file has been downloaded after executing the pipeline, this blows me away on why would it behave like this?

That’s very odd indeed. Let me look into it a bit to see what is happening.

ptaylor
Employee
Employee

The Snowflake snaps have a setting called Handle Timestamp and Date Time Data. Unfortunately, its default setting, Default Date Time format in UTC Time Zone, has less-than-ideal behavior. The object type of the timestamp objects is java.sql.Timestamp, which will result in the odd inconsistencies you’re seeing between validation vs execution, and it’s also not a very usable type on the SnapLogic expression language.

I suggest changing this setting to the other option, SnapLogic Date Time format in Regional Time Zone. This will convert the timestamps to the type org.joda.time.DateTime, the type that the SnapLogic EL functions are designed to deal with.

This option will also produce a DateTime with the default time zone of the plex node, which can complicate things if the node’s default timezone isn’t UTC. But based on what you’ve shown, your node’s default timezone is UTC, so this shouldn’t be a problem for you, fortunately.

After changing that setting, try using an expression like $Expire_Date.toLocaleDateTimeString({format: "yyyy-MM-dd'T'HH:mm:ss'Z'"}).

Hope that helps.

Hi @ptaylor,

Really appreciate you helping me on this one however the values are coming out as Null with the solution provided. Screenshots below for your reference and convenience:

(1) Snowflake Execute snap settings changed:
image

(2) Values coming as Null during output preview
image

(3) Output preview of the mapper snap in JSON format
image

(4) Validation file generated with default 50 records:
image

(5) File generated after executing the pipeline

image


image


image

Though there is one positive of this solution, my original transformation rule is working fine, not sure if its intermittent as I’ve observed that rule working fine at some instances and after a while, it will go berserk.

Let me know your thoughts on this.

Best Regards,
DT

It looks like you’re missing a $ at the beginning of the expression. Please check.