Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hey Guys,
I'm working on integrating Power BI Embedded report into my web application, I followed this article to create a workspace and reports in Azure power Bi Embedded end.
Is there a way to import pbix files via Microsoft Azure instead of running the console app utility?
Any help is appreciated.
Thanks,
Solved! Go to Solution.
@najoua wrote:
Hey Guys,
I'm working on integrating Power BI Embedded report into my web application, I followed this article to create a workspace and reports in Azure power Bi Embedded end.
Is there a way to import pbix files via Microsoft Azure instead of running the console app utility?
Any help is appreciated.
Thanks,
AFAIK, there's no such a Azure service. The console app is just one utility for ones who don't know coding. Since you're working on integrating PBI Embedded report into your own web app, so I suppose that you're a developer guy who has coding skills? Then you can reference below C# code to call the POST API. With below demo, you could create any toolkit by yourself to import pbix file if you don't like the console utility.
using System; using System.Net; using System.IO; namespace PBIGettingStarted { class Program { //Access key for app token private static string accessKey = "myaccesskey"; //Power BI app token values private static string workspaceCollectionName = "myworkspace"; private static string workspaceId = "myworkspaceid"; private static string pbixFileName = "AdventureWorksdddd.pbix"; static void Main(string[] args) { //Imports uri var uri = String.Format ("https://api.powerbi.com/v1.0/collections/{0}/workspaces/{1}/imports?datasetDisplayName=SampleImport", workspaceCollectionName, workspaceId); //PBIX file to import DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); string fileName = @"C:\test\mytest.pbix"; //Create web request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); //Import Request format: // Header: // Content - Type: multipart / form - data; ----------BOUNDARY // Authorization: AppToken // Body: // ----------BOUNDARY // Content - Disposition: form - data; filename = "{pbix file}.pbix" // Content - Type: application / octet – stream //Define POST request.Method = "POST"; request.UseDefaultCredentials = true; //Header // Boundary string boundary = "----------BOUNDARY"; byte[] boundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); // Content - Type request.ContentType = "multipart/form-data; boundary=" + boundary; // Authorization - Use AppToken jwt for Authorization header request.Headers.Add("Authorization", String.Format("AppKey {0}", accessKey)); //Body string bodyTemplate = "Content-Disposition: form-data; filename=\"{0}\"\r\nContent-Type: application / octet - stream\r\n\r\n"; string body = string.Format(bodyTemplate, fileName); byte[] bodyBytes = System.Text.Encoding.UTF8.GetBytes(body); //Get request stream using (Stream rs = request.GetRequestStream()) { rs.Write(boundaryBytes, 0, boundaryBytes.Length); rs.Write(bodyBytes, 0, bodyBytes.Length); using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { rs.Write(buffer, 0, bytesRead); } } byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); rs.Write(trailer, 0, trailer.Length); } //Get response using (HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse) { //If Import succeeds, StatusCode = Accepted var responseStatusCode = response.StatusCode.ToString(); } } } }
Hey Guys,
I'm working on integrating Power BI Embedded report into my web application, I followed this article to create a workspace and reports in Azure power Bi Embedded end.
Is there a way to import pbix files via Microsoft Azure instead of running the console app utility?
Any help is appreciated.
Thanks,
@najoua wrote:
Hey Guys,
I'm working on integrating Power BI Embedded report into my web application, I followed this article to create a workspace and reports in Azure power Bi Embedded end.
Is there a way to import pbix files via Microsoft Azure instead of running the console app utility?
Any help is appreciated.
Thanks,
AFAIK, there's no such a Azure service. The console app is just one utility for ones who don't know coding. Since you're working on integrating PBI Embedded report into your own web app, so I suppose that you're a developer guy who has coding skills? Then you can reference below C# code to call the POST API. With below demo, you could create any toolkit by yourself to import pbix file if you don't like the console utility.
using System; using System.Net; using System.IO; namespace PBIGettingStarted { class Program { //Access key for app token private static string accessKey = "myaccesskey"; //Power BI app token values private static string workspaceCollectionName = "myworkspace"; private static string workspaceId = "myworkspaceid"; private static string pbixFileName = "AdventureWorksdddd.pbix"; static void Main(string[] args) { //Imports uri var uri = String.Format ("https://api.powerbi.com/v1.0/collections/{0}/workspaces/{1}/imports?datasetDisplayName=SampleImport", workspaceCollectionName, workspaceId); //PBIX file to import DirectoryInfo di = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); string fileName = @"C:\test\mytest.pbix"; //Create web request HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); //Import Request format: // Header: // Content - Type: multipart / form - data; ----------BOUNDARY // Authorization: AppToken // Body: // ----------BOUNDARY // Content - Disposition: form - data; filename = "{pbix file}.pbix" // Content - Type: application / octet – stream //Define POST request.Method = "POST"; request.UseDefaultCredentials = true; //Header // Boundary string boundary = "----------BOUNDARY"; byte[] boundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); // Content - Type request.ContentType = "multipart/form-data; boundary=" + boundary; // Authorization - Use AppToken jwt for Authorization header request.Headers.Add("Authorization", String.Format("AppKey {0}", accessKey)); //Body string bodyTemplate = "Content-Disposition: form-data; filename=\"{0}\"\r\nContent-Type: application / octet - stream\r\n\r\n"; string body = string.Format(bodyTemplate, fileName); byte[] bodyBytes = System.Text.Encoding.UTF8.GetBytes(body); //Get request stream using (Stream rs = request.GetRequestStream()) { rs.Write(boundaryBytes, 0, boundaryBytes.Length); rs.Write(bodyBytes, 0, bodyBytes.Length); using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { rs.Write(buffer, 0, bytesRead); } } byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); rs.Write(trailer, 0, trailer.Length); } //Get response using (HttpWebResponse response = request.GetResponse() as System.Net.HttpWebResponse) { //If Import succeeds, StatusCode = Accepted var responseStatusCode = response.StatusCode.ToString(); } } } }
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
16 | |
2 | |
2 | |
1 | |
1 |