@Generated(value="software.amazon.awssdk:codegen") public final class Expression extends Object implements SdkPojo, Serializable, ToCopyableBuilder<Expression.Builder,Expression>
Use Expression to filter in various Cost Explorer APIs.
Not all Expression types are supported in each API. Refer to the documentation for each specific API to
see what is supported.
There are two patterns:
Simple dimension values.
There are three types of simple dimension values: CostCategories, Tags, and
Dimensions.
Specify the CostCategories field to define a filter that acts on Cost Categories.
Specify the Tags field to define a filter that acts on Cost Allocation Tags.
Specify the Dimensions field to define a filter that acts on the
DimensionValues .
For each filter type, you can set the dimension name and values for the filters that you plan to use.
For example, you can filter for REGION==us-east-1 OR REGION==us-west-1. For
GetRightsizingRecommendation, the Region is a full name (for example,
REGION==US East (N. Virginia).
The corresponding Expression for this example is as follows:
{ "Dimensions": { "Key": "REGION", "Values": [ "us-east-1", “us-west-1” ] } }
As shown in the previous example, lists of dimension values are combined with OR when applying the
filter.
You can also set different match options to further control how the filter behaves. Not all APIs support match options. Refer to the documentation for each specific API to see what is supported.
For example, you can filter for linked account names that start with “a”.
The corresponding Expression for this example is as follows:
{ "Dimensions": { "Key": "LINKED_ACCOUNT_NAME", "MatchOptions": [ "STARTS_WITH" ], "Values": [ "a" ] } }
Compound Expression types with logical operations.
You can use multiple Expression types and the logical operators AND/OR/NOT to create a list
of one or more Expression objects. By doing this, you can filter by more advanced options.
For example, you can filter by
((REGION == us-east-1 OR REGION == us-west-1) OR (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer).
The corresponding Expression for this example is as follows:
{ "And": [ {"Or": [ {"Dimensions": { "Key": "REGION", "Values": [ "us-east-1", "us-west-1" ] }}, {"Tags": { "Key": "TagName", "Values": ["Value1"] } } ]}, {"Not": {"Dimensions": { "Key": "USAGE_TYPE", "Values": ["DataTransfer"] }}} ] }
Because each Expression can have only one operator, the service returns an error if more than one is
specified. The following example shows an Expression object that creates an error:
{ "And": [ ... ], "Dimensions": { "Key": "USAGE_TYPE", "Values": [ "DataTransfer" ] } }
The following is an example of the corresponding error message:
"Expression has more than one roots. Only one root operator is allowed for each expression: And, Or, Not, Dimensions, Tags, CostCategories"
For the GetRightsizingRecommendation action, a combination of OR and NOT isn't supported. OR isn't
supported between different dimensions, or dimensions and tags. NOT operators aren't supported. Dimensions are also
limited to LINKED_ACCOUNT, REGION, or RIGHTSIZING_TYPE.
For the GetReservationPurchaseRecommendation action, only NOT is supported. AND and OR aren't supported.
Dimensions are limited to LINKED_ACCOUNT.
| Modifier and Type | Class and Description |
|---|---|
static interface |
Expression.Builder |
| Modifier and Type | Method and Description |
|---|---|
List<Expression> |
and()
Return results that match both
Dimension objects. |
static Expression.Builder |
builder() |
CostCategoryValues |
costCategories()
The filter that's based on
CostCategory values. |
DimensionValues |
dimensions()
The specific
Dimension to use for Expression. |
boolean |
equals(Object obj) |
boolean |
equalsBySdkFields(Object obj) |
<T> Optional<T> |
getValueForField(String fieldName,
Class<T> clazz) |
boolean |
hasAnd()
For responses, this returns true if the service returned a value for the And property.
|
int |
hashCode() |
boolean |
hasOr()
For responses, this returns true if the service returned a value for the Or property.
|
Expression |
not()
Return results that don't match a
Dimension object. |
List<Expression> |
or()
Return results that match either
Dimension object. |
List<SdkField<?>> |
sdkFields() |
static Class<? extends Expression.Builder> |
serializableBuilderClass() |
TagValues |
tags()
The specific
Tag to use for Expression. |
Expression.Builder |
toBuilder() |
String |
toString()
Returns a string representation of this object.
|
clone, finalize, getClass, notify, notifyAll, wait, wait, waitcopypublic final boolean hasOr()
isEmpty() method on the property). This is useful
because the SDK will never return a null collection or map, but you may need to differentiate between the service
returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true
if a value for the property was specified in the request builder, and false if a value was not specified.public final List<Expression> or()
Return results that match either Dimension object.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that
you can differentiate between null and empty), you can use the hasOr() method.
Dimension object.public final boolean hasAnd()
isEmpty() method on the property). This is useful
because the SDK will never return a null collection or map, but you may need to differentiate between the service
returning nothing (or null) and the service returning an empty collection or map. For requests, this returns true
if a value for the property was specified in the request builder, and false if a value was not specified.public final List<Expression> and()
Return results that match both Dimension objects.
Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
This method will never return null. If you would like to know whether the service returned this field (so that
you can differentiate between null and empty), you can use the hasAnd() method.
Dimension objects.public final Expression not()
Return results that don't match a Dimension object.
Dimension object.public final DimensionValues dimensions()
The specific Dimension to use for Expression.
Dimension to use for Expression.public final TagValues tags()
The specific Tag to use for Expression.
Tag to use for Expression.public final CostCategoryValues costCategories()
The filter that's based on CostCategory values.
CostCategory values.public Expression.Builder toBuilder()
toBuilder in interface ToCopyableBuilder<Expression.Builder,Expression>public static Expression.Builder builder()
public static Class<? extends Expression.Builder> serializableBuilderClass()
public final boolean equalsBySdkFields(Object obj)
equalsBySdkFields in interface SdkPojopublic final String toString()
Copyright © 2023. All rights reserved.