SQL Gaming fantasy

Userstatus

Userstatus model for gaming fantasy.

source-preserved

Blocks

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

select entryfees.UserId,reg.EmailId,reg.MobileNum,reg.UtmRef,
reg.Gender,reg.Status,reg.UtmFullString,
reg.updated_from, entryfees.firstleaguedate,
entryfees.lastactivedate, entryfees.TotalEntryFee,
entryfees.LeaguesPlayed,reg.CreatedDate,
reg.IsCommEmailVerified,
reg.IsMobileVerified,
reg.RegFromWLSId,
reg.CurSiteVersion,
reg.City,
entryfees.Amount
from
(SELECT
UserId
,Amount
,MIN(CreatedAt) AS firstleaguedate
,MAX(CreatedAt) As lastactivedate
,SUM(Amount) AS TotalEntryFee
,COUNT(CreatedAt) AS LeaguesPlayed
 FROM {{ ref('entry_fees') }}
 GROUP BY UserId ORDER BY CreatedAt ASC) as entryfees left join UserRegistration as reg on
 entryfees.UserId=reg.id

# models/schema.yml
version: 2

models:
  - name: userstatus
    columns:
      - name: userid
      - name: Email_Id
      - name: Mobile
      - name: City
      - name: Status
      - name: Total_EntryFees_Per_User
      - name: Leagues_Played
      - name: firstfees
      - name: days_since_last_activity
      - name: reg_firstpaid_diff
      - name: gender
      - name: is_comm_email_verified
      - name: is_mobile_verified
      - name: reg_from_wlsid
      - name: state_id
      - name: updated_from
      - name: site_version
      - name: utm_fullstring
      - name: utmref
      - name: Device
      - name: Referral_Categories
      - 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.
userstatus.sql · 22 lines
source-preserved validation: not checked
select entryfees.UserId,reg.EmailId,reg.MobileNum,reg.UtmRef,
reg.Gender,reg.Status,reg.UtmFullString,
reg.updated_from, entryfees.firstleaguedate,
entryfees.lastactivedate, entryfees.TotalEntryFee,
entryfees.LeaguesPlayed,reg.CreatedDate,
reg.IsCommEmailVerified,
reg.IsMobileVerified,
reg.RegFromWLSId,
reg.CurSiteVersion,
reg.City,
entryfees.Amount
from
(SELECT
UserId
,Amount
,MIN(CreatedAt) AS firstleaguedate
,MAX(CreatedAt) As lastactivedate
,SUM(Amount) AS TotalEntryFee
,COUNT(CreatedAt) AS LeaguesPlayed
 FROM ${entry_fees.SQL_TABLE_NAME}
 GROUP BY UserId ORDER BY CreatedAt ASC) as entryfees left join UserRegistration as reg on
 entryfees.UserId=reg.id
userstatus.view.lkml · 180 lines
inferred
view: userstatus {
  derived_table: {
    sql: select entryfees.UserId,reg.EmailId,reg.MobileNum,reg.UtmRef,
reg.Gender,reg.Status,reg.UtmFullString,
reg.updated_from, entryfees.firstleaguedate,
entryfees.lastactivedate, entryfees.TotalEntryFee,
entryfees.LeaguesPlayed,reg.CreatedDate,
reg.IsCommEmailVerified,
reg.IsMobileVerified,
reg.RegFromWLSId,
reg.CurSiteVersion,
reg.City,
entryfees.Amount
from
(SELECT
UserId
,Amount
,MIN(CreatedAt) AS firstleaguedate
,MAX(CreatedAt) As lastactivedate
,SUM(Amount) AS TotalEntryFee
,COUNT(CreatedAt) AS LeaguesPlayed
 FROM ${entry_fees.SQL_TABLE_NAME}
 GROUP BY UserId ORDER BY CreatedAt ASC) as entryfees left join UserRegistration as reg on
 entryfees.UserId=reg.id ;;
  }

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

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

  dimension: Mobile {
    hidden: yes
    sql: ${TABLE}.MobileNum ;;
  }

  dimension: City {
    hidden: yes
    sql: ${TABLE}.City ;;
  }

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

  dimension: Total_EntryFees_Per_User {
    type: number
    value_format: "\"₹\"#.00"
    sql: ${TABLE}.TotalEntryFee ;;
  }

  dimension: Leagues_Played {
    type: number
    sql: ${TABLE}.LeaguesPlayed ;;
  }

  dimension: firstfees {
    label: "First Entry Fees"
    type: number
    sql: ${TABLE}.Amount ;;
  }

  dimension: days_since_last_activity {
    type: number
    sql: DateDiff(Now(),${TABLE}.lastactivedate) ;;
  }

  dimension: reg_firstpaid_diff {
    label: "Days Difference (Reg. To FirstPaid)"
    type: number
    sql: DateDiff(${TABLE}.firstleaguedate,${TABLE}.Createddate) ;;
  }

  dimension: gender {
    sql: ${TABLE}.Gender ;;
  }

  dimension: is_comm_email_verified {
    type: yesno
    sql: ${TABLE}.IsCommEmailVerified ;;
  }

  dimension: is_mobile_verified {
    type: yesno
    sql: ${TABLE}.IsMobileVerified ;;
  }

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

  dimension: state_id {
    type: int
    sql: ${TABLE}.StateId ;;
  }

  dimension: updated_from {
    type: string
    hidden: yes
    sql: ${TABLE}.updated_from ;;
  }

  dimension: site_version {
    type: string
    sql: ${TABLE}.CurSiteVersion ;;
  }

  dimension: utm_fullstring {
    sql: ${TABLE}.UtmFullString ;;
  }

  dimension: utmref {
    type: number
    sql: ${TABLE}.UtmRef ;;
  }

  dimension: Device {
    type: string
    sql: CASE WHEN ${TABLE}.Updated_From In ("D","DFC","DGC","DYC","Direct","F","Facebook Connect","Google Connect") THEN "Desktop " ELSE "Mobile " END ;;
  }

  dimension: Referral_Categories {
    type: string
    sql: Case When  ${TABLE}.UtmFullString LIKE '%whatsapp%' Then "WhatsApp" When  ${TABLE}.UtmFullString LIKE '%facebook%' Then "FaceBook" When  ${TABLE}.UtmFullString LIKE '%email%' then  "Email" When ${TABLE}.UtmFullString LIKE '%link%' then "Link" When ${TABLE}.UtmFullString LIKE "%utm_ref%" Then "FaceBook Mobile" Else "None"  END ;;
  }

  dimension: category {
    type: string
    sql: CASE WHEN (${TABLE}.UtmFullString LIKE "%utm_ref%" AND ${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_league_join_date {
    type: time
    timeframes: [date, week, month, year, time]
    datatype: datetime
    sql: ${TABLE}.firstleaguedate ;;
  }

  dimension_group: last_active_date {
    type: time
    timeframes: [date, week, month, year, time]
    datatype: datetime
    sql: ${TABLE}.lastactivedate ;;
  }

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

  measure: referer_count {
    type: count_distinct
    filters: [utmref: "NOT NULL"]
    sql: ${utmref} ;;
  }

  measure: Paid_Users_Count {
    label: "Total Paid Users"
    type: count_distinct
    drill_fields: [userid, Email_Id, Mobile, City, Total_EntryFees_Per_User, first_league_join_date]
    sql: ${TABLE}.UserId ;;
  }

  measure: Total_Entry_Fees {
    label: "Total Entry Fees"
    type: sum
    sql: ${TABLE}.TotalEntryFee ;;
  }
}
userstatus.view.lookml · 145 lines
source-preserved
- view: userstatus
  derived_table:
    sql: select entryfees.UserId,reg.EmailId,reg.MobileNum,reg.UtmRef,
reg.Gender,reg.Status,reg.UtmFullString,
reg.updated_from, entryfees.firstleaguedate,
entryfees.lastactivedate, entryfees.TotalEntryFee,
entryfees.LeaguesPlayed,reg.CreatedDate,
reg.IsCommEmailVerified,
reg.IsMobileVerified,
reg.RegFromWLSId,
reg.CurSiteVersion,
reg.City,
entryfees.Amount
from
(SELECT
UserId
,Amount
,MIN(CreatedAt) AS firstleaguedate
,MAX(CreatedAt) As lastactivedate
,SUM(Amount) AS TotalEntryFee
,COUNT(CreatedAt) AS LeaguesPlayed
 FROM ${entry_fees.SQL_TABLE_NAME}
 GROUP BY UserId ORDER BY CreatedAt ASC) as entryfees left join UserRegistration as reg on
 entryfees.UserId=reg.id
  fields:
  - dimension: userid
    type: int
    sql: ${TABLE}.UserId
  - dimension: Email_Id
    sql: ${TABLE}.EmailId
  - dimension: Mobile
    hidden: true
    sql: ${TABLE}.MobileNum
  - dimension: City
    hidden: true
    sql: ${TABLE}.City
  - dimension: Status
    type: yesno
    label: Non Fraud User
    sql: ${TABLE}.Status
  - dimension: Total_EntryFees_Per_User
    type: number
    value_format: '"₹"#.00'
    sql: ${TABLE}.TotalEntryFee
  - dimension: Leagues_Played
    type: number
    sql: ${TABLE}.LeaguesPlayed
  - dimension: firstfees
    type: number
    label: First Entry Fees
    sql: ${TABLE}.Amount
  - dimension: days_since_last_activity
    type: number
    sql: DateDiff(Now(),${TABLE}.lastactivedate)
  - dimension: reg_firstpaid_diff
    type: number
    label: Days Difference (Reg. To FirstPaid)
    sql: DateDiff(${TABLE}.firstleaguedate,${TABLE}.Createddate)
  - dimension: gender
    sql: ${TABLE}.Gender
  - dimension: is_comm_email_verified
    type: yesno
    sql: ${TABLE}.IsCommEmailVerified
  - dimension: is_mobile_verified
    type: yesno
    sql: ${TABLE}.IsMobileVerified
  - dimension: reg_from_wlsid
    type: int
    sql: ${TABLE}.RegFromWLSId
  - dimension: state_id
    type: int
    sql: ${TABLE}.StateId
  - dimension: updated_from
    type: string
    hidden: true
    sql: ${TABLE}.updated_from
  - dimension: site_version
    type: string
    sql: ${TABLE}.CurSiteVersion
  - dimension: utm_fullstring
    sql: ${TABLE}.UtmFullString
  - dimension: utmref
    type: number
    sql: ${TABLE}.UtmRef
  - dimension: Device
    type: string
    sql: CASE WHEN ${TABLE}.Updated_From In ("D","DFC","DGC","DYC","Direct","F","Facebook Connect","Google Connect") THEN "Desktop " ELSE "Mobile " END
  - dimension: Referral_Categories
    type: string
    sql: Case When  ${TABLE}.UtmFullString LIKE '%whatsapp%' Then "WhatsApp" When  ${TABLE}.UtmFullString LIKE '%facebook%' Then "FaceBook" When  ${TABLE}.UtmFullString LIKE '%email%' then  "Email" When ${TABLE}.UtmFullString LIKE '%link%' then "Link" When ${TABLE}.UtmFullString LIKE "%utm_ref%" Then "FaceBook Mobile" Else "None"  END
  - dimension: category
    type: string
    sql: CASE WHEN (${TABLE}.UtmFullString LIKE "%utm_ref%" AND ${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_league_join_date
    type: time
    timeframes:
    - date
    - week
    - month
    - year
    - time
    datatype: datetime
    sql: ${TABLE}.firstleaguedate
  - dimension_group: last_active_date
    type: time
    timeframes:
    - date
    - week
    - month
    - year
    - time
    datatype: datetime
    sql: ${TABLE}.lastactivedate
  - dimension_group: date_of_registration
    type: time
    timeframes:
    - time
    - date
    - week
    - year
    - month
    sql: ${TABLE}.Createddate
  - measure: referer_count
    type: count_distinct
    filters:
    - utmref: NOT NULL
    sql: ${utmref}
  - measure: Paid_Users_Count
    type: count_distinct
    label: Total Paid Users
    drill_fields:
    - userid
    - Email_Id
    - Mobile
    - City
    - Total_EntryFees_Per_User
    - first_league_join_date
    sql: ${TABLE}.UserId
  - measure: Total_Entry_Fees
    type: sum
    label: Total Entry Fees
    sql: ${TABLE}.TotalEntryFee

Contents

  • userstatus.sql
  • userstatus.sql
  • userstatus.view.lkml
  • userstatus.view.lookml