docs-v2/content/shared/influxdb3-admin/distinct-value-cache/query.md

2.3 KiB

Use the distinct_cache() SQL function in the FROM clause of an SQL SELECT statement to query data from the Distinct Value Cache (DVC).

[!Important] You must use SQL to query the DVC. InfluxQL does not support the distinct_cache() function.

distinct_cache() supports the following arguments:

  • table_name: ({{< req >}}) The name of the table the DVC is associated with formatted as a string literal.
  • cache_name: The name of the DVC to query formatted as a string literal. This argument is only required if there is more than one DVC associated with the specified table.
SELECT * FROM distinct_cache('table_name', 'cache_name')

You can use other SQL clauses to modify query results. For example, you can use the WHERE clause to return the distinct tag values associated with another distinct tag value:

SELECT
  city
FROM
  distinct_cache('wind_data', 'windDistinctCache')
WHERE
  country = 'Spain'

Use the HTTP API

To use the HTTP API to query cached data, send a GET or POST request to the /api/v3/query_sql endpoint and include the distinct_cache() function in your query.

{{% api-endpoint method="GET" endpoint="/api/v3/query_sql" api-ref="/influxdb3/version/api/v3/#operation/GetExecuteQuerySQL" %}}

{{% api-endpoint method="POST" endpoint="/api/v3/query_sql" api-ref="/influxdb3/version/api/v3/#operation/PostExecuteQuerySQL" %}}

{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN|TABLE_NAME|CACHE_NAME" %}}

curl -X POST "https://localhost:8181/api/v3/query_sql" \
  --header "Authorization: Bearer AUTH_TOKEN" \
  --json '{
    "db": "DATABASE_NAME",
    "q": "SELECT * FROM distinct_cache('\''TABLE_NAME'\'', '\''CACHE_NAME'\'')",
    "format": "json"
  }'

{{% /code-placeholders %}}

Example with WHERE clause

curl -X POST "https://localhost:8181/api/v3/query_sql" \
  --header "Authorization: Bearer 00xoXX0xXXx0000XxxxXx0Xx0xx0" \
  --json '{
    "db": "example-db",
    "q": "SELECT room, temp FROM last_cache('\''home'\'', '\''homeCache'\'') WHERE room = '\''Kitchen'\''",
    "format": "json"
  }'