Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion references/workspace/user-attributes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ User attributes can be used in these specific contexts within the model.yaml fil
- `required_attributes:` - For column and table access control
- `sql_on:` - For filtering joins

User attributes can also be used in:

- **Chart filter values** - Filter charts dynamically based on the logged-in user

<Info>
User attributes cannot currently be referenced inside`sql:` tags within the model YAML files.
</Info>
Expand Down Expand Up @@ -106,6 +110,23 @@ When referencing user attributes in SQL you can use the following [SQL variables
If you are self hosting you can enable [SMTP](/self-host/customize-deployment/configure-smtp-for-lightdash-email-notifications) or [SSO](/self-host/customize-deployment/use-sso-login-for-self-hosted-lightdash) authentication to allow users to verify their email address.
</Info>

### Using user attributes in chart filter values

You can reference user attributes directly in chart filter values to create dynamic filters based on the logged-in user. This is useful for creating charts that automatically filter to show only data relevant to the current user.

To use a user attribute in a filter value, enter one of the following references:

- `${lightdash.user.email}` - The logged-in user's email address
- `${lightdash.attribute.<attribute_name>}` - A custom user attribute value

For example, if you have a chart showing sales data and you want each user to only see their own records, you can add a filter where `sales_rep_email` is equal to `${lightdash.user.email}`. When the chart runs, the filter value will be replaced with the actual email of the logged-in user.

Similarly, you can use custom attributes like `${lightdash.attribute.country}` to filter data based on a user's assigned region or department.

<Info>
If a user attribute referenced in a filter value is not set for the current user, the query will return a `Forbidden` error.
</Info>

### Row filtering with `sql_filter`

You can use user attributes to filter the rows returned by a query. This is useful if you want to restrict the data based on the user's attributes. To reference a user attribute in your sql, use the special lightdash reference`${lightdash.attributes.<attribute_name> }`. You should use the `IN` operator since the attribute might have multiple values.
Expand Down Expand Up @@ -484,4 +505,4 @@ Let's walk through an example:
</Tab>
</Tabs>

In this example, the `${lightdash.attributes.fruit}` will be replaced with `'kiwi','orange','coconut'`. The final SQL will be `my_model.fruit IN ('kiwi','orange','coconut)`
In this example, the `${lightdash.attributes.fruit}` will be replaced with `'kiwi','orange','coconut'`. The final SQL will be `my_model.fruit IN ('kiwi','orange','coconut)`