Hi all. I'm trying to create a table from AWS WAF logs. There is a section of the log that is called ruleGroupList{} and it is a list containing multiple dictionaries. Sometimes there is field called "excludedRules" that is null. When it is not null, it is a list containing a dictionary with a field called ruleId. ruleGroupList : [ [-] { [-] excludedRules : null nonTerminatingMatchingRules : [ [+] ] ruleGroupId : AWS#AWSManagedRulesBotControlRuleSet terminatingRule : null } { [-] excludedRules : [ [-] { [-] exclusionType : EXCLUDED_AS_COUNT ruleId : SizeRestrictions_BODY } ] nonTerminatingMatchingRules : [ [+] ] ruleGroupId : AWS#AWSManagedRulesCommonRuleSet terminatingRule : null } In this case, I want to: list the ruleGroupList{}.ruleGroupId and the ruleGroupList{}.excludedRules{}.ruleId in a table, when ruleGroupList{}.excludedRules is not NULL. If it is NULL, then I don't want to display the values for that dictionary. There are 7 dictionaries in this ruleGroupList{} (as long as I don't change my WAF settings in AWS). This is my search: <search> | | spath input=ruleGroupList{} path=excludedRules | rename ruleGroupList{}.ruleGroupId as ruleGroup, ruleGroupList{}.excludedRules{}.ruleId as ruleGroupId, ruleGroupList{}.excludedRules as testNullExcludedRules | eval x=case(!isnull(testNullExcludedRules),mvzip(ruleGroup,ruleGroupId),isnull(testNullExcludedRules),x) | mvexpand x | eval x = split(x,",") | eval ruleGroupId=case(!isnull(testNullExcludedRules),mvindex(x,1)) | eval ruleGroup=case(!isnull(testNullExcludedRules),mvindex(x,0)) | table _time,ruleGroup,ruleGroupId This gives me the ruleGroupId correctly, but it always lists the first instance of the ruleGroup: I can't figure out how to ignore the ruleGroup when it's corresponding excludedRules is NULL. thanks for any help! Kevin
... View more