dbt
Analytics shopping
Device Ids By Store
Device Ids By Store model for analytics shopping.
inferred
Blocks
device_ids_by_store.sql · 36 lines
inferred
-- models/device_ids_by_store.sql
{{ config(materialized='view') }}
WITH dibs AS (
SELECT
zone_name AS store
, device_id
FROM daily_summary_by_span
WHERE {% condition span_name %} span_name {% endcondition %}
AND {% condition the_date_local %} the_date_local {% endcondition %}
AND {% condition device_type %} device_type {% endcondition %}
GROUP BY 1,2)
SELECT
d1.store AS store_1
, d2.store AS store_2
, COUNT(DISTINCT d2.device_id) AS cross_shoppers
FROM dibs AS d1
INNER JOIN dibs AS d2
ON d1.device_id = d2.device_id
WHERE d1.store <> d2.store
GROUP BY 1,2
# models/schema.yml
version: 2
models:
- name: device_ids_by_store
columns:
- name: compound_key
tests:
- unique
- not_null
- name: store_1
- name: store_2
- name: cross_shoppers
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.
device_ids_by_store.sql · 19 lines
source-preserved
validation: not checked
WITH dibs AS (
SELECT
zone_name AS store
, device_id
FROM daily_summary_by_span
WHERE {% condition span_name %} span_name {% endcondition %}
AND {% condition the_date_local %} the_date_local {% endcondition %}
AND {% condition device_type %} device_type {% endcondition %}
GROUP BY 1,2)
SELECT
d1.store AS store_1
, d2.store AS store_2
, COUNT(DISTINCT d2.device_id) AS cross_shoppers
FROM dibs AS d1
INNER JOIN dibs AS d2
ON d1.device_id = d2.device_id
WHERE d1.store <> d2.store
GROUP BY 1,2
device_ids_by_store.view.lkml · 49 lines
inferred
view: device_ids_by_store {
derived_table: {
sql: WITH dibs AS (
SELECT
zone_name AS store
, device_id
FROM daily_summary_by_span
WHERE {% condition span_name %} span_name {% endcondition %}
AND {% condition the_date_local %} the_date_local {% endcondition %}
AND {% condition device_type %} device_type {% endcondition %}
GROUP BY 1,2)
SELECT
d1.store AS store_1
, d2.store AS store_2
, COUNT(DISTINCT d2.device_id) AS cross_shoppers
FROM dibs AS d1
INNER JOIN dibs AS d2
ON d1.device_id = d2.device_id
WHERE d1.store <> d2.store
GROUP BY 1,2 ;;
}
dimension: compound_key {
primary_key: yes
hidden: yes
sql: ${store_1}||${store_2} ;;
}
dimension: store_1 {
}
dimension: store_2 {
}
dimension: cross_shoppers {
type: number
}
measure: total_cross_shoppers {
type: sum
sql: ${cross_shoppers} ;;
}
measure: percent_of_total_cross_shoppers {
type: percent_of_total
sql: ${cross_shoppers} ;;
}
}
device_ids_by_store.view.lookml · 36 lines
source-preserved
- view: device_ids_by_store
derived_table:
sql: WITH dibs AS (
SELECT
zone_name AS store
, device_id
FROM daily_summary_by_span
WHERE {% condition span_name %} span_name {% endcondition %}
AND {% condition the_date_local %} the_date_local {% endcondition %}
AND {% condition device_type %} device_type {% endcondition %}
GROUP BY 1,2)
SELECT
d1.store AS store_1
, d2.store AS store_2
, COUNT(DISTINCT d2.device_id) AS cross_shoppers
FROM dibs AS d1
INNER JOIN dibs AS d2
ON d1.device_id = d2.device_id
WHERE d1.store <> d2.store
GROUP BY 1,2
fields:
- dimension: compound_key
primary_key: true
hidden: true
sql: ${store_1}||${store_2}
- dimension: store_1
- dimension: store_2
- dimension: cross_shoppers
type: number
- measure: total_cross_shoppers
type: sum
sql: ${cross_shoppers}
- measure: percent_of_total_cross_shoppers
type: percent_of_total
sql: ${cross_shoppers}
Contents
- device_ids_by_store.sql
- device_ids_by_store.sql
- device_ids_by_store.view.lkml
- device_ids_by_store.view.lookml