Clone Power BI reports between tenants using Power BI REST API - powerbi

I have 2 workspaces:
Workspace A hosted on tenant A: Vendor workspace which contains the product PBIX. "Golden workspace".
Workspace B: Client workspace, hosted on tenants B, client workspace.
On workspace A I have :
Dataset + report
A Report which is connected to the dataset above.
I want to copy the content workspace A to workspace B using the rest API.
(I am using python).
I am using PPU or Pro license, I don't have premium capacity.
I want to copy the content workspace A to workspace B using the rest API.
(I am using python).
I am pretty familiar with Power BI service principal profiles and used them several times.
a legit solution can be to import PBIX files to workspace B, I don't must to clone workspace A.
My final goal is to create a workflow like the one on this line #23:14
Thank you, Tal

Related

Use Multiple google bigquery service accounts in Power BI (Service & Desktop)

I'm trying to configure multiple Dataset in Power BI Service to use different service accounts for different projects GCP.
Every time i publish a new dataset using a different google service account , it is always associated with the previous bigquery datasource overriding the credentials.
Fits this use case :
Have same issue, microsoft says it is products limitation. and suggested to use Power BI Data Gateway.
it works fine with power bi data gateway.
I do understand a data gateway is not required as GCP is Cloud source but we have considered this as a interim setup.
For each dashboard you have to set "Confidentiality level setting for this data source" to "Private".
I do have the same issue.
Trying to apply your solution, unfortunately this is not working. when changing project A cred, it Changes project B cred.
Additionally, I am wondering how would it be if we were tyring to get 2 projects on the same dataset
Best Regard
Olivier LN (LinkedIn)

Is there a way to publish a new report to a workspace with existing reports and an existing dataset?

I use PowerBI Embedded to present several reports to end-users. We have 3 environments and every environment is configured to it's own workspace so: QA envi -> QA workspace, TEST env -> TEST workspace...
My PowerBI setup is made of 2 deployment pipelines, 3 workspaces each - DEV, TEST, and PROD - and each workspace has similar amount of reports. Every dataset has the same name and DirectQuery a table with the same name but the datasets in my QA and TEST workspaces DirectQuery to a QA server while my PROD dataset DirectQuery a PROD server.
The process I take to make changes to a report are download the report .pbix from the qa server, make my changes, publish it, check QA environment, if good promote the report through the deployment pipeline to the TEST workspace, test again, and finally through to the PROD workspace.
If I need to make changes to the table the DirectQuery uses I make my alterations to the table which is created by a StoredProcedure. Run the sp in the qa db, open the dataset in the qa workspace on PBID refresh, validate the new fields are visible format the data if necessary and proceed to publish it back to my QA workspace making sure I'm prompted to 'replace' my existing dataset.
My goal is to publish a new report using the existing dataset in the QA workspace. I thought I could create a report in PBIS from the dataset in the workspace, download the .pbix, make my report and then publish. However, when doing that what actually happened was I'd end up with my new report and a new dataset with identical names and being unable to delete the dataset without deleting my new report.
How can I get around this?
Instead of creating the report in PBIS, begin by making the report in PBID.
Open PBI Desktop and select 'Get Data'. Select the Dataset from the workspace you want the new report to be in. Create your report and save it then proceed to publish it to your desired workspace.
For some reason this whole process was not clear cut and easy to understand. The documentation does not list this limitation.
Perhaps this limitation is a product of the current design of pipelines, workspaces, and datasets. Have not been using PowerBI for more than 4 months so any advice is welcome.

How to deploy Power BI reports and connect them to a single Power BI Dataset

As far as I know, deploying a Power BI report from Power BI Desktop results in two items, the report itself and the dataset. When deploying a new report using the same dataset, will deploy the new report and a second copy of the same dataset in Power BI Service. That is not what I wanted. To not confuse end users and other, I want only an unique dataset deployed.
I want to make use of Azure Devops deploying to Power BI Service in a Dev, Test and Prod way. The dataset will be an azure analysis services data model, but the principle should be the same. I need to reduce the dataset to be exactly one and all reports must relate to that data model. I have heard of a Rest API or powershell scripting that can come to a rescue here.
So if any of you have done this or know of a good article that describes how to do this, I would be grateful.
Regards Geir
The best option is to separate the Power BI report in the frontend and the backend. You create a file purely for the dataset if you are importing, no reports created on it. You can then create the reports, using the service connection to the dataset, or with Power BI desktop, in the connection to Power BI Dataset option. Both will use 'Live Connection' mode, so you cannot add any other data sources to the model, for example bring in a CSV file or SQL database.
If you are connecting to an Azure Analysis Service data model, you can use this approach, however as it is only a connection only, not a full fat dataset, it should not be an issue to have copies of the dataset, as it is just the connection. Having copies of the dataset is only an issue if you are importing data, then it is best to move things to data flows, and use the same front/back end method, and the planning around the scheduling of the dataflows then datasets
You can use the REST API to move reports and the datasets that they connect to, and move items to new workspaces. If you have Power BI Premium that has a life cycle tool to move items between dev/test/live workspaces
If you create a report in desktop and choose 'Power BI Dataset' as live connection to work over it - when you upload the report to the same workspace, it will only upload the report and connect to the same dataset
https://radacad.com/power-bi-shared-datasets-what-is-it-how-does-it-work-and-why-should-you-care#:~:text=A%20shared%20dataset%20is%20a%20dataset%20that%20shared%20between%20multiple,tenant%20in%20Power%20BI%20environment.

Portability of Power Bi reports containing power bi datasets

I'm using Power bi service along with power bi desktop version.
What I'd like is to spend less time on setting up UI for my charts.
Let's say I have multiple accounts with power bi datasets in them (hybrid dataset to be able to display data in real-time).
Currently I have to create report on each of them, set up charts etc. I expected to create pbix file once and then just publish it to different accounts. But when it comes to reports bound with power bi datasets, it is no longer possible. Even if account already has exactly the same hybrid dataset.
Any ideas on how to implement portable reports?
If I got your point correctly, you have multiple accounts and in each of them you have the same dataset. You want to create open report, which you will publish to all of these accounts. I do not understand why do you need to create a new report for each of your accounts. Why not just change the data source of your report prior publishing it to each of these accounts?
Also it is not clear, how these datasets are created. I think there are two possible options here - these datasets are published with your report, or they are existing datasets not published with this report.
In the first case, just design your report, getting data from your database, and publish the report in each of your accounts. You could change the data source prior every publishing, if your different accounts/datasets should get data from different databases.
In the second case, when you design your report, do not get data from the database, but connect the report to the Power BI Service itself:
and pick the existing dataset:
Before each publish change the account you are logged in, change the data source of the report and select the dataset from the corresponding account. This way when publishing the report, the dataset will not be overwritten, but will be shared between this report and any other report who uses it.
To change the data source of your report, in the drop down of "Edit Queries" button, select "Data source settings" and then click "Change Source..." button.
In both ways you will design your report only once, but it will be published in different accounts using different data.
Are all of your users in the same tennant/company?
If so, create a workspace. Create your report which uses another power BI dataset as its source. Turn on row level permissions. Share the new report to all people. They will only see the data relevant to them and you will only need to maintain one report.
Row level security in power bi
I have used Power BI Service with Multiple Reports/Users in Same Organization with Shared Data Sources using different Reports for each user using the same Datasets.
From your Admin Account (eg. it#contoso.org) Publish all the Reports and once its working from Online (after configuring Gateway and DataSources). Download the PBIX Report File from Power BI Online.
Using Admin Account go to Dataset Settings and Allow the users who will use reports using this datasets to Publish Reports using this Dataset (further security to use dataset i.e. Even if they get the source PBIX File and upload it they wont get access to the data).
Login using the Users Power BI Account (must be within Same Organization, eg. contoso.org) then upload the Same PBIX Report File which was downloaded Earlier from Power BI Web Portal (do not publish via the Desktop App), its more efficient and cleaner on Accessing the Data through Web/Devices.
Now the reports as already they are using the same shared Datasets, the reports will be running fine and the data source settings only have to be done once from Admin User.
And for any further databases Administration only One Admin Account need to be used to access and modify the Data Source Settings.

Azure PowerBI Embedded - unable to delete workspace ID

I have a account in azure Power BI embedded workspace and created workspace ID with in workspace collection.fist time created sample workspace ID , now I want to remove sample workspace id ,how to delete workspace id in C#?
This functionality is not available yet. It will be added at some point in the future