dbt Marketing platform

Partner Actions By Day

Partner Actions By Day model for marketing platform.

inferred

Blocks

partner_actions_by_day.sql · 34 lines
inferred
-- models/partner_actions_by_day.sql
{{ config(materialized='view') }}

with wd(date) as (
select
        date_trunc('day', dates.d)
from generate_series((select date_trunc('day',min(created_at)) from partner_actions), now(), '1 day') as dates(d)
group by 1
order by 1)

SELECT
  wd.date,
  partner_actions._type AS "partner_actions._type",
  partner_actions.type AS "partner_actions.challenge_type",
  partner_actions.id AS "partner_actions.id",
  partner_actions.partner_id as "partner_actions.partner_id",
  case when date_trunc('day',partner_actions.launched_at) = wd.date then partner_actions.id else null end as "partner_actions.launched",
  case when date_trunc('day',partner_actions.expires_at) = wd.date then partner_actions.id else null end as "partner_actions.expired"
FROM partner_actions, wd

WHERE
  date_trunc('day',partner_actions.expires_at) >= wd.date AND
  date_trunc('day',partner_actions.launched_at) <= wd.date

# models/schema.yml
version: 2

models:
  - name: partner_actions_by_day
    columns:
      - name: partner_actions_type
      - name: partner_id
      - name: partner_action_id
      - name: partner_actions_challenge_type

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.
partner_actions_by_day.sql · 20 lines
source-preserved validation: parses
with wd(date) as (
select
        date_trunc('day', dates.d)
from generate_series((select date_trunc('day',min(created_at)) from partner_actions), now(), '1 day') as dates(d)
group by 1
order by 1)

SELECT
  wd.date,
  partner_actions._type AS "partner_actions._type",
  partner_actions.type AS "partner_actions.challenge_type",
  partner_actions.id AS "partner_actions.id",
  partner_actions.partner_id as "partner_actions.partner_id",
  case when date_trunc('day',partner_actions.launched_at) = wd.date then partner_actions.id else null end as "partner_actions.launched",
  case when date_trunc('day',partner_actions.expires_at) = wd.date then partner_actions.id else null end as "partner_actions.expired"
FROM partner_actions, wd

WHERE
  date_trunc('day',partner_actions.expires_at) >= wd.date AND
  date_trunc('day',partner_actions.launched_at) <= wd.date
partner_actions_by_day.view.lkml · 62 lines
inferred
view: partner_actions_by_day {
  derived_table: {
    sql: with wd(date) as (
select
        date_trunc('day', dates.d)
from generate_series((select date_trunc('day',min(created_at)) from partner_actions), now(), '1 day') as dates(d)
group by 1
order by 1)

SELECT
  wd.date,
  partner_actions._type AS "partner_actions._type",
  partner_actions.type AS "partner_actions.challenge_type",
  partner_actions.id AS "partner_actions.id",
  partner_actions.partner_id as "partner_actions.partner_id",
  case when date_trunc('day',partner_actions.launched_at) = wd.date then partner_actions.id else null end as "partner_actions.launched",
  case when date_trunc('day',partner_actions.expires_at) = wd.date then partner_actions.id else null end as "partner_actions.expired"
FROM partner_actions, wd

WHERE
  date_trunc('day',partner_actions.expires_at) >= wd.date AND
  date_trunc('day',partner_actions.launched_at) <= wd.date ;;
  }

  dimension: partner_actions_type {
    sql: ${TABLE}."partner_actions._type" ;;
  }

  dimension: partner_id {
    sql: ${TABLE}."partner_actions.partner_id" ;;
  }

  dimension: partner_action_id {
    sql: ${TABLE}."partner_actions.id" ;;
  }

  dimension: partner_actions_challenge_type {
    sql: ${TABLE}."partner_actions.challenge_type" ;;
  }

  dimension_group: date {
    type: time
    timeframes: [date, week, month]
    convert_tz: no
    sql: ${TABLE}.date ;;
  }

  measure: partner_actions_launched {
    type: count_distinct
    sql: ${TABLE}."partner_actions.launched" ;;
  }

  measure: partner_actions_expired {
    type: count_distinct
    sql: ${TABLE}."partner_actions.expired" ;;
  }

  measure: partner_actions_active {
    type: count_distinct
    sql: ${TABLE}."partner_actions.id" ;;
  }
}
partner_actions_by_day.view.lookml · 48 lines
source-preserved
- view: partner_actions_by_day
  derived_table:
    sql: with wd(date) as (
select
        date_trunc('day', dates.d)
from generate_series((select date_trunc('day',min(created_at)) from partner_actions), now(), '1 day') as dates(d)
group by 1
order by 1)

SELECT
  wd.date,
  partner_actions._type AS "partner_actions._type",
  partner_actions.type AS "partner_actions.challenge_type",
  partner_actions.id AS "partner_actions.id",
  partner_actions.partner_id as "partner_actions.partner_id",
  case when date_trunc('day',partner_actions.launched_at) = wd.date then partner_actions.id else null end as "partner_actions.launched",
  case when date_trunc('day',partner_actions.expires_at) = wd.date then partner_actions.id else null end as "partner_actions.expired"
FROM partner_actions, wd

WHERE
  date_trunc('day',partner_actions.expires_at) >= wd.date AND
  date_trunc('day',partner_actions.launched_at) <= wd.date
  fields:
  - dimension: partner_actions_type
    sql: ${TABLE}."partner_actions._type"
  - dimension: partner_id
    sql: ${TABLE}."partner_actions.partner_id"
  - dimension: partner_action_id
    sql: ${TABLE}."partner_actions.id"
  - dimension: partner_actions_challenge_type
    sql: ${TABLE}."partner_actions.challenge_type"
  - dimension_group: date
    type: time
    timeframes:
    - date
    - week
    - month
    convert_tz: false
    sql: ${TABLE}.date
  - measure: partner_actions_launched
    type: count_distinct
    sql: ${TABLE}."partner_actions.launched"
  - measure: partner_actions_expired
    type: count_distinct
    sql: ${TABLE}."partner_actions.expired"
  - measure: partner_actions_active
    type: count_distinct
    sql: ${TABLE}."partner_actions.id"

Contents

  • partner_actions_by_day.sql
  • partner_actions_by_day.sql
  • partner_actions_by_day.view.lkml
  • partner_actions_by_day.view.lookml