Aggregate Asset Unique Values

async AsyncCogniteClient.assets.aggregate_unique_values(
property: AssetProperty | str | list[str],
advanced_filter: Filter | dict[str, Any] | None = None,
aggregate_filter: AggregationFilter | dict[str, Any] | None = None,
filter: AssetFilter | dict[str, Any] | None = None,
) UniqueResultList

Get unique properties with counts for assets.

Note

In the case of text fields, the values are aggregated in a case-insensitive manner.

Parameters:
  • property (AssetPropertyLike) – The property to group by.

  • advanced_filter (Filter | dict[str, Any] | None) – The advanced filter to narrow down assets.

  • aggregate_filter (AggregationFilter | dict[str, Any] | None) – The filter to apply to the resulting buckets.

  • filter (AssetFilter | dict[str, Any] | None) – The filter to narrow down assets (strict matching).

Returns:

List of unique values of assets matching the specified filters and search.

Return type:

UniqueResultList

Examples:

Get the timezones (metadata key) with count for your assets in your CDF project:

>>> from cognite.client import CogniteClient
>>> from cognite.client.data_classes.assets import AssetProperty
>>> client = CogniteClient()
>>> # async_client = AsyncCogniteClient()  # another option
>>> result = client.assets.aggregate_unique_values(
...     AssetProperty.metadata_key("timezone")
... )
>>> print(result.unique)

Get the different labels with count used for assets created after 2020-01-01 in your CDF project:

>>> from cognite.client.data_classes import filters
>>> from cognite.client.data_classes.assets import AssetProperty
>>> from cognite.client.utils import timestamp_to_ms
>>> from datetime import datetime
>>> created_after_2020 = filters.Range(
...     AssetProperty.created_time, gte=timestamp_to_ms(datetime(2020, 1, 1))
... )
>>> result = client.assets.aggregate_unique_values(
...     AssetProperty.labels, advanced_filter=created_after_2020
... )
>>> print(result.unique)

Get the different labels with count for assets updated after 2020-01-01 in your CDF project, but exclude all labels that starts with “test”:

>>> from cognite.client.data_classes.assets import AssetProperty
>>> from cognite.client.data_classes import aggregations
>>> from cognite.client.data_classes import filters
>>> not_test = aggregations.Not(aggregations.Prefix("test"))
>>> created_after_2020 = filters.Range(
...     AssetProperty.last_updated_time, gte=timestamp_to_ms(datetime(2020, 1, 1))
... )
>>> result = client.assets.aggregate_unique_values(
...     AssetProperty.labels,
...     advanced_filter=created_after_2020,
...     aggregate_filter=not_test,
... )
>>> print(result.unique)