Skip to content

Commit 47037e1

Browse files
committed
[NEP-18090]: Adding en endpoint for warming up the dataset cache
Using the dataset_details method to fetch db_name Getting dashboard_id as params to the class and warming up all the datasets of that dashboard
1 parent f65ac95 commit 47037e1

File tree

3 files changed

+16
-25
lines changed

3 files changed

+16
-25
lines changed

bin/console

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ require "terminal-table"
1111
require "yaml"
1212
require "enumerate_it"
1313
require "superset"
14+
require "rollbar"
1415

1516
Dir["./lib/**/*.rb"].each { |f| require f }
1617
# You can add fixtures and/or initialization code here to make experimenting

lib/superset/dashboard/datasets/list.rb

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

38-
def dataset_names
39-
result.map {|d| d[:datasource_name] }.uniq
40-
end
41-
4238
def datasets_details
4339
result.map do |details|
4440
details.slice('id', 'datasource_name', 'schema', 'sql').merge('database' => details['database'].slice('id', 'name', 'backend')).with_indifferent_access

lib/superset/dataset/warm_up_cache.rb

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,34 @@
11
module Superset
22
module Dataset
33
class WarmUpCache < Superset::Request
4-
attr_reader :db_name
54

6-
def initialize(db_name:)
7-
@db_name = db_name
5+
attr_reader :dashboard_id
6+
7+
def initialize(dashboard_id:)
8+
@dashboard_id = dashboard_id
89
end
910

1011
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
12+
dataset_details = fetch_dataset_details(dashboard_id)
13+
dataset_details.each do |dataset|
14+
begin
15+
client.put(route, params(dashboard_id, dataset["datasource_name"], dataset["name"]))
16+
rescue => e
17+
Rollbar.error(e.message)
18+
end
19+
end
2220
end
2321

24-
def params(dataset_name, dashboard_id)
22+
def params(dashboard_id, dataset_name, db_name)
2523
{
2624
"dashboard_id" => dashboard_id,
2725
"table_name" => dataset_name,
2826
"db_name" => db_name
2927
}
3028
end
3129

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
30+
def fetch_dataset_details(dashboard_id)
31+
Superset::Dashboard::Datasets::List.new(dashboard_id).datasets_details.map { |dataset| dataset['database'].slice('name').merge(dataset.slice('datasource_name'))}
3832
end
3933

4034
private

0 commit comments

Comments
 (0)