# Users as a Resource

Euno recognizes users as native resources within the data model, treating them as first-class citizens alongside tables, dashboards, dbt models, and other data assets. This enables comprehensive tracking of user relationships, and dependencies across your entire data stack.

By modeling users as resources, you can:

* Query relationships between users and data assets
* Perform impact analysis involving users
* Understand who depends on what data and who produces it

### Resource Types <a href="#resource-types" id="resource-types"></a>

#### User Account (`user`) <a href="#user-account-user" id="user-account-user"></a>

Represents an individual user in your organization.

**URI Format:**

```
user.<EMAIL_ADDRESS>
```

The email address is normalized by replacing `@` with `_at_` and converting to lowercase.

**Examples:**

* `user.john_at_example.com`
* `user.data.engineer_at_company.com`

#### User Group (`user_group`) <a href="#user-group-user_group" id="user-group-user_group"></a>

Represents a group of users, typically synchronized from identity providers like Microsoft Entra ID or Google Workspace.

**URI Format:**

```
user_group.<GROUP_ID>
```

The group ID is typically a unique identifier from the identity provider (e.g., Microsoft Entra ID group ID).

**Examples:**

* `user_group.cf9fa9ef-3315-459c-893f-a44ec0e26ac1`
* `user_group.4f5024be-9361-4dd9-8996-14c1f06a5dc3`

### Properties <a href="#properties" id="properties"></a>

#### User Account Properties <a href="#user-account-properties" id="user-account-properties"></a>

| Property        | Description                                               |
| --------------- | --------------------------------------------------------- |
| `name`          | Display name of the user                                  |
| `email_address` | Email address of the user (primary identifier)            |
| `label`         | Display label for the user                                |
| `subtype`       | Source of the user (e.g., `google_workspace`, `entra_id`) |

#### User Group Properties <a href="#user-group-properties" id="user-group-properties"></a>

| Property     | Description                                                |
| ------------ | ---------------------------------------------------------- |
| `name`       | Display name of the group                                  |
| `subtype`    | Source of the group (e.g., `google_workspace`, `entra_id`) |
| `native_id`  | Native identifier from the source system                   |
| `created_at` | Timestamp when the group was created                       |
| `members`    | List of user and group members belonging to this group     |

### Relationships <a href="#relationships" id="relationships"></a>

Users participate in the same relationship model as other resources in Euno. For a complete reference on relationship types, see [Relationships](https://file+.vscode-resource.vscode-cdn.net/Users/giladirim/code/documentation/developer-reference/technical-concepts/relationships.md).

#### Membership Relationships <a href="#membership-relationships" id="membership-relationships"></a>

Users can belong to groups, and groups can contain nested groups.

```
user ──[is member of]──> user_group
user_group ──[is member of]──> user_group (nested groups)
```

#### Usage Relationships <a href="#usage-relationships" id="usage-relationships"></a>

Track which resources users access and consume.

```
user ──[is user of]──> dashboard, report, table
```

### Querying Users with EQL <a href="#querying-users-with-eql" id="querying-users-with-eql"></a>

#### Find All Users <a href="#find-all-users" id="find-all-users"></a>

```eql
type = "user"
```

#### Find All User Groups <a href="#find-all-user-groups" id="find-all-user-groups"></a>

```eql
type = "user_group"
```

#### Find Users by Email Domain <a href="#find-users-by-email-domain" id="find-users-by-email-domain"></a>

```eql
type = "user" AND email_address ~ "@company.com"
```

#### Find Groups a User Belongs To <a href="#find-groups-a-user-belongs-to" id="find-groups-a-user-belongs-to"></a>

```eql
type = "user_group" AND has member(uri = "user.john_at_example.com")
```

#### Find All Members of a Group <a href="#find-all-members-of-a-group" id="find-all-members-of-a-group"></a>

```eql
type = "user" AND has group(name = "Data Engineering Team")
```

#### Find Dashboards Used by a User <a href="#find-dashboards-used-by-a-user" id="find-dashboards-used-by-a-user"></a>

```eql
type = "looker_dashboard" AND is used by(uri = "user.john_at_example.com")
```

#### Find Tables Consumed by Users in a Specific Group <a href="#find-tables-consumed-by-users-in-a-specific-group" id="find-tables-consumed-by-users-in-a-specific-group"></a>

```eql
type = "table" AND is used by(type = "user" AND has group(name = "Analytics Team"))
```

### Use Cases <a href="#use-cases" id="use-cases"></a>

#### Impact Analysis <a href="#impact-analysis" id="impact-analysis"></a>

Determine which users will be affected by changes to a specific resource:

```eql
type = "user" AND is user of(uri = "snowflake.db.schema.critical_table")
```

#### Access Pattern Analysis <a href="#access-pattern-analysis" id="access-pattern-analysis"></a>

Understand how users interact with data assets by querying user-resource relationships.

#### Team Dependencies <a href="#team-dependencies" id="team-dependencies"></a>

Analyze which data assets a team depends on:

```eql
is used by(has group(name = "Finance Team"))
```

### Enabling User Observation <a href="#enabling-user-observation" id="enabling-user-observation"></a>

User observation is enabled through supported BI integrations. Currently, the following integrations support user observation:

| Integration                                                       | User Types Discovered | Setup                                                               |
| ----------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------- |
| [Looker](/sources/business-intelligence/looker-integration.md)    | `user`, `user_group`  | Enable "Observe users" and/or "Observe groups" in advanced settings |
| [Power BI](/sources/business-intelligence/powerbi-integration.md) | `user`, `user_group`  | Enable "Observe users" and/or "Observe groups" in advanced settings |
| [Tableau](/sources/business-intelligence/tableau-integration.md)  | `user`                | Automatic with standard integration                                 |

### Related Topics <a href="#related-topics" id="related-topics"></a>

* [Relationships](/developer-reference/technical-concepts/relationships.md) - Complete relationship reference
* [Universal Resource Identifier (URI)](/developer-reference/technical-concepts/universal-resource-identifier-uri.md) - URI format reference
* [EQL Query Language](/using-euno/euno-query-language-eql.md) - Query language documentation


---

# Agent Instructions: 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/developer-reference/technical-concepts/users-as-a-resource.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.
