class PowerBI::Report
Attributes
dataset_id[R]
embed_url[R]
id[R]
is_from_pbix[R]
is_owned_by_me[R]
name[R]
pages[R]
report_type[R]
web_url[R]
workspace[R]
Public Class Methods
new(tenant, data)
click to toggle source
# File lib/power-bi/report.rb, line 7 def initialize(tenant, data) @id = data[:id] @report_type = data[:reportType] @name = data[:name] @web_url = data[:webUrl] @embed_url = data[:embedUrl] @is_from_pbix = data[:isFromPbix] @is_owned_by_me = data[:isOwnedByMe] @dataset_id = data[:datasetId] @workspace = data[:workspace] @tenant = tenant @pages = PageArray.new(@tenant, self) end
Public Instance Methods
clone(target_workspace, new_report_name)
click to toggle source
# File lib/power-bi/report.rb, line 21 def clone(target_workspace, new_report_name) data = @tenant.post("/reports/#{@id}/Clone") do |req| req.body = { name: new_report_name, targetWorkspaceId: target_workspace.id }.to_json end target_workspace.reports.reload data[:workspace] = target_workspace Report.new(@tenant, data) end
export_to_file(filename, format: 'PDF', timeout: 300)
click to toggle source
# File lib/power-bi/report.rb, line 42 def export_to_file(filename, format: 'PDF', timeout: 300) # post data = @tenant.post("/groups/#{workspace.id}/reports/#{id}/ExportTo") do |req| req.body = { format: format }.to_json end export_id = data[:id] # poll success = false iterations = 0 status_history = '' old_status = '' while !success sleep 0.1 iterations += 1 raise ExportToFileError.new("Report export to file did not succeed after #{timeout} seconds. Status history:#{status_history}") if iterations > (10 * timeout) new_status = @tenant.get("/groups/#{workspace.id}/reports/#{id}/exports/#{export_id}")[:status].to_s success = (new_status == "Succeeded") if new_status != old_status status_history += "\nStatus change after #{iterations/10.0}s: '#{old_status}' --> '#{new_status}'" old_status = new_status end end # get and write file data = @tenant.get_raw("/groups/#{workspace.id}/reports/#{id}/exports/#{export_id}/file") File.open(filename, "wb") { |f| f.write(data) } end
rebind(target_dataset)
click to toggle source
# File lib/power-bi/report.rb, line 33 def rebind(target_dataset) @tenant.post("/groups/#{workspace.id}/reports/#{id}/Rebind") do |req| req.body = { datasetId: target_dataset.id }.to_json end true end