I am looking to simply parse out the snaps used in a pipeline using the metadata read snap. However, I am having trouble getting the output of the snap_map.property_map.info.label.value to display correctly out of the mapper. I tried to set the mapping root as $snap_map[*], but that does not seem to work. Ideally, I would like to get a final table with pipeline_id, pipeline_name, snap_map_id, snap_map_name. May someone help me with this? Thanks.
This expression will iterate over all snaps included in the $snap_map and produce an array with your expected elements. You will also need the JSON Splitter snap to get the table form.
Thank you for this, as a follow up question. If I want to capture a field that does not always exist in property_map, how would I write the expression? In this case I want to capture property_map.settings.sqlStatement.value if it is present. Thanks.
Hi kindminis , You just need to extend the object with another element ie. the key and the corresponding value for that key. There are two ways to achieve this:
By using the hasPathfunction and the ternary operator. You will check if sqlStatement exists in porperty_map.settings in each snap, if so you will get sqlStatement.value, otherwise an empty string will be produced:
2. Check the null-safe access option in the mapper and map the required source path to the value. If property_map.settings.sqlStatement.value does not exist, missing data will be ignored and a null value will be produced:
To summarize, in approach #1, if property_map.settings.sqlStatement.value will not be present, an empty string will be produced, in approach #2, null will be produced.