dbt Fintech api

Growth Usage

Growth Usage model for fintech api.

inferred

Blocks

growth_usage.sql · 26 lines
inferred
-- models/growth_usage.sql
{{ config(materialized='table') }}

SELECT
  DATE_TRUNC('day',current_time_ms) AS date,
  utilization_metric AS product_detail,
  CASE WHEN (product_detail LIKE 'auth%') THEN 'auth' WHEN (product_detail LIKE 'connect%') THEN 'connect' ELSE product_detail END AS product,
  COUNT(*) AS count_today,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 6 PRECEDING)) AS tr_7_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 29 PRECEDING)) AS tr_30_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 89 PRECEDING)) AS tr_90_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 364 PRECEDING)) AS tr_365_avg
FROM
  api_production
GROUP BY
  date,
  product_detail

# models/schema.yml
version: 2

models:
  - name: growth_usage
    columns:
      - name: product
      - name: product_detail

Assumptions

  • materialized='table' inferred from a LookML persist hint (persist_for / datagroup / sql_trigger_value).
  • schema.yml columns come from view dimensions; a primary_key dimension gets unique + not_null tests.
growth_usage.sql · 14 lines
source-preserved validation: parses
SELECT
  DATE_TRUNC('day',current_time_ms) AS date,
  utilization_metric AS product_detail,
  CASE WHEN (product_detail LIKE 'auth%') THEN 'auth' WHEN (product_detail LIKE 'connect%') THEN 'connect' ELSE product_detail END AS product,
  COUNT(*) AS count_today,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 6 PRECEDING)) AS tr_7_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 29 PRECEDING)) AS tr_30_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 89 PRECEDING)) AS tr_90_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 364 PRECEDING)) AS tr_365_avg
FROM
  api_production
GROUP BY
  date,
  product_detail
growth_usage.view.lkml · 53 lines
inferred
view: growth_usage {
  derived_table: {
    sql: SELECT
  DATE_TRUNC('day',current_time_ms) AS date,
  utilization_metric AS product_detail,
  CASE WHEN (product_detail LIKE 'auth%') THEN 'auth' WHEN (product_detail LIKE 'connect%') THEN 'connect' ELSE product_detail END AS product,
  COUNT(*) AS count_today,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 6 PRECEDING)) AS tr_7_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 29 PRECEDING)) AS tr_30_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 89 PRECEDING)) AS tr_90_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 364 PRECEDING)) AS tr_365_avg
FROM
  api_production
GROUP BY
  date,
  product_detail ;;
    persist_for: "24 hours"
  }

  dimension: product {
  }

  dimension: product_detail {
  }

  dimension_group: date {
    type: date
  }

  measure: count_today {
    type: sum
  }

  measure: trailing_7_day_average {
    type: sum
    sql: ${TABLE}.tr_7_avg ;;
  }

  measure: trailing_30_day_average {
    type: sum
    sql: ${TABLE}.tr_30_avg ;;
  }

  measure: trailing_90_day_average {
    type: sum
    sql: ${TABLE}.tr_90_avg ;;
  }

  measure: trailing_365_day_average {
    type: sum
    sql: ${TABLE}.tr_365_avg ;;
  }
}
growth_usage.view.lookml · 36 lines
source-preserved
- view: growth_usage
  derived_table:
    sql: SELECT
  DATE_TRUNC('day',current_time_ms) AS date,
  utilization_metric AS product_detail,
  CASE WHEN (product_detail LIKE 'auth%') THEN 'auth' WHEN (product_detail LIKE 'connect%') THEN 'connect' ELSE product_detail END AS product,
  COUNT(*) AS count_today,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 6 PRECEDING)) AS tr_7_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 29 PRECEDING)) AS tr_30_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 89 PRECEDING)) AS tr_90_avg,
  ROUND(AVG(COUNT(*) * 1.0) OVER (PARTITION BY product ORDER BY date ROWS 364 PRECEDING)) AS tr_365_avg
FROM
  api_production
GROUP BY
  date,
  product_detail
    persist_for: 24 hours
  fields:
  - dimension: product
  - dimension: product_detail
  - dimension_group: date
    type: date
  - measure: count_today
    type: sum
  - measure: trailing_7_day_average
    type: sum
    sql: ${TABLE}.tr_7_avg
  - measure: trailing_30_day_average
    type: sum
    sql: ${TABLE}.tr_30_avg
  - measure: trailing_90_day_average
    type: sum
    sql: ${TABLE}.tr_90_avg
  - measure: trailing_365_day_average
    type: sum
    sql: ${TABLE}.tr_365_avg

Contents

  • growth_usage.sql
  • growth_usage.sql
  • growth_usage.view.lkml
  • growth_usage.view.lookml