Filtering should be done at the service level, not the service category level. You can think of the AWS Service Category as a roll up sum of the composite AWS Services.
A good way to understand the structure of AWS Service vs Service Category is to look at the services filtering in the CloudHealth Platform, which only filters by one categorization (AWS Services). Let's look at one grouping in particular:
AWS Lambda - Direct is the parent (-1 level), and Lambda - Compute and Lambda - Request are the children. The API Names for these three are:
If we filter using the parent aws_lambda_d, our data returned is all nulls. We actually need to do our filtering based on the children (filters=AWS-Service-Category:select:aws_lambda_function_request,aws_lambda_function_compute_time).
If I filter for just the children on a request that has an AWS-Service-Category dimension, I will get both of the children as expected, but the parent nest will also be populated. We can get the parent totals in this manner.