Forum Discussion

aditya_sharma's avatar
aditya_sharma
New Contributor III
8 years ago

Output from script snap (Python) is writing incorrect

Hi,

I am using script snap (python) to split comma separated values within one of my source column and making a dynamic update statement from it. However, when I am doing a preview of script output, all the values looks correct but if I look the preview in mapper output which takes input from script snap shows different output i.e. sometimes all the update statements are same and sometime two are same and one is different.

Am I doing something wrong?testchild_2017_09_22.slp (9.2 KB)
iods_record_1.zip (1.1 KB)

8 Replies

  • dmiller's avatar
    dmiller
    Former Employee

    Can you clarify in what way they are different?

    • akidave's avatar
      akidave
      Employee

      A document should not be modified once it has been written to the output view. Making a copy of the document avoids issues. Change the loop to create a new wrapper Map

               for item in sourceTables:
                   wrapper = java.util.HashMap(in_doc)
                   wrapper['query'] = "update iods_staging.{} set record_inserted = true;".format(item)
                   self.output.write(wrapper)
      
      • aditya_sharma's avatar
        aditya_sharma
        New Contributor III

        Hi Akidave,

        Thanks you so much for your solution. However, I would really appreciate if you could explain me more why we should not modify the document once it has been written to the output view.

        Thanks again.

        Aditya

    • aditya_sharma's avatar
      aditya_sharma
      New Contributor III

      Hi Dmiller,

      Please find below output from script snap and mapper output. Mapper output has two update statements same which is incorrect, it has to be same like script.

      Script Snap:

      “query”: “update iods_staging.stg_sf_account_dim_institution set record_inserted = true;”
      “query”: “update iods_staging.stg_sf_accountdistict_dim_institution set record_inserted = true;”
      “query”: “update iods_staging.stg_sf_recordtype_dim_institution set record_inserted = true;”

      Mapper Output:

      “query”
      “update iods_staging.stg_sf_account_dim_institution set record_inserted = true;”
      “update iods_staging.stg_sf_recordtype_dim_institution set record_inserted = true;”
      “update iods_staging.stg_sf_recordtype_dim_institution set record_inserted = true;”

      Thanks
      Aditya

      • dmiller's avatar
        dmiller
        Former Employee

        Is there a reason you need the Mapper after the Script Snap? Do you plan to modify other information?

        If so and there are items like query that should not be modified, then select the Pass through option and don’t specify them in the mapping table.