> For the complete documentation index, see [llms.txt](https://docs.euno.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.euno.ai/using-euno/usage-optimization/looker-usage-data.md).

# Looker Usage Data

## Looker Usage in Euno

Euno tracks usage activity across dashboards, looks, explores, views, tiles, and even individual fields. This rich usage history enables teams to make informed decisions about what is actively used, what may be deprecated, and how resources are accessed across the organization.

#### **Utilize Looker Usage Data To:**

* **Identify underused resources** to clean up dashboards, looks, or models that are no longer actively referenced.
* **Highlight heavily used content** to prioritize optimization, refactoring, or access reviews.
* **Understand adoption and ownership** by analyzing who queries what, from where, and how frequently.

## Prerequisites

Looker usage data is collected from Looker's System Activity history during each integration run. To ensure usage metrics are populated:

* The Looker API user must have the `see_system_activity` permission (included in the Admin role and in the [custom Euno permission set](/sources/business-intelligence/looker-integration/using-a-custom-looker-role.md)).
* **Observe users** must be enabled in the Looker source Advanced Settings (enabled by default) for user-level breakdowns and the `used` relationship toward users.

## Understanding the Types of Usage Data Captured in Euno

Euno collects and organizes Looker usage data into a few distinct signals, drawing from Looker's System Activity API and enhancing it for deeper insights:

### 1. Query History

For all Looker resources—including views, explores, looks, tiles, dashboards, and fields—Euno tracks:

* **Total queries** over 14-, 30-, and 60-day windows.
* **Distinct users** issuing those queries.
* **Source attribution** (`looker_queries_breakdown_by_app_*` on LookML resources): the app context in which the query originated (for example, a dashboard tile or an explore).
* **User breakdown** (`queries_breakdown_by_user_*`): per-user query counts when **Observe users** is enabled.
* **Average query time** (`average_query_time_*` on looks, tiles, dashboards, dimensions, and measures).

<figure><img src="/files/86dSBcEw4LL6wIRpPYmP" alt=""><figcaption><p>Usage &#x26; Optimization Section on the side panel: Queries, Users and Sources of Queries</p></figcaption></figure>

**Note:** Euno includes both cached and non-cached queries. Cached queries are *not* filtered out, providing a more complete picture of usage—but potentially overestimating warehouse activity when cache hits are high.

**Important:** Euno not only collects total queries for dashboard tiles and other visualizations, but also propagates those queries back upstream to the associated explores, views, and fields. Field-level and explore-level resources inherit query activity even when they are not queried directly but are involved in dashboard or look execution.

| Property                                                                                                            | Description                                                                                                                          | Applicable to                                            |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- |
| `total_queries_14d`, `total_queries_30d`, `total_queries_60d`                                                       | Query counts over the last 14/30/60 days from the Looker API (includes cached queries).                                              | View, Explore, Dashboard, Look, Tile, Dimension, Measure |
| `distinct_users_14d`, `distinct_users_30d`, `distinct_users_60d`                                                    | Distinct users over the last 14/30/60 days. User-level breakdown is available in the side panel and Euno Assistant, but not via EQL. | View, Explore, Dashboard, Look, Tile, Dimension, Measure |
| `queries_breakdown_by_user_14d`, `queries_breakdown_by_user_30d`, `queries_breakdown_by_user_60d`                   | Per-user query counts when **Observe users** is enabled. Shown in the side panel and Euno Assistant; not available via EQL.          | View, Explore, Dashboard, Look, Tile, Dimension, Measure |
| `looker_queries_breakdown_by_app_14d`, `looker_queries_breakdown_by_app_30d`, `looker_queries_breakdown_by_app_60d` | Top query sources by app context (for example, dashboard vs explore).                                                                | View, Explore, Dimension, Measure                        |
| `average_query_time_14d`, `average_query_time_30d`, `average_query_time_60d`                                        | Average query duration in seconds over the last 14/30/60 days.                                                                       | Dashboard, Look, Tile, Dimension, Measure                |

### 2. View Activity

For visual content such as dashboards and looks, Euno captures UI-level interactions (impressions):

* **View counts** over 7- and 30-day windows.
* **Last viewed** and **last accessed** timestamps from impression tracking.

These events represent frontend engagement with visual assets—even when no new queries are issued due to caching.

| Property                          | Description                                       | Applicable to   |
| --------------------------------- | ------------------------------------------------- | --------------- |
| `last_7d_views`, `last_30d_views` | Impression counts over the last 7 or 30 days.     | Look, Dashboard |
| `last_viewed_at`                  | The last impression time (ISO timestamp).         | Look, Dashboard |
| `last_accessed_at`                | The last impression datetime from usage tracking. | Look, Dashboard |

<figure><img src="/files/GQiC8BWBUnfeGtor6xNv" alt=""><figcaption><p>Usage &#x26; Optimization Section on the side panel: Queries and Views (Impressions)</p></figcaption></figure>

### 3. PDT Build Activity

For Persistent Derived Tables (PDTs) defined in `looker_view` files and marked as persistent:

* **Total PDT builds** in the past 30 days.
* **Total build time**—useful for identifying slow or resource-intensive transformations.

| Property                   | Description                                         | Applicable to |
| -------------------------- | --------------------------------------------------- | ------------- |
| `pdt_builds_last_30d`      | Total number of PDT builds in the last 30 days.     | View          |
| `pdt_total_build_time_30d` | Cumulative build time for PDTs in the last 30 days. | View          |

<figure><img src="/files/8bQc86vvjT4ssAuijdnN" alt=""><figcaption><p>Usage &#x26; Optimization Section on the side panel: PDT Build</p></figcaption></figure>

## Choosing the Right Signal for Your Use Case

* **Use Query Activity** when evaluating:
  * Warehouse cost
  * Query frequency
  * Backend performance
  * Data model usage across explores and fields (thanks to query propagation)
* **Use View Activity** when assessing:
  * Dashboard and look engagement
  * User adoption and content popularity
  * Organizational awareness and usage trends
* **Use PDT Build Activity** when evaluating:
  * Model performance and efficiency
  * Resource load from persistent transformations
  * Maintenance and freshness of derived data

## Why Do Query and View Data Sometimes Differ?

Differences between query and view counts are normal and often reflect Looker's caching and backend mechanics:

* When a dashboard loads from cache, Euno records a view event, but no new query is sent to the database.
* Conversely, when a PDT refreshes or a model is recompiled, queries may be triggered without user interaction, resulting in query counts without corresponding views.

Understanding this difference helps you interpret usage signals more accurately, especially when balancing adoption metrics against infrastructure and cost considerations.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.euno.ai/using-euno/usage-optimization/looker-usage-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
