The messages view: message value, reply flags and the filters every query inherits
At a glance
Does
Reads one row per message with sender, recipient, thread, proposition, type, state and reply flags, plus a numeric message_value. Measures: count and avg_message_value.Trust: Source-defined
Why
Supports messaging quality analysis: how often conversations start, how often messages get replies, and how valuable messages are by sender age and subscription.Trust: Inferred
messages is joined into propositions: as messages, on messages.proposition_id = propo... (no relationship declared)
messages is joined into tests: as messages, on messages.sender_id = user_metri... (no relationship declared)
messages is read by maps_dashboard: 1 tile
Filters and exclusions that change meaning
Every explore query starts filtered
Trust: Source-defined
The messages explore in the enterprise model always excludes welcome messages and spammer senders and recipients, and starts at created_date: last week.
is_sent_within_24hr divides sender_account_age by 60 and compares it to 24. That means 24 hours only if the column is stored in minutes. The field is hidden.
sender_account_age declares only type: int, so Looker reads the default column ${TABLE}.sender_account_age. Its neighbour recipient_account_age spells the column out.
Because of the always_filter, count in the messages explore counts last week's non-welcome, non-spam messages unless the reader changes each filter value.
What goes wrong: Message volume from a fresh explore looks like weekly volume, and comparing it with monthly targets understates activity.