dbt Telemedicine service

Call Membertransaction Aggregate

Call Membertransaction Aggregate model for telemedicine service.

inferred

Blocks

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

SELECT call.call_content_type_id
 , call.call_object_id
 , COUNT(distinct membertransaction.id) AS number_transactions
 , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN 0
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS gross_revenue
  , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS refunds
    , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN -1 * COALESCE(membertransaction.amount, 0)
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS net_revenue
    , SUM(COALESCE(callsegment.organization_subsidy, 0) * call.segment_count) AS total_organization_subsidy
FROM combined_call AS call
LEFT JOIN calls_callsegment AS callsegment ON call.segment_id = callsegment.id
LEFT JOIN payments_transaction as membertransaction ON
  (call.call_object_id = membertransaction.call_object_id AND call.call_content_type_id = membertransaction.call_content_type_id)
GROUP BY call.call_content_type_id, call.call_object_id

# models/schema.yml
version: 2

models:
  - name: call_membertransaction_aggregate
    columns:
      - name: call_content_type_id_and_call_object_id
        tests:
          - unique
          - not_null
      - name: number_transactions
      - name: gross_revenue
      - name: refunds
      - name: net_revenue
      - name: total_organization_subsidy

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.
call_membertransaction_aggregate.sql · 34 lines
source-preserved validation: parses
SELECT call.call_content_type_id
 , call.call_object_id
 , COUNT(distinct membertransaction.id) AS number_transactions
 , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN 0
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS gross_revenue
  , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS refunds
    , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN -1 * COALESCE(membertransaction.amount, 0)
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS net_revenue
    , SUM(COALESCE(callsegment.organization_subsidy, 0) * call.segment_count) AS total_organization_subsidy
FROM combined_call AS call
LEFT JOIN calls_callsegment AS callsegment ON call.segment_id = callsegment.id
LEFT JOIN payments_transaction as membertransaction ON
  (call.call_object_id = membertransaction.call_object_id AND call.call_content_type_id = membertransaction.call_content_type_id)
GROUP BY call.call_content_type_id, call.call_object_id
call_membertransaction_aggregate.view.lkml · 95 lines
inferred
view: call_membertransaction_aggregate {
  derived_table: {
    sql: SELECT call.call_content_type_id
 , call.call_object_id
 , COUNT(distinct membertransaction.id) AS number_transactions
 , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN 0
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS gross_revenue
  , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS refunds
    , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN -1 * COALESCE(membertransaction.amount, 0)
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS net_revenue
    , SUM(COALESCE(callsegment.organization_subsidy, 0) * call.segment_count) AS total_organization_subsidy
FROM combined_call AS call
LEFT JOIN calls_callsegment AS callsegment ON call.segment_id = callsegment.id
LEFT JOIN payments_transaction as membertransaction ON
  (call.call_object_id = membertransaction.call_object_id AND call.call_content_type_id = membertransaction.call_content_type_id)
GROUP BY call.call_content_type_id, call.call_object_id ;;
  }

  dimension: call_content_type_id_and_call_object_id {
    primary_key: yes
    hidden: yes
    sql: CASE WHEN ${TABLE}.call_content_type_id IS NULL THEN NULL
     ELSE CONCAT(${TABLE}.call_content_type_id::text, ':', ${TABLE}.call_object_id::text)
END ;;
  }

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

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

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

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

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

  measure: sum_organization_subsidy {
    type: sum
    sql: ${total_organization_subsidy} ;;
  }

  measure: count {
    type: count
  }

  measure: sum_gross_revenue {
    type: sum
    sql: ${gross_revenue} ;;
  }

  measure: sum_refunds {
    type: sum
    sql: ${refunds} ;;
  }

  measure: sum_net_revenue {
    type: sum
    sql: ${net_revenue} ;;
  }
}
call_membertransaction_aggregate.view.lookml · 72 lines
source-preserved
- view: call_membertransaction_aggregate
  derived_table:
    sql: SELECT call.call_content_type_id
 , call.call_object_id
 , COUNT(distinct membertransaction.id) AS number_transactions
 , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN 0
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS gross_revenue
  , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS refunds
    , SUM(
    CASE
      WHEN membertransaction.is_refund
        THEN -1 * COALESCE(membertransaction.amount, 0)
      WHEN membertransaction.braintree_transaction_status IN (6,7,8,10)
        THEN COALESCE(membertransaction.amount, 0)
      ELSE
        0
    END) AS net_revenue
    , SUM(COALESCE(callsegment.organization_subsidy, 0) * call.segment_count) AS total_organization_subsidy
FROM combined_call AS call
LEFT JOIN calls_callsegment AS callsegment ON call.segment_id = callsegment.id
LEFT JOIN payments_transaction as membertransaction ON
  (call.call_object_id = membertransaction.call_object_id AND call.call_content_type_id = membertransaction.call_content_type_id)
GROUP BY call.call_content_type_id, call.call_object_id
  fields:
  - dimension: call_content_type_id_and_call_object_id
    primary_key: true
    hidden: true
    sql: CASE WHEN ${TABLE}.call_content_type_id IS NULL THEN NULL
     ELSE CONCAT(${TABLE}.call_content_type_id::text, ':', ${TABLE}.call_object_id::text)
END
  - dimension: number_transactions
    type: number
    sql: ${TABLE}.number_transactions
  - dimension: gross_revenue
    type: number
    sql: ${TABLE}.gross_revenue
  - dimension: refunds
    type: number
    sql: ${TABLE}.refunds
  - dimension: net_revenue
    type: number
    sql: ${TABLE}.net_revenue
  - dimension: total_organization_subsidy
    type: number
    sql: ${TABLE}.total_organization_subsidy
  - measure: sum_organization_subsidy
    type: sum
    sql: ${total_organization_subsidy}
  - measure: count
    type: count
  - measure: sum_gross_revenue
    type: sum
    sql: ${gross_revenue}
  - measure: sum_refunds
    type: sum
    sql: ${refunds}
  - measure: sum_net_revenue
    type: sum
    sql: ${net_revenue}

Contents

  • call_membertransaction_aggregate.sql
  • call_membertransaction_aggregate.sql
  • call_membertransaction_aggregate.view.lkml
  • call_membertransaction_aggregate.view.lookml