Skip to content

Commit f65ac95

Browse files
committed
[NEP-18090]: Adding en endpoint for warming up the dataset cache
1 parent d7aff94 commit f65ac95

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

lib/superset/dashboard/datasets/list.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ def schemas
3535
end
3636
end
3737

38+
def dataset_names
39+
result.map {|d| d[:datasource_name] }.uniq
40+
end
41+
3842
def datasets_details
3943
result.map do |details|
4044
details.slice('id', 'datasource_name', 'schema', 'sql').merge('database' => details['database'].slice('id', 'name', 'backend')).with_indifferent_access
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
module Superset
2+
module Dataset
3+
class WarmUpCache < Superset::Request
4+
attr_reader :db_name
5+
6+
def initialize(db_name:)
7+
@db_name = db_name
8+
end
9+
10+
def perform
11+
dashboard_ids = fetch_dashboard_ids
12+
dashboard_ids.each do |dashboard_id|
13+
dataset_names = fetch_dataset_names(dashboard_id)
14+
dataset_names.each do |dataset_name|
15+
begin
16+
client.put(route, params(dataset_name, dashboard_id))
17+
rescue => e
18+
Rollbar.error(e.message)
19+
end
20+
end
21+
end
22+
end
23+
24+
def params(dataset_name, dashboard_id)
25+
{
26+
"dashboard_id" => dashboard_id,
27+
"table_name" => dataset_name,
28+
"db_name" => db_name
29+
}
30+
end
31+
32+
def fetch_dashboard_ids
33+
Superset::Dashboard::List.new(tags_equal: ['embedded', 'product:jobready']).ids
34+
end
35+
36+
def fetch_dataset_names(dashboard_id)
37+
Superset::Dashboard::Datasets::List.new(dashboard_id).dataset_names
38+
end
39+
40+
private
41+
42+
def route
43+
"dataset/warm_up_cache"
44+
end
45+
end
46+
end
47+
end

0 commit comments

Comments
 (0)