Filter with criteria

Hi @sanmar -

This is an interesting one, there’s no multi-select parameter/filter for ‘match all’.

Here’s a workaround that utilizes @darcoli 's multi select parameter action

Step 1 - Create a ‘SelectedItemIDs’ parameter with a default value of ‘,’

Step 2 - Create a ‘c_updated_selected_items_id’ calculated field and add to a table visual group by.

ifelse(
  locate(${SelectedItemIDs}, {item_id}) > 0, replace(${SelectedItemIDs}, concat({item_id},','), ''),
  concat(${SelectedItemIDs},{item_id},',')
)

Step 3 - Create ‘c_in_selected_item_ids_flg’ calculated field and use in conditional formatting.

ifelse(locate(${SelectedItemIDs}, {item_id} ) > 0 , 1, 0)

Step 4 - Add ‘c_all_items_flg’ calculate field to use as filter.

// hard coded 10 matches
ifelse(
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',2),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',3),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',4),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',5),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',6),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',7),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',8),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',9),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',10),1,0),[{client_id}],PRE_AGG)+
maxOver(ifelse({item_id}=split(${SelectedItemIDs},',',11),1,0),[{client_id}],PRE_AGG)
=strlen(replace(${SelectedItemIDs},',','')),'Y','N')

Result:
2022-06-22_17-09-26 (1)

1 Like