Using user attributes for dynamic schema and table name injection

Looker's User Attributes feature can be used to dynamically insert schema and/or table names on a per-user basis.

The first step is to create a user attribute, such as custom_schema or custom_table, to which you will assign a value for each user. You can assign these values:

Once you have created the user attribute and assigned the appropriate value for your users, you can add a reference to that attribute in the sql_table_name of your view files, via Liquid variables. There are two examples below, one using a custom schema and one a custom table.

Example A

Using a custom_schema:

view: events {
 sql_table_name: {{ _user_attributes['custom_schema'] }}.events ;;

dimension: event_id { type: number primary_key: yes sql: ${TABLE}.id ;; } }

Example B

Using a custom_table:

view: events {
  sql_table_name: web_traffic.{{ _user_attributes['custom_event_table_name'] }} ;;

dimension: event_id { type: number primary_key: yes sql: ${TABLE}.id ;; } }