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