dbt
Dating platform
Transactions
Transactions model for dating platform.
inferred
Blocks
transactions.sql · 39 lines
inferred
-- models/transactions.sql
{{ config(materialized='view') }}
SELECT
domain_userid,
domain_sessionidx,
tr_orderid,
tr_affiliation,
tr_total,
tr_tax,
tr_city,
tr_state,
tr_country,
MIN(collector_tstamp) AS tr_tstamp
FROM {{ this }}.events_atomic
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid
# models/schema.yml
version: 2
models:
- name: transactions
columns:
- name: user_id
- name: session_index
- name: session_id
- name: order_id
tests:
- unique
- not_null
- name: affiliation
- name: transaction_value
- name: tax
- name: city
- name: state
- name: country
- name: order_items
Assumptions
- materialized='view' is the default; no persist hint found.
- schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
transactions.sql · 15 lines
source-preserved
validation: not checked
SELECT
domain_userid,
domain_sessionidx,
tr_orderid,
tr_affiliation,
tr_total,
tr_tax,
tr_city,
tr_state,
tr_country,
MIN(collector_tstamp) AS tr_tstamp
FROM ${TABLE}.events_atomic
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid
transactions.view.lkml · 83 lines
inferred
view: transactions {
derived_table: {
sql: SELECT
domain_userid,
domain_sessionidx,
tr_orderid,
tr_affiliation,
tr_total,
tr_tax,
tr_city,
tr_state,
tr_country,
MIN(collector_tstamp) AS tr_tstamp
FROM ${TABLE}.events_atomic
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid ;;
}
dimension: user_id {
sql: ${TABLE}.domain_userid ;;
}
dimension: session_index {
type: int
sql: ${TABLE}.domain_sessionidx ;;
}
dimension: session_id {
sql: ${TABLE}.domain_userid || '-' || ${TABLE}.domain_sessionidx ;;
}
dimension: order_id {
primary_key: yes
sql: ${TABLE}.tr_orderid ;;
}
dimension: affiliation {
sql: ${TABLE}.tr_affiliation ;;
}
dimension: transaction_value {
type: number
sql: ${TABLE}.tr_total ;;
}
dimension: tax {
type: number
sql: ${TABLE}.tr_tax ;;
}
dimension: city {
sql: ${TABLE}.tr_city ;;
}
dimension: state {
sql: ${TABLE}.tr_state ;;
}
dimension: country {
sql: ${TABLE}.tr_country ;;
}
dimension: order_items {
sql: ${order_id} ;;
}
dimension_group: occurred {
type: time
timeframes: [time, date, week, month]
sql: ${TABLE}.tr_tstamp ;;
}
measure: transactions_count {
type: count_distinct
sql: ${order_id} ;;
}
measure: transactions_value {
type: sum
sql: ${transaction_value} ;;
}
}
transactions.view.lookml · 58 lines
source-preserved
- view: transactions
derived_table:
sql: SELECT
domain_userid,
domain_sessionidx,
tr_orderid,
tr_affiliation,
tr_total,
tr_tax,
tr_city,
tr_state,
tr_country,
MIN(collector_tstamp) AS tr_tstamp
FROM ${TABLE}.events_atomic
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid
fields:
- dimension: user_id
sql: ${TABLE}.domain_userid
- dimension: session_index
type: int
sql: ${TABLE}.domain_sessionidx
- dimension: session_id
sql: ${TABLE}.domain_userid || '-' || ${TABLE}.domain_sessionidx
- dimension: order_id
primary_key: true
sql: ${TABLE}.tr_orderid
- dimension: affiliation
sql: ${TABLE}.tr_affiliation
- dimension: transaction_value
type: number
sql: ${TABLE}.tr_total
- dimension: tax
type: number
sql: ${TABLE}.tr_tax
- dimension: city
sql: ${TABLE}.tr_city
- dimension: state
sql: ${TABLE}.tr_state
- dimension: country
sql: ${TABLE}.tr_country
- dimension: order_items
sql: ${order_id}
- dimension_group: occurred
type: time
timeframes:
- time
- date
- week
- month
sql: ${TABLE}.tr_tstamp
- measure: transactions_count
type: count_distinct
sql: ${order_id}
- measure: transactions_value
type: sum
sql: ${transaction_value}
Contents
- transactions.sql
- transactions.sql
- transactions.view.lkml
- transactions.view.lookml