SQL
Gaming fantasy
Winnings
Winnings model for gaming fantasy.
source-preserved
Blocks
winnings.sql · 55 lines
inferred
-- models/winnings.sql
{{ config(materialized='view') }}
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions AS transactions
WHERE TransType = 3
UNION ALL
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions_Archive AS transactions_archive
WHERE TransType = 3
# models/schema.yml
version: 2
models:
- name: winnings
columns:
- name: id
tests:
- unique
- not_null
- name: user_id
- name: transtype
- name: wlsid
- name: RoundId
- name: inr2usd
- name: country
- name: Category
- name: New_Repeat_winners_monthly
- name: New_Repeat_winners_weekly
- name: New_Repeat_winners_daily
- name: Winnings_Per_User
- name: Is_Organic
- name: Is_Growth
- name: Is_Marketing
- name: Active_Flag
- name: Device
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.
winnings.sql · 25 lines
source-preserved
validation: parses
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions AS transactions
WHERE TransType = 3
UNION ALL
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions_Archive AS transactions_archive
WHERE TransType = 3
winnings.view.lkml · 173 lines
inferred
view: winnings {
derived_table: {
sql: SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions AS transactions
WHERE TransType = 3
UNION ALL
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions_Archive AS transactions_archive
WHERE TransType = 3 ;;
}
dimension: id {
type: int
primary_key: yes
sql: ${TABLE}.id ;;
}
dimension: user_id {
type: int
sql: ${TABLE}.UserId ;;
}
dimension: transtype {
type: int
sql: ${TABLE}.TransType ;;
}
dimension: wlsid {
type: number
hidden: yes
sql: ${TABLE}.WLSId ;;
}
dimension: RoundId {
type: int
sql: ${TABLE}.RoundId ;;
}
dimension: inr2usd {
type: number
hidden: yes
sql: case when ${country}="India" THEN ${DailyCurrencyRate.conversion} else 1 END ;;
}
dimension: country {
type: string
sql: Case when ${TABLE}.WLSId in (2,6,9,12,28,29) Then "US" else "India" End ;;
}
dimension: Category {
type: string
sql: ${userstatus.category} ;;
}
dimension: New_Repeat_winners_monthly {
type: string
sql: case WHEN ${created_at_month} = ${userstatus.first_league_join_date_month} Then "New " Else "Repeat " End ;;
}
dimension: New_Repeat_winners_weekly {
type: string
sql: case WHEN ${created_at_week} = ${userstatus.first_league_join_date_week} Then "New " Else "Repeat " End ;;
}
dimension: New_Repeat_winners_daily {
type: string
sql: case WHEN ${created_at_date} = ${userstatus.first_league_join_date_date} Then "New " Else "Repeat " End ;;
}
dimension: Winnings_Per_User {
type: number
value_format: "$#,##0.00"
drill_fields: [detail*]
sql: ${winnings_amount}/${winners_count} ;;
}
dimension: Is_Organic {
type: yesno
hidden: yes
sql: ${userstatus.category}="ORGANIC" ;;
}
dimension: Is_Growth {
type: yesno
hidden: yes
sql: ${userstatus.category}="GROWTH" ;;
}
dimension: Is_Marketing {
type: yesno
hidden: yes
sql: ${userstatus.category}="MARKETING" ;;
}
dimension: Active_Flag {
type: string
sql: CASE When ${userstatus.Status}= 1 THEN "Active " ELSE "Deactivated " ;;
}
dimension: Device {
type: string
sql: ${userstatus.Device} ;;
}
dimension_group: created_at {
type: time
timeframes: [date, week, month, year, time]
datatype: datetime
sql: ${TABLE}.CreatedAt ;;
}
dimension_group: created_date_unix {
label: "League Join Date"
type: time
timeframes: [date, raw]
sql: ${TABLE}.created_date_unix ;;
}
measure: winnings_amount {
type: sum
value_format: "$#,##0.00"
drill_fields: [detail*]
sql: ${TABLE}.Amount ;;
}
measure: winners_count {
type: count_distinct
drill_fields: [detail*]
sql: ${user_id} ;;
}
measure: Organic_User_count {
type: count_distinct
filters: [userstatus.category: "Organic"]
sql: ${user_id} ;;
}
measure: Referral_User_count {
type: count_distinct
filters: [userstatus.category: "Referral"]
sql: ${user_id} ;;
}
measure: Growth_User_count {
type: count_distinct
filters: [userstatus.category: "Growth"]
sql: ${user_id} ;;
}
measure: Marketing_User_count {
type: count_distinct
filters: [userstatus.category: "Marketing"]
sql: ${user_id} ;;
}
}
winnings.view.lookml · 135 lines
source-preserved
- view: winnings
derived_table:
sql: SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions AS transactions
WHERE TransType = 3
UNION ALL
SELECT
id
,UserId
,Amount
,CreatedAt
,UNIX_TIMESTAMP(DATE(CreatedAt)) as created_date_unix
,WLSId
,RoundId
,TransType
FROM Transactions_Archive AS transactions_archive
WHERE TransType = 3
fields:
- dimension: id
type: int
primary_key: true
sql: ${TABLE}.id
- dimension: user_id
type: int
sql: ${TABLE}.UserId
- dimension: transtype
type: int
sql: ${TABLE}.TransType
- dimension: wlsid
type: number
hidden: true
sql: ${TABLE}.WLSId
- dimension: RoundId
type: int
sql: ${TABLE}.RoundId
- dimension: inr2usd
type: number
hidden: true
sql: case when ${country}="India" THEN ${DailyCurrencyRate.conversion} else 1 END
- dimension: country
type: string
sql: Case when ${TABLE}.WLSId in (2,6,9,12,28,29) Then "US" else "India" End
- dimension: Category
type: string
sql: ${userstatus.category}
- dimension: New_Repeat_winners_monthly
type: string
sql: case WHEN ${created_at_month} = ${userstatus.first_league_join_date_month} Then "New " Else "Repeat " End
- dimension: New_Repeat_winners_weekly
type: string
sql: case WHEN ${created_at_week} = ${userstatus.first_league_join_date_week} Then "New " Else "Repeat " End
- dimension: New_Repeat_winners_daily
type: string
sql: case WHEN ${created_at_date} = ${userstatus.first_league_join_date_date} Then "New " Else "Repeat " End
- dimension: Winnings_Per_User
type: number
value_format: '$#,##0.00'
drill_fields:
- detail*
sql: ${winnings_amount}/${winners_count}
- dimension: Is_Organic
type: yesno
hidden: true
sql: ${userstatus.category}="ORGANIC"
- dimension: Is_Growth
type: yesno
hidden: true
sql: ${userstatus.category}="GROWTH"
- dimension: Is_Marketing
type: yesno
hidden: true
sql: ${userstatus.category}="MARKETING"
- dimension: Active_Flag
type: string
sql: CASE When ${userstatus.Status}= 1 THEN "Active " ELSE "Deactivated "
- dimension: Device
type: string
sql: ${userstatus.Device}
- dimension_group: created_at
type: time
timeframes:
- date
- week
- month
- year
- time
datatype: datetime
sql: ${TABLE}.CreatedAt
- dimension_group: created_date_unix
type: time
timeframes:
- date
- raw
sql: ${TABLE}.created_date_unix
- measure: winnings_amount
type: sum
value_format: '$#,##0.00'
drill_fields:
- detail*
sql: ${TABLE}.Amount
- measure: winners_count
type: count_distinct
drill_fields:
- detail*
sql: ${user_id}
- measure: Organic_User_count
type: count_distinct
filters:
- userstatus.category: Organic
sql: ${user_id}
- measure: Referral_User_count
type: count_distinct
filters:
- userstatus.category: Referral
sql: ${user_id}
- measure: Growth_User_count
type: count_distinct
filters:
- userstatus.category: Growth
sql: ${user_id}
- measure: Marketing_User_count
type: count_distinct
filters:
- userstatus.category: Marketing
sql: ${user_id}
Contents
- winnings.sql
- winnings.sql
- winnings.view.lkml
- winnings.view.lookml