Select column based on column availability


I am reading multiple json files from source. where column names and column type are varying from file to file.

For example: In one file, column name is coming as an array and in another file it is coming without array. But for my use case I don’t need to worry about the column type.I only want data to be stored.

Now my question is:
I have below two different columns coming from two different file:
Col 1: jsonPath($, “$OT.Refs.TripRef[*][’@BookingRef’]”)
Col 2: OT.Refs.TripRef[’@BookingRef’]

I am reading one by one each file and I want to do following thigs:

  1. If Col 1 is not coming from file 1 then select Col 2
    2- If Col 2 is not coming from file 1 then select Col 1
    3- And both should come under one column name

For Example:

is not available in the file then select then Column name =

Hi @ppankaj88,

You can try with the “hasPath” object function and Conditional(Ternary) operator.

ex: $.hasPath(“col1”) ? col1 : (.hasPath(“col2”) ? $col2 : “”)

The above expression will check:

  • if col1 is present on the source, then take the col1
  • if col1 is missing from the source, then check if col2 is present on the source
  • if col2 is present on the source then take the col2
  • if both columns are missing then the target will be empty string

Also, I am attaching a simple pipeline as an example:

SL_Community_2020_08_24.slp (4.8 KB)

Hope this helps.

Spiro Taleski

1 Like

Thank you for providing solution…it’s worked for me