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(); } } } }
Don-Bot
Helper V
2 years agoThank 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 agoI thought your request was for creating a report from scratch, rather than cloning a report.