-
Notifications
You must be signed in to change notification settings - Fork 0
/
orders.view.lkml
97 lines (85 loc) · 1.9 KB
/
orders.view.lkml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
view: orders {
dimension: id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
}
dimension_group: created {
type: time
timeframes: [
raw,
time,
date,
week,
month,
quarter,
year
]
sql: ${TABLE}.created_at ;;
}
dimension: status {
type: string
sql: ${TABLE}.status ;;
}
dimension: traffic_source {
type: string
sql: ${TABLE}.traffic_source ;;
}
dimension: user_id {
type: number
# hidden: yes
sql: ${TABLE}.user_id ;;
}
dimension: total_amount_of_order_usd {
type: number
value_format_name: decimal_2
sql:
(SELECT SUM(order_items.sale_price)
FROM order_items
WHERE order_items.order_id = ${id}) ;;
}
dimension: total_cost_of_order {
type: number
value_format_name: decimal_2
sql:
(SELECT SUM(inventory_items.cost)
FROM order_items
LEFT JOIN inventory_items ON order_items.inventory_item_id = inventory_items.id
WHERE order_items.order_id = ${id}) ;;
}
dimension: order_profit {
type: number
value_format_name: decimal_2
sql: ${total_amount_of_order_usd} - ${total_cost_of_order} ;;
}
dimension: order_sequence_number {
type: number
sql:
(SELECT COUNT(*)
FROM orders o
WHERE o.id < ${TABLE}.id
AND o.user_id = ${TABLE}.user_id) + 1
;;
}
dimension: is_first_purchase {
type: yesno
sql: ${order_sequence_number} = 1 ;;
}
measure: count {
type: count
drill_fields: [id, users.last_name, users.first_name, users.id, order_items.count]
}
measure: first_purchase_count {
type: count
drill_fields: [id, created_time, users.name, users.history, total_cost_of_order]
filters: {
field: is_first_purchase
value: "Yes"
}
}
measure: average_order_profit {
type: average
value_format: "$#.00"
sql: ${order_profit} ;;
}
}