SQL Gaming fantasy

Deposit Userstatus

Deposit Userstatus model for gaming fantasy.

source-preserved

Blocks

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

select deposits.UserId,reg.EmailId,reg.UtmRef
,reg.Status,reg.UtmFullString,
deposits.firstdepositdate,
deposits.lastdepositdate, deposits.totaldeposits,
reg.CreatedDate,
reg.RegFromWLSId,
deposits.Amount
from
(
SELECT
UserId,
Amount
, MIN(CreatedAt) AS firstdepositdate
, MAX(CreatedAt) AS lastdepositdate
,SUM(Amount) AS totaldeposits
, COUNT(CreatedAt) AS deposits_count
FROM {{ ref('deposits') }}
GROUP BY UserId ORDER BY CreatedAt ASC) as  deposits left join UserRegistration as reg on
deposits.UserId=reg.id

# models/schema.yml
version: 2

models:
  - name: deposit_userstatus
    columns:
      - name: userid
      - name: Email_Id
      - name: Status
      - name: Total_deposits
      - name: firstdepositamount
      - name: reg_firstdeposit_diff
      - name: firstdeposit_tier
      - name: deposits_count
      - name: reg_from_wlsid
      - name: category

Assumptions

  • Each ${view.SQL_TABLE_NAME} was mapped to {{ ref('view') }}; confirm a dbt model exists for each referenced view.
  • 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.
deposit_userstatus.sql · 19 lines
source-preserved validation: not checked
select deposits.UserId,reg.EmailId,reg.UtmRef
,reg.Status,reg.UtmFullString,
deposits.firstdepositdate,
deposits.lastdepositdate, deposits.totaldeposits,
reg.CreatedDate,
reg.RegFromWLSId,
deposits.Amount
from
(
SELECT
UserId,
Amount
, MIN(CreatedAt) AS firstdepositdate
, MAX(CreatedAt) AS lastdepositdate
,SUM(Amount) AS totaldeposits
, COUNT(CreatedAt) AS deposits_count
FROM ${deposits.SQL_TABLE_NAME}
GROUP BY UserId ORDER BY CreatedAt ASC) as  deposits left join UserRegistration as reg on
deposits.UserId=reg.id
deposit_userstatus.view.lkml · 111 lines
inferred
view: deposit_userstatus {
  derived_table: {
    sql: select deposits.UserId,reg.EmailId,reg.UtmRef
,reg.Status,reg.UtmFullString,
deposits.firstdepositdate,
deposits.lastdepositdate, deposits.totaldeposits,
reg.CreatedDate,
reg.RegFromWLSId,
deposits.Amount
from
(
SELECT
UserId,
Amount
, MIN(CreatedAt) AS firstdepositdate
, MAX(CreatedAt) AS lastdepositdate
,SUM(Amount) AS totaldeposits
, COUNT(CreatedAt) AS deposits_count
FROM ${deposits.SQL_TABLE_NAME}
GROUP BY UserId ORDER BY CreatedAt ASC) as  deposits left join UserRegistration as reg on
deposits.UserId=reg.id ;;
  }

  dimension: userid {
    type: int
    sql: ${TABLE}.UserId ;;
  }

  dimension: Email_Id {
    sql: ${TABLE}.EmailId ;;
  }

  dimension: Status {
    label: "Non Fraud User"
    type: yesno
    sql: ${TABLE}.Status ;;
  }

  dimension: Total_deposits {
    label: "Total Deposits by User"
    type: number
    value_format: "\"₹\"#.00"
    sql: ${TABLE}.totaldeposits ;;
  }

  dimension: firstdepositamount {
    type: number
    hidden: yes
    sql: ${TABLE}.Amount ;;
  }

  dimension: reg_firstdeposit_diff {
    label: "Days Difference (Reg. To First deposit)"
    type: number
    sql: DateDiff(${TABLE}.firstdepositdate,${TABLE}.Createddate) ;;
  }

  dimension: firstdeposit_tier {
    label: "First Deposit Category (Small/medium/large amount)"
    type: tier
    sql: ${firstdepositamount} ;;
  }

  dimension: deposits_count {
    label: "Users Deposit Count"
    type: number
    sql: ${TABLE}.deposits_count ;;
  }

  dimension: reg_from_wlsid {
    type: int
    sql: ${TABLE}.RegFromWLSId ;;
  }

  dimension: category {
    label: "Category (Marketing/Organic/Referral/Growth)"
    type: string
    sql: CASE WHEN (${TABLE}.UtmFullString LIKE "%utm_ref%" AND ${TABLE}.UtmRef IS NOT NULL) THEN "Referral "
WHEN (((((((${TABLE}.UtmFullString LIKE '%cricbuzz%' OR ${TABLE}.UtmFullString LIKE '%cricinfo%' OR ${TABLE}.UtmFullString LIKE '%google%' OR ${TABLE}.UtmFullString LIKE '%gclid%' OR ${TABLE}.UtmFullString LIKE '%fbads%' OR ${TABLE}.UtmFullString LIKE '%sokfb%' OR ${TABLE}.UtmFullString LIKE '%clickzoot%' OR ${TABLE}.UtmFullString LIKE '%cpa%' OR ${TABLE}.UtmFullString LIKE '%cpc%' OR ${TABLE}.UtmFullString LIKE '%cpr%' OR ${TABLE}.UtmFullString LIKE '%fix%' OR ${TABLE}.UtmFullString LIKE '%cpv%' OR ${TABLE}.UtmFullString LIKE '%cpm%') AND ${TABLE}.UtmFullString IS NOT NULL)) AND ${TABLE}.RegFromWLSId NOT IN (3,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,25,24))) AND ${TABLE}.UtmFullString NOT LIKE '%partner%') AND ${TABLE}.UtmFullString NOT LIKE '%growth%') THEN "Marketing "
WHEN
((((${TABLE}.UtmFullString NOT LIKE '%cricbuzz%' AND ${TABLE}.UtmFullString NOT LIKE '%cricinfo%' AND ${TABLE}.UtmFullString NOT LIKE '%gclid%' AND ${TABLE}.UtmFullString NOT LIKE '%fbads%' AND ${TABLE}.UtmFullString NOT LIKE '%sokfb%' AND ${TABLE}.UtmFullString NOT LIKE '%clickzoot%' AND ${TABLE}.UtmFullString NOT LIKE '%cpa%' AND ${TABLE}.UtmFullString NOT LIKE '%cpc%' AND ${TABLE}.UtmFullString NOT LIKE '%cpr%' AND ${TABLE}.UtmFullString NOT LIKE '%fix%' AND ${TABLE}.UtmFullString NOT LIKE '%cpv%' AND ${TABLE}.UtmFullString NOT LIKE '%cpm%' AND ${TABLE}.UtmFullString NOT LIKE '%utm_ref%' AND ${TABLE}.UtmFullString NOT LIKE '%mysmartprice%' AND ${TABLE}.UtmFullString NOT LIKE '%growth%' AND ${TABLE}.UtmFullString NOT LIKE '%fck%' AND ${TABLE}.UtmFullString NOT LIKE '%social%' AND ${TABLE}.UtmFullString NOT LIKE '%jamie%') AND ${TABLE}.UtmFullString NOT LIKE '%cashkaro%') OR ${TABLE}.UtmFullString IS NULL) AND ${TABLE}.RegFromWLSId NOT IN (3,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,25,24)) THEN "Organic " ELSE "Growth " END ;;
  }

  dimension_group: first_deposit_date {
    label: "First Deposit Date"
    type: time
    timeframes: [date, week, month, year, time]
    datatype: datetime
    sql: ${TABLE}.firstdepositdate ;;
  }

  dimension_group: last_deposit_date {
    label: "Last Deposit Date"
    type: time
    timeframes: [date, week, month, year, time]
    datatype: datetime
    sql: ${TABLE}.lastdepositdate ;;
  }

  dimension_group: date_of_registration {
    type: time
    timeframes: [time, date, week, year, month]
    sql: ${TABLE}.Createddate ;;
  }

  measure: Paid_Users_Count {
    label: "Total Depositors"
    type: count_distinct
    sql: ${TABLE}.UserId ;;
  }
}
deposit_userstatus.view.lookml · 95 lines
source-preserved
- view: deposit_userstatus
  derived_table:
    sql: select deposits.UserId,reg.EmailId,reg.UtmRef
,reg.Status,reg.UtmFullString,
deposits.firstdepositdate,
deposits.lastdepositdate, deposits.totaldeposits,
reg.CreatedDate,
reg.RegFromWLSId,
deposits.Amount
from
(
SELECT
UserId,
Amount
, MIN(CreatedAt) AS firstdepositdate
, MAX(CreatedAt) AS lastdepositdate
,SUM(Amount) AS totaldeposits
, COUNT(CreatedAt) AS deposits_count
FROM ${deposits.SQL_TABLE_NAME}
GROUP BY UserId ORDER BY CreatedAt ASC) as  deposits left join UserRegistration as reg on
deposits.UserId=reg.id
  fields:
  - dimension: userid
    type: int
    sql: ${TABLE}.UserId
  - dimension: Email_Id
    sql: ${TABLE}.EmailId
  - dimension: Status
    type: yesno
    label: Non Fraud User
    sql: ${TABLE}.Status
  - dimension: Total_deposits
    type: number
    label: Total Deposits by User
    value_format: '"₹"#.00'
    sql: ${TABLE}.totaldeposits
  - dimension: firstdepositamount
    type: number
    hidden: true
    sql: ${TABLE}.Amount
  - dimension: reg_firstdeposit_diff
    type: number
    label: Days Difference (Reg. To First deposit)
    sql: DateDiff(${TABLE}.firstdepositdate,${TABLE}.Createddate)
  - dimension: firstdeposit_tier
    type: tier
    label: First Deposit Category (Small/medium/large amount)
    sql: ${firstdepositamount}
  - dimension: deposits_count
    type: number
    label: Users Deposit Count
    sql: ${TABLE}.deposits_count
  - dimension: reg_from_wlsid
    type: int
    sql: ${TABLE}.RegFromWLSId
  - dimension: category
    type: string
    label: Category (Marketing/Organic/Referral/Growth)
    sql: CASE WHEN (${TABLE}.UtmFullString LIKE "%utm_ref%" AND ${TABLE}.UtmRef IS NOT NULL) THEN "Referral "
WHEN (((((((${TABLE}.UtmFullString LIKE '%cricbuzz%' OR ${TABLE}.UtmFullString LIKE '%cricinfo%' OR ${TABLE}.UtmFullString LIKE '%google%' OR ${TABLE}.UtmFullString LIKE '%gclid%' OR ${TABLE}.UtmFullString LIKE '%fbads%' OR ${TABLE}.UtmFullString LIKE '%sokfb%' OR ${TABLE}.UtmFullString LIKE '%clickzoot%' OR ${TABLE}.UtmFullString LIKE '%cpa%' OR ${TABLE}.UtmFullString LIKE '%cpc%' OR ${TABLE}.UtmFullString LIKE '%cpr%' OR ${TABLE}.UtmFullString LIKE '%fix%' OR ${TABLE}.UtmFullString LIKE '%cpv%' OR ${TABLE}.UtmFullString LIKE '%cpm%') AND ${TABLE}.UtmFullString IS NOT NULL)) AND ${TABLE}.RegFromWLSId NOT IN (3,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,25,24))) AND ${TABLE}.UtmFullString NOT LIKE '%partner%') AND ${TABLE}.UtmFullString NOT LIKE '%growth%') THEN "Marketing "
WHEN
((((${TABLE}.UtmFullString NOT LIKE '%cricbuzz%' AND ${TABLE}.UtmFullString NOT LIKE '%cricinfo%' AND ${TABLE}.UtmFullString NOT LIKE '%gclid%' AND ${TABLE}.UtmFullString NOT LIKE '%fbads%' AND ${TABLE}.UtmFullString NOT LIKE '%sokfb%' AND ${TABLE}.UtmFullString NOT LIKE '%clickzoot%' AND ${TABLE}.UtmFullString NOT LIKE '%cpa%' AND ${TABLE}.UtmFullString NOT LIKE '%cpc%' AND ${TABLE}.UtmFullString NOT LIKE '%cpr%' AND ${TABLE}.UtmFullString NOT LIKE '%fix%' AND ${TABLE}.UtmFullString NOT LIKE '%cpv%' AND ${TABLE}.UtmFullString NOT LIKE '%cpm%' AND ${TABLE}.UtmFullString NOT LIKE '%utm_ref%' AND ${TABLE}.UtmFullString NOT LIKE '%mysmartprice%' AND ${TABLE}.UtmFullString NOT LIKE '%growth%' AND ${TABLE}.UtmFullString NOT LIKE '%fck%' AND ${TABLE}.UtmFullString NOT LIKE '%social%' AND ${TABLE}.UtmFullString NOT LIKE '%jamie%') AND ${TABLE}.UtmFullString NOT LIKE '%cashkaro%') OR ${TABLE}.UtmFullString IS NULL) AND ${TABLE}.RegFromWLSId NOT IN (3,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,25,24)) THEN "Organic " ELSE "Growth " END
  - dimension_group: first_deposit_date
    type: time
    timeframes:
    - date
    - week
    - month
    - year
    - time
    datatype: datetime
    sql: ${TABLE}.firstdepositdate
  - dimension_group: last_deposit_date
    type: time
    timeframes:
    - date
    - week
    - month
    - year
    - time
    datatype: datetime
    sql: ${TABLE}.lastdepositdate
  - dimension_group: date_of_registration
    type: time
    timeframes:
    - time
    - date
    - week
    - year
    - month
    sql: ${TABLE}.Createddate
  - measure: Paid_Users_Count
    type: count_distinct
    label: Total Depositors
    sql: ${TABLE}.UserId

Contents

  • deposit_userstatus.sql
  • deposit_userstatus.sql
  • deposit_userstatus.view.lkml
  • deposit_userstatus.view.lookml