LookML Service marketplace

Work Items Detail

Work Items Detail model for service marketplace.

source-preserved

Blocks

work_items_detail.view.lkml · 493 lines
inferred
view: work_items_detail {
  sql_table_name: tasks ;;

  dimension: has_offers {
    type: yesno
    sql: ${number_of_offers} > 0 ;;
  }

  dimension: number_of_offers {
    type: number
    sql: (SELECT COUNT(*)
FROM offers o
WHERE o.task_id=${TABLE}.id) ;;
  }

  dimension: average_number_of_offers {
    type: avg
    sql: ${number_of_offers} ;;
  }

  dimension: category_id {
    type: int
  }

  dimension: take_rate {
    type: number
    sql: ${service_fee_cents}/${charge_price_cents} ;;
  }

  dimension: service_fee_cents {
    type: number
    sql: CASE
  WHEN ${TABLE}.state IN ('closed', 'married', 'divorced')
  THEN ${charge_price_cents} - ${task_fee_cents}
  ELSE 0
END ;;
  }

  dimension: potential_service_fee_cents {
    type: number
    sql: ${charge_price_cents} - ${task_fee_cents} ;;
  }

  dimension: charge_price_cents {
    type: number
    sql: (${TABLE}.charge_price * 100) ;;
  }

  dimension: task_fee_cents {
    type: number
    sql: (${TABLE}.runner_fee * 100) ;;
  }

  dimension: close_latency {
    type: int
    sql: DATEDIFF(${closed_state_date},${opened_state_date}) ;;
  }

  dimension: close_latency_tier {
    type: tier
    sql: ${close_latency} ;;
  }

  dimension: continuing_parent_id {
    type: int
  }

  dimension: credits_free_cents {
    type: number
    sql: (${TABLE}.credits_free * 100) ;;
  }

  dimension: description {
  }

  dimension: discounted_promotion_id {
    type: int
  }

  dimension: geography_id {
    type: int
  }

  dimension: id {
    type: int
  }

  dimension: opened_state_at {
  }

  dimension: admin_url {
    sql: ${id} ;;
  }

  dimension: marketplace {
  }

  dimension: assisted_groomed {
    type: yesno
  }

  dimension: assisted_reviewed {
    type: yesno
  }

  dimension: metro_id {
    type: int
  }

  dimension: title {
    sql: ${TABLE}.name ;;
  }

  dimension: number_tasks_required {
    type: int
    sql: ${TABLE}.number_runners_required ;;
  }

  dimension: number_tasks_to_fill {
    type: int
    sql: ${TABLE}.number_runners_to_fill ;;
  }

  dimension: parent_task_id {
    type: int
  }

  dimension: posted_at {
  }

  dimension: posted_month_number {
    type: number
    sql: ${posted_month_num} ;;
  }

  dimension: price_units {
  }

  dimension: promotion_id {
    type: int
  }

  dimension: review_runners {
    type: yesno
  }

  dimension: tasker_id {
    type: int
    sql: ${TABLE}.runner_id ;;
  }

  dimension: state {
  }

  dimension: general_state {
  }

  dimension: state_derived {
  }

  dimension: suppress_level {
    type: int
  }

  dimension: task_type_id {
    type: int
  }

  dimension: tip_in_cents {
    type: number
    sql: ${TABLE}.tip_in_cents ;;
  }

  dimension: earnings_cents {
    type: number
    sql: ${tip_in_cents}+${task_fee_cents} ;;
  }

  dimension: poster_price_cents {
    type: number
    sql: ${service_fee_cents}+${earnings_cents} ;;
  }

  dimension: town_id {
    type: int
  }

  dimension: user_id {
    type: int
  }

  dimension: assisted_marketplace_processed_at {
    type: time
    sql: (select processed_at from adminProd_review_items where remote_type = 'task' and score_type = 'assisted-marketplace' and remote_id = ${TABLE}.id) ;;
  }

  dimension: user_closed_before_count {
    type: int
  }

  dimension: fttp_tier {
    type: tier
    sql: ${user_closed_before_count} ;;
  }

  dimension: sequence_number {
    type: int
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.created_at < ${TABLE}.created_at
  AND t.user_id=${TABLE}.user_id) + 1 ;;
  }

  dimension: posted_sequence_number {
    type: int
    sql: CASE
  WHEN ${TABLE}.state <> 'started'
  THEN
    (SELECT COUNT(*)
    FROM tasks t
    WHERE t.created_at < ${TABLE}.created_at
      AND t.user_id=${TABLE}.user_id
      AND t.state <> 'started') + 1
  ELSE NULL
END ;;
  }

  dimension: repeat_customer {
    type: yesno
    sql: ${posted_sequence_number} > 1 ;;
  }

  dimension: sequence_number_tier {
    type: tier
    sql: ${sequence_number} ;;
  }

  dimension: completed_sequence_number {
    type: int
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.created_at < ${TABLE}.created_at
  AND t.user_id=${TABLE}.user_id
  AND t.state IN ('closed', 'completed', 'married')) + 1 ;;
  }

  dimension: completed_sequence_number_tier {
    type: tier
    sql: ${completed_sequence_number} ;;
  }

  dimension: recurring_parent {
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.continuing_parent_id=${TABLE}.id) > 0 ;;
  }

  dimension: multiple_parent {
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.parent_task_id=${TABLE}.id) > 0 ;;
  }

  dimension: parent_job {
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
LEFT JOIN badge_sets bs
ON bs.id=t.badge_set_id
WHERE t.id = ${TABLE}.continuing_parent_id
  AND bs.id = t.badge_set_id
  AND bs.badge_jobs_enabled = true) > 0 ;;
  }

  dimension: work_item_type {
  }

  dimension_group: assigned_state {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.assigned_state_at ;;
  }

  dimension_group: began_state {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.began_state_at ;;
  }

  dimension_group: cancel_request {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.cancel_request_at ;;
  }

  dimension_group: closed_state {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.closed_state_at ;;
  }

  dimension_group: complete_by {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.complete_by_time ;;
  }

  dimension_group: completed_state {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: ${TABLE}.completed_state_at ;;
  }

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

  dimension_group: opened_state {
    type: time
    timeframes: [yesno, time, date, week, month]
    sql: COALESCE(${TABLE}.opened_state_at, ${TABLE}.assigned_state_at, ${TABLE}.completed_state_at) ;;
  }

  dimension_group: posted {
    type: time
    timeframes: [time, date, week, month, month_num, year]
    sql: ${TABLE}.posted_at ;;
  }

  measure: has_bids_count {
    type: count_distinct
    filters: [opened_state_at: "-NULL"]
    filters: [number_of_offers: "1 to"]
    sql: ${id} ;;
  }

  measure: has_bids_rate {
    type: number
    sql: 100.0 * ${has_bids_count}/${opened_count} ;;
  }

  measure: opened_count {
    type: count_distinct
    filters: [opened_state_at: "-NULL"]
    sql: ${id} ;;
  }

  measure: organic.count {
    type: count_distinct
    filters: [work_item_type: "organic"]
    filters: [posted_at: "-NULL"]
    sql: ${id} ;;
  }

  measure: job.count {
    type: count_distinct
    filters: [work_item_type: "job"]
    filters: [posted_at: "-NULL"]
    sql: ${id} ;;
  }

  measure: multiple.count {
    type: count_distinct
    filters: [work_item_type: "multiple"]
    filters: [posted_at: "-NULL"]
    sql: ${id} ;;
  }

  measure: recurring.count {
    type: count_distinct
    filters: [work_item_type: "recurring"]
    filters: [posted_at: "-NULL"]
    sql: ${id} ;;
  }

  measure: organic.closed_count {
    type: count_distinct
    filters: [work_item_type: "organic"]
    filters: [state: "married, divorced, closed, filled"]
    sql: ${id} ;;
  }

  measure: job.closed_count {
    type: count_distinct
    filters: [work_item_type: "job"]
    filters: [state: "married, divorced, closed"]
    sql: ${id} ;;
  }

  measure: multiple.closed_count {
    type: count_distinct
    filters: [work_item_type: "multiple"]
    filters: [state: "filled"]
    sql: ${id} ;;
  }

  measure: recurring.closed_count {
    type: count_distinct
    filters: [work_item_type: "recurring"]
    filters: [state: "married, divorced"]
    sql: ${id} ;;
  }

  measure: organic.close_rate {
    type: number
    sql: CASE
  WHEN ${organic.count} = 0
  THEN NULL
  ELSE 100.0 * ${organic.closed_count}/${organic.count}
END ;;
  }

  measure: job.close_rate {
    type: number
    sql: CASE
  WHEN ${job.count} = 0
  THEN NULL
  ELSE 100.0 * ${job.closed_count}/${job.count}
END ;;
  }

  measure: multiple.close_rate {
    type: number
    sql: CASE
  WHEN ${multiple.count} = 0
  THEN NULL
  ELSE 100.0 * ${multiple.closed_count}/${multiple.count}
END ;;
  }

  measure: recurring.close_rate {
    type: number
    sql: CASE
  WHEN ${recurring.count} = 0
  THEN NULL
  ELSE 100.0 * ${recurring.closed_count}/${recurring.count}
END ;;
  }

  measure: reimbursement_cents {
    type: number
    sql: (select (SUM(reimbursement_in_cents)) from offers where offers.task_id = work_items.local_id) ;;
  }

  measure: average_service_fee_cents {
    type: avg
    sql: ${service_fee_cents} ;;
  }

  measure: average_tip_cents {
    type: avg
    sql: ${tip_in_cents} ;;
  }

  measure: total_tip_cents {
    type: sum
    sql: ${tip_in_cents} ;;
  }

  measure: task_earnings_cents_per_task {
    type: number
    sql: ${earnings_cents}/${work_items.count} ;;
  }

  measure: poster_price_cents_per_task {
    type: number
    sql: ${poster_price_cents}/${work_items.count} ;;
  }

  measure: total_service_fee_cents {
    type: sum
    sql: ${service_fee_cents} ;;
  }

  measure: total_potential_service_fee_cents {
    type: sum
    sql: ${potential_service_fee_cents} ;;
  }

  measure: average_potential_service_fee_cents {
    type: avg
    sql: ${potential_service_fee_cents} ;;
  }

  measure: average_take_rate {
    type: avg
    sql: ${take_rate} ;;
  }
}
work_items_detail.view.lookml · 368 lines
source-preserved
- view: work_items_detail
  sql_table_name: tasks
  fields:
  - dimension: has_offers
    type: yesno
    sql: ${number_of_offers} > 0
  - dimension: number_of_offers
    type: number
    sql: (SELECT COUNT(*)
FROM offers o
WHERE o.task_id=${TABLE}.id)
  - dimension: average_number_of_offers
    type: avg
    sql: ${number_of_offers}
  - dimension: category_id
    type: int
  - dimension: take_rate
    type: number
    sql: ${service_fee_cents}/${charge_price_cents}
  - dimension: service_fee_cents
    type: number
    sql: CASE
  WHEN ${TABLE}.state IN ('closed', 'married', 'divorced')
  THEN ${charge_price_cents} - ${task_fee_cents}
  ELSE 0
END
  - dimension: potential_service_fee_cents
    type: number
    sql: ${charge_price_cents} - ${task_fee_cents}
  - dimension: charge_price_cents
    type: number
    sql: (${TABLE}.charge_price * 100)
  - dimension: task_fee_cents
    type: number
    sql: (${TABLE}.runner_fee * 100)
  - dimension: close_latency
    type: int
    sql: DATEDIFF(${closed_state_date},${opened_state_date})
  - dimension: close_latency_tier
    type: tier
    sql: ${close_latency}
  - dimension: continuing_parent_id
    type: int
  - dimension: credits_free_cents
    type: number
    sql: (${TABLE}.credits_free * 100)
  - dimension: description
  - dimension: discounted_promotion_id
    type: int
  - dimension: geography_id
    type: int
  - dimension: id
    type: int
  - dimension: opened_state_at
  - dimension: admin_url
    sql: ${id}
  - dimension: marketplace
  - dimension: assisted_groomed
    type: yesno
  - dimension: assisted_reviewed
    type: yesno
  - dimension: metro_id
    type: int
  - dimension: title
    sql: ${TABLE}.name
  - dimension: number_tasks_required
    type: int
    sql: ${TABLE}.number_runners_required
  - dimension: number_tasks_to_fill
    type: int
    sql: ${TABLE}.number_runners_to_fill
  - dimension: parent_task_id
    type: int
  - dimension: posted_at
  - dimension: posted_month_number
    type: number
    sql: ${posted_month_num}
  - dimension: price_units
  - dimension: promotion_id
    type: int
  - dimension: review_runners
    type: yesno
  - dimension: tasker_id
    type: int
    sql: ${TABLE}.runner_id
  - dimension: state
  - dimension: general_state
  - dimension: state_derived
  - dimension: suppress_level
    type: int
  - dimension: task_type_id
    type: int
  - dimension: tip_in_cents
    type: number
    sql: ${TABLE}.tip_in_cents
  - dimension: earnings_cents
    type: number
    sql: ${tip_in_cents}+${task_fee_cents}
  - dimension: poster_price_cents
    type: number
    sql: ${service_fee_cents}+${earnings_cents}
  - dimension: town_id
    type: int
  - dimension: user_id
    type: int
  - dimension: assisted_marketplace_processed_at
    type: time
    sql: (select processed_at from adminProd_review_items where remote_type = 'task' and score_type = 'assisted-marketplace' and remote_id = ${TABLE}.id)
  - dimension: user_closed_before_count
    type: int
  - dimension: fttp_tier
    type: tier
    sql: ${user_closed_before_count}
  - dimension: sequence_number
    type: int
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.created_at < ${TABLE}.created_at
  AND t.user_id=${TABLE}.user_id) + 1
  - dimension: posted_sequence_number
    type: int
    sql: CASE
  WHEN ${TABLE}.state <> 'started'
  THEN
    (SELECT COUNT(*)
    FROM tasks t
    WHERE t.created_at < ${TABLE}.created_at
      AND t.user_id=${TABLE}.user_id
      AND t.state <> 'started') + 1
  ELSE NULL
END
  - dimension: repeat_customer
    type: yesno
    sql: ${posted_sequence_number} > 1
  - dimension: sequence_number_tier
    type: tier
    sql: ${sequence_number}
  - dimension: completed_sequence_number
    type: int
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.created_at < ${TABLE}.created_at
  AND t.user_id=${TABLE}.user_id
  AND t.state IN ('closed', 'completed', 'married')) + 1
  - dimension: completed_sequence_number_tier
    type: tier
    sql: ${completed_sequence_number}
  - dimension: recurring_parent
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.continuing_parent_id=${TABLE}.id) > 0
  - dimension: multiple_parent
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
WHERE t.parent_task_id=${TABLE}.id) > 0
  - dimension: parent_job
    type: yesno
    sql: (SELECT COUNT(*)
FROM tasks t
LEFT JOIN badge_sets bs
ON bs.id=t.badge_set_id
WHERE t.id = ${TABLE}.continuing_parent_id
  AND bs.id = t.badge_set_id
  AND bs.badge_jobs_enabled = true) > 0
  - dimension: work_item_type
  - dimension_group: assigned_state
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.assigned_state_at
  - dimension_group: began_state
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.began_state_at
  - dimension_group: cancel_request
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.cancel_request_at
  - dimension_group: closed_state
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.closed_state_at
  - dimension_group: complete_by
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.complete_by_time
  - dimension_group: completed_state
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: ${TABLE}.completed_state_at
  - dimension_group: created
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    sql: ${TABLE}.created_at
  - dimension_group: opened_state
    type: time
    timeframes:
    - yesno
    - time
    - date
    - week
    - month
    sql: COALESCE(${TABLE}.opened_state_at, ${TABLE}.assigned_state_at, ${TABLE}.completed_state_at)
  - dimension_group: posted
    type: time
    timeframes:
    - time
    - date
    - week
    - month
    - month_num
    - year
    sql: ${TABLE}.posted_at
  - measure: has_bids_count
    type: count_distinct
    filters:
    - opened_state_at: -NULL
    - number_of_offers: 1 to
    sql: ${id}
  - measure: has_bids_rate
    type: number
    sql: 100.0 * ${has_bids_count}/${opened_count}
  - measure: opened_count
    type: count_distinct
    filters:
    - opened_state_at: -NULL
    sql: ${id}
  - measure: organic.count
    type: count_distinct
    filters:
    - work_item_type: organic
    - posted_at: -NULL
    sql: ${id}
  - measure: job.count
    type: count_distinct
    filters:
    - work_item_type: job
    - posted_at: -NULL
    sql: ${id}
  - measure: multiple.count
    type: count_distinct
    filters:
    - work_item_type: multiple
    - posted_at: -NULL
    sql: ${id}
  - measure: recurring.count
    type: count_distinct
    filters:
    - work_item_type: recurring
    - posted_at: -NULL
    sql: ${id}
  - measure: organic.closed_count
    type: count_distinct
    filters:
    - work_item_type: organic
    - state: married, divorced, closed, filled
    sql: ${id}
  - measure: job.closed_count
    type: count_distinct
    filters:
    - work_item_type: job
    - state: married, divorced, closed
    sql: ${id}
  - measure: multiple.closed_count
    type: count_distinct
    filters:
    - work_item_type: multiple
    - state: filled
    sql: ${id}
  - measure: recurring.closed_count
    type: count_distinct
    filters:
    - work_item_type: recurring
    - state: married, divorced
    sql: ${id}
  - measure: organic.close_rate
    type: number
    sql: CASE
  WHEN ${organic.count} = 0
  THEN NULL
  ELSE 100.0 * ${organic.closed_count}/${organic.count}
END
  - measure: job.close_rate
    type: number
    sql: CASE
  WHEN ${job.count} = 0
  THEN NULL
  ELSE 100.0 * ${job.closed_count}/${job.count}
END
  - measure: multiple.close_rate
    type: number
    sql: CASE
  WHEN ${multiple.count} = 0
  THEN NULL
  ELSE 100.0 * ${multiple.closed_count}/${multiple.count}
END
  - measure: recurring.close_rate
    type: number
    sql: CASE
  WHEN ${recurring.count} = 0
  THEN NULL
  ELSE 100.0 * ${recurring.closed_count}/${recurring.count}
END
  - measure: reimbursement_cents
    type: number
    sql: (select (SUM(reimbursement_in_cents)) from offers where offers.task_id = work_items.local_id)
  - measure: average_service_fee_cents
    type: avg
    sql: ${service_fee_cents}
  - measure: average_tip_cents
    type: avg
    sql: ${tip_in_cents}
  - measure: total_tip_cents
    type: sum
    sql: ${tip_in_cents}
  - measure: task_earnings_cents_per_task
    type: number
    sql: ${earnings_cents}/${work_items.count}
  - measure: poster_price_cents_per_task
    type: number
    sql: ${poster_price_cents}/${work_items.count}
  - measure: total_service_fee_cents
    type: sum
    sql: ${service_fee_cents}
  - measure: total_potential_service_fee_cents
    type: sum
    sql: ${potential_service_fee_cents}
  - measure: average_potential_service_fee_cents
    type: avg
    sql: ${potential_service_fee_cents}
  - measure: average_take_rate
    type: avg
    sql: ${take_rate}

Contents

  • work_items_detail.view.lkml
  • work_items_detail.view.lookml