SQL
Saas cloud infrastructure
Dcos Command Funnel
Dcos Command Funnel model for saas cloud infrastructure.
source-preserved
Blocks
dcos_command_funnel.sql · 77 lines
inferred
-- models/dcos_command_funnel.sql
{{ config(materialized='view') }}
SELECT
sessions.session_id as session_id
, dcos.dcos_cli.anonymous_id
, dcos.dcos_cli.user_id
, SUBSTRING(dcos.dcos_cli.cmd, POSITION('/placeholder_command ' IN dcos.dcos_cli.cmd), 99999) AS "cmd_core"
, dcos.dcos_cli.cmd
, dcos.dcos_cli.received_at
, dcos.dcos_cli.event_id
, MIN(
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event1_time
, MIN(
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event2_time
, MIN(
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event3_time
, (
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event1_anonymous_id
, (
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event2_anonymous_id
, (
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event3_anonymous_id
FROM dcos.dcos_cli
LEFT JOIN {{ ref('aliases_mapping') }} as aliases_mapping
ON aliases_mapping.alias = coalesce(dcos.dcos_cli.user_id, dcos.dcos_cli.anonymous_id)
LEFT JOIN {{ ref('track_facts') }} as tracks_sessions_map
ON dcos.dcos_cli.event_id = tracks_sessions_map.event_id
LEFT JOIN {{ ref('sessions_trk') }} as sessions
ON tracks_sessions_map.session_id = sessions.session_id
GROUP BY 1,2,3,4,5,6,7
# models/schema.yml
version: 2
models:
- name: dcos_command_funnel
columns:
- name: anonymous_id
- name: event_id
- name: event1_anonymous_id
- name: event2_anonymous_id
- name: event3_anonymous_id
- name: user_id
- name: session_id
- name: cmd
- name: cmd_core
- name: event1
- name: event2
- name: event3
- name: received
- name: event1_before_event2
- name: event2_before_event3
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.
dcos_command_funnel.sql · 52 lines
source-preserved
validation: not checked
SELECT
sessions.session_id as session_id
, dcos.dcos_cli.anonymous_id
, dcos.dcos_cli.user_id
, SUBSTRING(dcos.dcos_cli.cmd, POSITION('/placeholder_command ' IN dcos.dcos_cli.cmd), 99999) AS "cmd_core"
, dcos.dcos_cli.cmd
, dcos.dcos_cli.received_at
, dcos.dcos_cli.event_id
, MIN(
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event1_time
, MIN(
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event2_time
, MIN(
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event3_time
, (
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event1_anonymous_id
, (
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event2_anonymous_id
, (
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event3_anonymous_id
FROM dcos.dcos_cli
LEFT JOIN ${aliases_mapping.SQL_TABLE_NAME} as aliases_mapping
ON aliases_mapping.alias = coalesce(dcos.dcos_cli.user_id, dcos.dcos_cli.anonymous_id)
LEFT JOIN ${track_facts.SQL_TABLE_NAME} as tracks_sessions_map
ON dcos.dcos_cli.event_id = tracks_sessions_map.event_id
LEFT JOIN ${sessions_trk.SQL_TABLE_NAME} as sessions
ON tracks_sessions_map.session_id = sessions.session_id
GROUP BY 1,2,3,4,5,6,7
dcos_command_funnel.view.lkml · 141 lines
inferred
view: dcos_command_funnel {
derived_table: {
sql: SELECT
sessions.session_id as session_id
, dcos.dcos_cli.anonymous_id
, dcos.dcos_cli.user_id
, SUBSTRING(dcos.dcos_cli.cmd, POSITION('/placeholder_command ' IN dcos.dcos_cli.cmd), 99999) AS "cmd_core"
, dcos.dcos_cli.cmd
, dcos.dcos_cli.received_at
, dcos.dcos_cli.event_id
, MIN(
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event1_time
, MIN(
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event2_time
, MIN(
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event3_time
, (
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event1_anonymous_id
, (
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event2_anonymous_id
, (
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event3_anonymous_id
FROM dcos.dcos_cli
LEFT JOIN ${aliases_mapping.SQL_TABLE_NAME} as aliases_mapping
ON aliases_mapping.alias = coalesce(dcos.dcos_cli.user_id, dcos.dcos_cli.anonymous_id)
LEFT JOIN ${track_facts.SQL_TABLE_NAME} as tracks_sessions_map
ON dcos.dcos_cli.event_id = tracks_sessions_map.event_id
LEFT JOIN ${sessions_trk.SQL_TABLE_NAME} as sessions
ON tracks_sessions_map.session_id = sessions.session_id
GROUP BY 1,2,3,4,5,6,7 ;;
}
dimension: anonymous_id {
sql: ${TABLE}.anonymous_id ;;
}
dimension: event_id {
sql: ${TABLE}.event_id ;;
}
dimension: event1_anonymous_id {
sql: ${TABLE}.event1_anonymous_id ;;
}
dimension: event2_anonymous_id {
sql: ${TABLE}.event1_anonymous_id ;;
}
dimension: event3_anonymous_id {
sql: ${TABLE}.event1_anonymous_id ;;
}
dimension: user_id {
sql: ${TABLE}.user_id ;;
}
dimension: session_id {
sql: ${TABLE}.session_id ;;
}
dimension: cmd {
sql: ${TABLE}.cmd ;;
}
dimension: cmd_core {
sql: ${TABLE}.cmd_core ;;
}
dimension: event1 {
type: time
sql: ${TABLE}.event1_time ;;
}
dimension: event2 {
type: time
sql: ${TABLE}.event2_time ;;
}
dimension: event3 {
type: time
sql: ${TABLE}.event3_time ;;
}
dimension: received {
type: time
sql: ${TABLE}.received_at ;;
}
dimension: event1_before_event2 {
type: yesno
sql: ${event1_time} < ${event2_time} ;;
}
dimension: event2_before_event3 {
type: yesno
sql: ${event2_time} < ${event3_time} ;;
}
measure: count_sessions {
type: count
}
measure: count_sessions_event1 {
type: count
filters: [event1_time: "NOT NULL"]
}
measure: count_sessions_event2 {
type: count
filters: [event2_time: "NOT NULL"]
}
measure: count_sessions_event3 {
type: count
filters: [event3_time: "NOT NULL"]
}
}
dcos_command_funnel.view.lookml · 105 lines
source-preserved
- view: dcos_command_funnel
derived_table:
sql: SELECT
sessions.session_id as session_id
, dcos.dcos_cli.anonymous_id
, dcos.dcos_cli.user_id
, SUBSTRING(dcos.dcos_cli.cmd, POSITION('/placeholder_command ' IN dcos.dcos_cli.cmd), 99999) AS "cmd_core"
, dcos.dcos_cli.cmd
, dcos.dcos_cli.received_at
, dcos.dcos_cli.event_id
, MIN(
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event1_time
, MIN(
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event2_time
, MIN(
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.received_at
ELSE NULL END
) as event3_time
, (
CASE WHEN
{% condition event1 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event1_anonymous_id
, (
CASE WHEN
{% condition event2 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event2_anonymous_id
, (
CASE WHEN
{% condition event3 %} SUBSTRING(cmd, POSITION('/placeholder_command ' IN cmd), 99999) {% endcondition %}
THEN dcos.dcos_cli.anonymous_id
ELSE NULL END
) as event3_anonymous_id
FROM dcos.dcos_cli
LEFT JOIN ${aliases_mapping.SQL_TABLE_NAME} as aliases_mapping
ON aliases_mapping.alias = coalesce(dcos.dcos_cli.user_id, dcos.dcos_cli.anonymous_id)
LEFT JOIN ${track_facts.SQL_TABLE_NAME} as tracks_sessions_map
ON dcos.dcos_cli.event_id = tracks_sessions_map.event_id
LEFT JOIN ${sessions_trk.SQL_TABLE_NAME} as sessions
ON tracks_sessions_map.session_id = sessions.session_id
GROUP BY 1,2,3,4,5,6,7
fields:
- dimension: anonymous_id
sql: ${TABLE}.anonymous_id
- dimension: event_id
sql: ${TABLE}.event_id
- dimension: event1_anonymous_id
sql: ${TABLE}.event1_anonymous_id
- dimension: event2_anonymous_id
sql: ${TABLE}.event1_anonymous_id
- dimension: event3_anonymous_id
sql: ${TABLE}.event1_anonymous_id
- dimension: user_id
sql: ${TABLE}.user_id
- dimension: session_id
sql: ${TABLE}.session_id
- dimension: cmd
sql: ${TABLE}.cmd
- dimension: cmd_core
sql: ${TABLE}.cmd_core
- dimension: event1
type: time
sql: ${TABLE}.event1_time
- dimension: event2
type: time
sql: ${TABLE}.event2_time
- dimension: event3
type: time
sql: ${TABLE}.event3_time
- dimension: received
type: time
sql: ${TABLE}.received_at
- dimension: event1_before_event2
type: yesno
sql: ${event1_time} < ${event2_time}
- dimension: event2_before_event3
type: yesno
sql: ${event2_time} < ${event3_time}
- measure: count_sessions
type: count
- measure: count_sessions_event1
type: count
filters:
- event1_time: NOT NULL
- measure: count_sessions_event2
type: count
filters:
- event2_time: NOT NULL
- measure: count_sessions_event3
type: count
filters:
- event3_time: NOT NULL
Contents
- dcos_command_funnel.sql
- dcos_command_funnel.sql
- dcos_command_funnel.view.lkml
- dcos_command_funnel.view.lookml