Dimension and measure names can get confusing, especially as models grow. Making the proper field references while writing LookML, and choosing the correct field in the field picker, requires thoughtful naming. One approach that will help with this is a consistent naming methodology. The following conventions are those often used internally at Looker.
type: count
measures are called [Filter] Count. For example:
- view: users
fields:
- measure: count
type: count
- measure: active_count
type: count
filters:
status: 'active'
This will give names in the Looker UI like:
These field names read naturally, although business users may not initially know to search for “count” as opposed to “number of” or “total”. However, with some very simple training, this seems to be the best option.
We don’t use “number of” or “total” for counts, because we want to reserve those words for other cases.
type: count_distinct
measures are called Unique [Filter] [Entity] Count. For example:
- view: users
fields:
- measure: unique_user_count
type: count_distinct
sql: ${id}
- measure: unique_active_user_count
type: count_distinct
sql: ${id}
filters:
status: 'active'
- measure: unique_name_count
type: count_distinct
sql: ${name}
This will give names in the Looker UI like:
type: sum
measures are called Total [Filter] [Entity]. For example:
- view: orders
fields:
- measure: total_revenue
type: sum
sql: ${TABLE}.revenue
- measure: total_chicago_revenue
type: sum
sql: ${TABLE}.revenue
filters:
city: 'Chicago'
This will give names in the Looker UI like:
type: number
dimensions that represent a quantity are called Number of [Entity]. For example:
- view: orders
fields:
- dimension: number_of_items
type: number
sql: ${TABLE}.items
This will give names in the Looker UI like:
Using the word “count” or “total” in this case can be quite confusing, because you will not know if you are working with a dimension or measure.
type: average
measures are called Avg [Filter] [Entity]. For example:
- view: orders
fields:
- measure: avg_revenue
type: average
sql: ${TABLE}.revenue
- measure: avg_chicago_revenue
type: average
sql: ${TABLE}.revenue
filters:
city: 'Chicago'
This will give names in the Looker UI like:
Measures and dimensions that are based on ratios between two other fields are called [Numerator] over [Denominator] or [Numerator] per [Denominator]. For example:
- view: orders
fields:
- dimension: revenue_per_number_of_items
type: number
sql: ${revenue} / ${number_of_items}
- measure: total_revenue_per_unique_customer
type: number
sql: ${total_revenue} / ${unique_customer_count}
This will give names in the Looker UI like:
If you were to call the first dimension something like Avg Revenue Per Item it would be less clear that you were using a type: number
dimension instead of a type: average
measure.