dating_platform/event_tracker.model.lookml 6 explores4 joins 3 warnings Repo files

LookML model · dating-platform

How this LookML model wires events, sessions, visitors and web orders

At a glance

Does
Six explores on project_connection: events joined to sessions and visitors, sessions joined to visitors, plus visitors, transactions, transaction_items and session_apps.Trust: Source-defined
Why
The web analytics model for the dating site, in the shape of a Snowplow web package: event, session and visitor tables keyed by cookie id and session index.Trust: Inferred
Breaks
3 warnings. Top: No join declares a relationship
Grain
Each explore keeps its base view's grain: events, sessions, visitors, orders or order lines. Joins add one session or visitor per row.Trust: Inferred
Source
dating_platform/event_tracker.model.lookml 23 lines

Explore graph: event_tracker

Trust: Source-defined

Each lane is one explore: its base view on the left, joins on the right, labelled with the join key. Dashed edges declare no relationship, so Looker assumes many_to_one.

Explores and joins in event_tracker
  • No relationship declared
Text version
  • events: events, sessions, visitors
  • sessions: sessions, visitors
  • visitors: visitors
  • transactions: transactions
  • transaction_items: transaction_items, transactions
  • session_apps: session_apps
  • events joins (on events.domain_userid = sessions...) sessions (no relationship declared)
  • events joins (on events.domain_userid = visitors...) visitors (no relationship declared)
  • sessions joins (on sessions.domain_userid = visito...) visitors (no relationship declared)
  • transaction_items joins (fk transaction_items.ti_orderid) transactions (no relationship declared)

Explores in event_tracker 6

Trust: Source-defined

Connection project_connection. Includes *.view.lookml *.dashboard.lookml

ExploreBase viewJoinsFiltersLines
eventseventssessions on events.domain_userid = sessions..., no relationshipvisitors on events.domain_userid = visitors..., no relationshipnoneL5-12
sessionssessionsvisitors on sessions.domain_userid = visito..., no relationshipnoneL13-16
visitorsvisitorsnonenoneL17-17
transactionstransactionsnonenoneL18-18
transaction_itemstransaction_itemstransactions fk transaction_items.ti_orderid, no relationshipnoneL19-22
session_appssession_appsnonenoneL23-23

Worth noticing

Events join sessions on two keys

Trust: Source-defined

The events explore joins sessions on domain_userid and domain_sessionidx together, and visitors on domain_userid alone. Both are many-to-one from events.

Source: event_tracker.model.lookml L5-12
dating_platform/event_tracker.model.lookmlL5-12
- scoping: true- include: '*.view.lookml'- include: '*.dashboard.lookml'- explore: events  joins:  - join: sessions    sql_on: |      events.domain_userid = sessions.domain_userid AND      events.domain_sessionidx = sessions.domain_sessionidx  - join: visitors    sql_on: events.domain_userid = visitors.domain_userid- explore: sessions  joins:  - join: visitors

dating-platform, event_tracker.model.lookml, lines 5-12

Both models include every view and dashboard

Trust: Source-defined

include: '*.view.lookml' and '*.dashboard.lookml' load the product views and dashboards into this model too, so dashboards resolve explores across both models.

Source: event_tracker.model.lookml L1-4
dating_platform/event_tracker.model.lookmlL1-4
- connection: project_connection- scoping: true- include: '*.view.lookml'- include: '*.dashboard.lookml'- explore: events  joins:  - join: sessions

dating-platform, event_tracker.model.lookml, lines 1-4

What can change the answer 3

Caution: No join declares a relationship

Trust: Source-defined

All four joins rely on Looker's default many_to_one. That default is right for these keys, but nothing records it, and sessions and visitors have no primary key.

What goes wrong: Sums from sessions or visitors queried through events repeat once per event with no symmetric aggregate protection.

Read the guide: Join fanout

Source: event_tracker.model.lookml L5-12
dating_platform/event_tracker.model.lookmlL5-12
- scoping: true- include: '*.view.lookml'- include: '*.dashboard.lookml'- explore: events  joins:  - join: sessions    sql_on: |      events.domain_userid = sessions.domain_userid AND      events.domain_sessionidx = sessions.domain_sessionidx  - join: visitors    sql_on: events.domain_userid = visitors.domain_userid- explore: sessions  joins:  - join: visitors

dating-platform, event_tracker.model.lookml, lines 5-12

Caution: transactions is declared here and in enterprise

Trust: Source-defined

This model's transactions explore reads transactions. The enterprise model declares a different transactions explore from user_transactions.

What goes wrong: A dashboard tile on explore: transactions can silently point at the wrong data.

Read the guide: Missing tables and stale references

Source: event_tracker.model.lookml L18-22
dating_platform/event_tracker.model.lookmlL18-22
  - join: visitors    sql_on: sessions.domain_userid = visitors.domain_userid- explore: visitors- explore: transactions- explore: transaction_items  joins:  - join: transactions    sql_foreign_key: transaction_items.ti_orderid- explore: session_apps

dating-platform, event_tracker.model.lookml, lines 18-22

Note: transaction_items joins on a raw column

Trust: Source-defined

The join uses sql_foreign_key: transaction_items.ti_orderid, but the view declares the key as order_id.

Read the guide: Join fanout

Source: event_tracker.model.lookml L21-22
dating_platform/event_tracker.model.lookmlL21-22
- explore: transactions- explore: transaction_items  joins:  - join: transactions    sql_foreign_key: transaction_items.ti_orderid- explore: session_apps

dating-platform, event_tracker.model.lookml, lines 21-22

Parser checks 5

Trust: Source-defined

Mechanical findings from parsing the LookML. They are facts about the files. The cards above explain which ones matter.

Show all 5 checks
  • no-relationship 4
    • event_tracker.model.lookml:7 Join events.sessions declares no relationship.
    • event_tracker.model.lookml:11 Join events.visitors declares no relationship.
    • event_tracker.model.lookml:15 Join sessions.visitors declares no relationship.
    • event_tracker.model.lookml:21 Join transaction_items.transactions declares no relationship.
  • duplicate-explore 1
    • event_tracker.model.lookml:18 Explore transactions is declared in 2 models (enterprise, event_tracker).

Related

Guides built on this file

Related source files

Source model