SQL Design marketplace

Public Affiliate Intent Tracking

Public Affiliate Intent Tracking model for design marketplace.

source-preserved

Blocks

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

SELECT
  base.affiliate_lead_id,
  i1.created_at AS first_intent_created_at,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE i2.created_at END) AS second_intent_created_at,
  t1.name AS first_intent_status,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.name END) AS second_intent_status,
  t1.slug AS first_intent_slug,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.slug END) AS second_intent_slug
FROM
  (
    SELECT
      affiliate_lead_id
      , MIN(id) AS min_id
      , MAX(id) AS max_id
    FROM
      public_affiliate_intent_tracking
    GROUP BY
      1
  ) AS base
  LEFT JOIN public_affiliate_intent_tracking as i1 ON i1.id = base.min_id
  LEFT JOIN public_affiliate_intent_trackingtype as t1 on (i1.intent_id = t1.id)
  LEFT JOIN public_affiliate_intent_tracking as i2 ON i2.id = base.max_id
  LEFT JOIN public_affiliate_intent_trackingtype as t2 on (i2.intent_id = t2.id)

# models/schema.yml
version: 2

models:
  - name: public_affiliate_intent_tracking
    columns:
      - name: affiliate_lead_id
        tests:
          - unique
          - not_null
      - name: first_intent_status
      - name: second_intent_status
      - name: first_intent_slug
      - name: second_intent_slug
      - name: just_browsing_opt_in_indicator
      - name: buyer_ready_to_buy_test
      - name: browsing_to_accepted_lag_seconds

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.
public_affiliate_intent_tracking.sql · 23 lines
source-preserved validation: parses
SELECT
  base.affiliate_lead_id,
  i1.created_at AS first_intent_created_at,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE i2.created_at END) AS second_intent_created_at,
  t1.name AS first_intent_status,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.name END) AS second_intent_status,
  t1.slug AS first_intent_slug,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.slug END) AS second_intent_slug
FROM
  (
    SELECT
      affiliate_lead_id
      , MIN(id) AS min_id
      , MAX(id) AS max_id
    FROM
      public_affiliate_intent_tracking
    GROUP BY
      1
  ) AS base
  LEFT JOIN public_affiliate_intent_tracking as i1 ON i1.id = base.min_id
  LEFT JOIN public_affiliate_intent_trackingtype as t1 on (i1.intent_id = t1.id)
  LEFT JOIN public_affiliate_intent_tracking as i2 ON i2.id = base.max_id
  LEFT JOIN public_affiliate_intent_trackingtype as t2 on (i2.intent_id = t2.id)
public_affiliate_intent_tracking.view.lkml · 78 lines
inferred
view: public_affiliate_intent_tracking {
  derived_table: {
    sql: SELECT
  base.affiliate_lead_id,
  i1.created_at AS first_intent_created_at,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE i2.created_at END) AS second_intent_created_at,
  t1.name AS first_intent_status,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.name END) AS second_intent_status,
  t1.slug AS first_intent_slug,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.slug END) AS second_intent_slug
FROM
  (
    SELECT
      affiliate_lead_id
      , MIN(id) AS min_id
      , MAX(id) AS max_id
    FROM
      public_affiliate_intent_tracking
    GROUP BY
      1
  ) AS base
  LEFT JOIN public_affiliate_intent_tracking as i1 ON i1.id = base.min_id
  LEFT JOIN public_affiliate_intent_trackingtype as t1 on (i1.intent_id = t1.id)
  LEFT JOIN public_affiliate_intent_tracking as i2 ON i2.id = base.max_id
  LEFT JOIN public_affiliate_intent_trackingtype as t2 on (i2.intent_id = t2.id) ;;
  }

  dimension: affiliate_lead_id {
    type: number
    primary_key: yes
    hidden: yes
    sql: ${TABLE}.affiliate_lead_id ;;
  }

  dimension: first_intent_status {
    sql: ${TABLE}.first_intent_status ;;
  }

  dimension: second_intent_status {
    sql: ${TABLE}.second_intent_status ;;
  }

  dimension: first_intent_slug {
    sql: ${TABLE}.first_intent_slug ;;
  }

  dimension: second_intent_slug {
    sql: ${TABLE}.second_intent_slug ;;
  }

  dimension: just_browsing_opt_in_indicator {
  }

  dimension: buyer_ready_to_buy_test {
  }

  dimension: browsing_to_accepted_lag_seconds {
    sql: DATEDIFF(s, CAST(${first_intent_created_time} AS TIMESTAMP), CAST(${second_intent_created_time} AS TIMESTAMP)) ;;
  }

  dimension_group: first_intent_created {
    type: time
    timeframes: [time, date]
    sql: ${TABLE}.first_intent_created_at ;;
  }

  dimension_group: second_intent_created {
    type: time
    timeframes: [time, date]
    sql: ${TABLE}.second_intent_created_at ;;
  }

  measure: count {
    type: count
    hidden: yes
    drill_fields: [detail*]
  }
}
public_affiliate_intent_tracking.view.lookml · 59 lines
source-preserved
- view: public_affiliate_intent_tracking
  derived_table:
    sql: SELECT
  base.affiliate_lead_id,
  i1.created_at AS first_intent_created_at,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE i2.created_at END) AS second_intent_created_at,
  t1.name AS first_intent_status,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.name END) AS second_intent_status,
  t1.slug AS first_intent_slug,
  (CASE WHEN i1.id = i2.id THEN NULL ELSE t2.slug END) AS second_intent_slug
FROM
  (
    SELECT
      affiliate_lead_id
      , MIN(id) AS min_id
      , MAX(id) AS max_id
    FROM
      public_affiliate_intent_tracking
    GROUP BY
      1
  ) AS base
  LEFT JOIN public_affiliate_intent_tracking as i1 ON i1.id = base.min_id
  LEFT JOIN public_affiliate_intent_trackingtype as t1 on (i1.intent_id = t1.id)
  LEFT JOIN public_affiliate_intent_tracking as i2 ON i2.id = base.max_id
  LEFT JOIN public_affiliate_intent_trackingtype as t2 on (i2.intent_id = t2.id)
  fields:
  - dimension: affiliate_lead_id
    type: number
    primary_key: true
    hidden: true
    sql: ${TABLE}.affiliate_lead_id
  - dimension: first_intent_status
    sql: ${TABLE}.first_intent_status
  - dimension: second_intent_status
    sql: ${TABLE}.second_intent_status
  - dimension: first_intent_slug
    sql: ${TABLE}.first_intent_slug
  - dimension: second_intent_slug
    sql: ${TABLE}.second_intent_slug
  - dimension: just_browsing_opt_in_indicator
  - dimension: buyer_ready_to_buy_test
  - dimension: browsing_to_accepted_lag_seconds
    sql: DATEDIFF(s, CAST(${first_intent_created_time} AS TIMESTAMP), CAST(${second_intent_created_time} AS TIMESTAMP))
  - dimension_group: first_intent_created
    type: time
    timeframes:
    - time
    - date
    sql: ${TABLE}.first_intent_created_at
  - dimension_group: second_intent_created
    type: time
    timeframes:
    - time
    - date
    sql: ${TABLE}.second_intent_created_at
  - measure: count
    type: count
    drill_fields:
    - detail*

Contents

  • public_affiliate_intent_tracking.sql
  • public_affiliate_intent_tracking.sql
  • public_affiliate_intent_tracking.view.lkml
  • public_affiliate_intent_tracking.view.lookml