We recently had an issue where a shared dataset (pbix) had been set up over a SQL Database.
This was then published to Power BI
A new pbix was created.
Power Platform – Power BI datasets was chosen and the shared dataset was selected. Then reports were created and published to Service.
An App was set up and a user was added to view the report.
However when they came to view the report, they would see the report but not the data. All they had was messages about not having access to the data.
At first we struggled to understand what the problem was and then it started to add up.
Previously we had worked on a project with dataflows and multiple datasets being used for one report. So we have the following ticked
This worked great for this specific project. We were in Premium. There were dataflows.
However, this project is just a test report, not set up in Premium and without dataflows.
The above setting is a blanket setting that sets every pbix to you create from Live Query to Direct Query
Live Query is where it live connects to just one data set only and then when you publish your report over the data set it uses that initial shared dataset and doesn’t create a new data set because the DAX, model etc. is all set up in that specific data set.
Direct Query is a slight change. You Direct Query the data source (the data set) and crucially you can also direct Query other data sets, even other data sources like data bases and flat files all together. But that Shared Data set is also direct querying its data source.
Direct query is a good one for real time analysis from a transactional database. But many DAX expressions aren’t available over Direct Query straight over a database. For example, time based intelligence DAX. So the reports are much simpler in Power BI. And more complex to set up at the database end for the users.
In this instance, the reason we have issues is because there is no dataflow at the start of the Power BI process.
If you are using Direct Query over a dataflow, the data is imported into Power BI into the dataflow. The dataset Direct Queries the Dataflow. Your users are then added to the workspace App and they can see the data because they have access to the dataflow.
Without the dataflow, your data set is calling data directly as Direct Query. Which is essentially where Power BI always calls from the data base and not from the Power BI Columnar data store.
So the users were opening up the App, and trying to access data straight from the database because there is no dataflow holding the data. Because the user doesn’t have access to the database, there is no data to be seen.
So the issue here I think is that Power BI should be allowing us to switch this option on and off, depending up the choices we make on set up. Not just have it as a blanket option over ever single report like it does now.
Without dataflows you want to Live connect to the shared dataset. Not Direct Query right down to the datasource.
With a dataflow its fine to Direct Query because the users have access to the dataflow data in the workspace