Forum Discussion
Don-Bot
Helper V
2 years agoCreate a new Power BI Report using C# in XMLA Endpoint
I've worked through the Learning TOM code and have successfully created a dataset in Powe BI Service with it. I can go into it manually and create my own reports from scratch. However, is there ...
- 2 years ago
Thank you for the reply lbendlin I was actually able to accomplish this utilizing REST API scripts. Although now I am working on how to create an access token programmatically.
using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Learning_TOM { internal class ReportClone { static readonly HttpClient client = new HttpClient(); public static async Task callReportCloneRestAPI() { try { var reportName = "REPORT_NAME"; var reportID = "REPORT_ID"; var targetModelID = "MODEL_ID"; var targetWorkspaceID = "WORKSPACE_ID"; var bearer = "TOKEN"; var url = $"https://api.powerbi.com/v1.0/myorg/reports/{reportID}/Clone"; var data = "{\r\n \"name\": \"" + reportName + "\",\r\n \"targetModelId\": \"" + targetModelID + "\",\r\n \"targetWorkspaceId\": \"" + targetWorkspaceID + "\"\r\n}"; client.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearer); var content = new StringContent(data, Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error copying reports: " + ex.Message); Console.ResetColor(); } } } }
lbendlin
Super User
2 years agoLook at reports in notebooks. They use some AI functions for a basic report layout based on the provided data.
Announcing Power BI in Jupyter notebooks | Microsoft Power BI Blog | Microsoft Power BI
- Don-Bot2 years ago
Helper V
Thank you for the reply lbendlin I was actually able to accomplish this utilizing REST API scripts. Although now I am working on how to create an access token programmatically.
using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Learning_TOM { internal class ReportClone { static readonly HttpClient client = new HttpClient(); public static async Task callReportCloneRestAPI() { try { var reportName = "REPORT_NAME"; var reportID = "REPORT_ID"; var targetModelID = "MODEL_ID"; var targetWorkspaceID = "WORKSPACE_ID"; var bearer = "TOKEN"; var url = $"https://api.powerbi.com/v1.0/myorg/reports/{reportID}/Clone"; var data = "{\r\n \"name\": \"" + reportName + "\",\r\n \"targetModelId\": \"" + targetModelID + "\",\r\n \"targetWorkspaceId\": \"" + targetWorkspaceID + "\"\r\n}"; client.DefaultRequestHeaders.Add("Authorization", "Bearer " + bearer); var content = new StringContent(data, Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error copying reports: " + ex.Message); Console.ResetColor(); } } } }- lbendlin2 years ago
Super User
I thought your request was for creating a report from scratch, rather than cloning a report.