forked from llooker/blocks_redshift_admin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathredshift_wlm_queries.view.lkml
More file actions
161 lines (137 loc) · 3.68 KB
/
redshift_wlm_queries.view.lkml
File metadata and controls
161 lines (137 loc) · 3.68 KB
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
view: redshift_wlm_queries {
derived_table: {
sql: SELECT
w.query, "substring"(q.querytxt, 1, 4000) AS querytxt
, w.queue_start_time
, w.service_class
, case when w.service_class = 1 then 'system-health'
when w.service_class = 2 then 'system-metrics'
when w.service_class = 3 then 'system-cmstats'
when w.service_class = 4 then 'system'
when w.service_class = 6 then 'dw_reporting'
when w.service_class = 7 then 'dw_readwrite'
when w.service_class = 8 then 'dw_default'
when w.service_class = 14 then 'short_query_queue'
else coalesce(trim(b.condition),w.service_class::text) end as queue_name
, w.slot_count AS slots, w.total_queue_time / 1000000 AS queue_seconds
, w.total_exec_time / 1000000 AS exec_seconds
, (w.total_queue_time + w.total_exec_time) / 1000000 AS total_seconds
FROM stl_wlm_query w
JOIN stv_wlm_classification_config b ON w.service_class = b.action_service_class
LEFT JOIN stl_query q ON q.query = w.query AND q.userid = w.userid
WHERE w.queue_start_time >= date_add('day', -7, 'now')
AND q.starttime >= date_add('day', -7, 'now')
AND w.userid > 1 ;;
}
dimension: query {
type: number
hidden: yes
primary_key: yes
sql: ${TABLE}.query ;;
}
dimension: query_txt {
type: string
sql: ${TABLE}.querytxt ;;
}
dimension_group: queue_start_time {
type: time
timeframes: [
raw,
date,
time,
hour12,
hour,
minute30,
minute15,
minute5,
minute
]
sql: ${TABLE}.queue_start_time ;;
}
dimension: queue_name {
type: string
sql: ${TABLE}.queue_name ;;
suggestions: ["dw_reporting", "dw_readwrite", "dw_default", "short_query_queue"]
}
dimension: queue_id {
type: string
sql: ${TABLE}.service_class ;;
}
dimension: queue_seconds {
type: number
sql: ${TABLE}.queue_seconds ;;
}
dimension: exec_seconds {
type: number
sql: ${TABLE}.exec_seconds ;;
}
dimension: total_seconds {
type: number
sql: ${TABLE}.total_seconds ;;
}
# ----- Sets of fields for drilling ------
set: query_detail {
fields: [
query_txt,
queue_start_time_time,
queue_name,
queue_id,
queue_seconds,
exec_seconds,
total_seconds
]
}
measure: count_queries {
type: count
drill_fields: [query_detail*]
}
measure: sum_queue_seconds {
type: sum
sql: ${queue_seconds} ;;
drill_fields: [query_detail*]
}
measure: sum_exec_seconds {
type: sum
sql: ${exec_seconds} ;;
drill_fields: [query_detail*]
}
measure: sum_total_seconds {
type: sum
sql: ${total_seconds} ;;
drill_fields: [query_detail*]
}
measure: mean_queue_seconds {
type: average
sql: ${queue_seconds} ;;
drill_fields: [query_detail*]
}
measure: mean_exec_seconds {
type: average
sql: ${exec_seconds} ;;
drill_fields: [query_detail*]
}
measure: mean_total_seconds {
type: sum
sql: ${total_seconds} ;;
drill_fields: [query_detail*]
}
measure: median_queue_seconds {
type: median
sql: ${queue_seconds} ;;
drill_fields: [query_detail*]
}
measure: median_exec_seconds {
type: median
sql: ${exec_seconds} ;;
drill_fields: [query_detail*]
}
measure: median_total_seconds {
type: median
sql: ${total_seconds} ;;
drill_fields: [query_detail*]
}
measure: top_n_execution {
type: number
sql: row_number() over (order by exec_seconds desc) ;;
}
}