'AWS CloudWatch selecting first existing field

I have two kinds of messages in the AWS CloudWatch and would like to select the first field that has some text in it. For example

Mesasge 1:

"message": {
   "message": "I am the first priority"
}

Message 2:

"message": {
    "err": {
         "message": "I am second priority"
    }
}

I would like to have these in a single column of the CloudWatch table depending which one is present. Is there any way to do this? Something like this (which obviously doesn't work):

fields @timestamp, ispresent(message.message) ? message.message : message.err.message


Solution 1:[1]

Apparently coalesce function is what I needed. It selected the first value that is not null:

fields @timestamp, component, coalesce(message.message, message.err.message) as TheMessage

More info at CloudWatch Logs Insights query syntax

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 drodil