dbt Video editing

Company Transactions

Company Transactions model for video editing.

inferred

Blocks

company_transactions.sql · 39 lines
inferred
-- models/company_transactions.sql
{{ config(materialized='table') }}

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 company_analytics.events
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: company_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='table' inferred from a LookML persist hint (persist_for / datagroup / sql_trigger_value).
  • schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
company_transactions.sql · 15 lines
source-preserved validation: parses
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 company_analytics.events
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid
company_transactions.view.lkml · 84 lines
inferred
view: company_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 company_analytics.events
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid ;;
    persist_for: "24 hours"
  }

  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} ;;
  }
}
company_transactions.view.lookml · 59 lines
source-preserved
- view: company_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 company_analytics.events
WHERE event = 'transaction'
GROUP BY 1,2,3,4,5,5,6,7,8,9,10
ORDER BY tr_orderid
    persist_for: 24 hours
  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

  • company_transactions.sql
  • company_transactions.sql
  • company_transactions.view.lkml
  • company_transactions.view.lookml