Shared Data Model for PowerBI and Other Reporting Tools

Share on facebook
Share on twitter
Share on linkedin
An Overview of the Materialized View of Snowflake
Explore the Materialized View of Snowflake in detail. Read the blog to learn it in indepth.
Snowflake Data Exchange
Securely Transferring Sensitive Data Between Clouds Read the customer story of Lyftrondata and explore.


There are many tools on the market which provide us multiple ways of creating reports. It’s common that a company “A” prefers one reporting solution over the other, while company “B” has a completely opposite experience. The same goes for people – we also have our favorites – one wants to see a report prepared with PowerBI while the other would like to use Excel, because they are more familiar with one over the other. Every time we need a report, we need to prepare data first.
Analytical and data visualization tools are different and require different skills to prepare data for reporting or analysis. It costs time, requires tool-specific knowledge and of course provides redundant work in a layer between a data source and a reporting tool. How about having the shared data model prepared beforehand with a data virtualization tool like Lyftrondata and reused? Let’s have a look first at how it can look like when the whole setup is done with PowerBI. Then we will try to do the same but with Lyftrondata as a virtual data layer.

Goal:  We want to see a simple report with currency rates concerning the Polish currency – Polish złoty (PLN). We would like to have a possibility to see which countries make use of which currency.

PowerBi approach

First, we need to import sources to our report. On the source view to the right, we can find multiple steps that have been applied, before the whole query is ready to process. The source is in JSON with a child array of rates (record in PowerBI) – that is why there are transposing, merging or expanding steps on the list.
The second source also requires some rework. A few columns are not needed. Also, countries without a currency have to be removed.
Finally, we have got two queries ready. CurrencyNames is a source which is to be merged into the other one:
The next one, CurrencyRatesPLNToday has been extended with the Country column. Now this one becomes the real source of our future report:
Having all in place we can get the final report rendered in PowerBI:
Our report is a map of countries and a table with currency rates. If a currency code is selected, the map shows all countries that make use of the selected currency. The steps above show how the finished, PowerBI-specific solution looks like. The result and the process itself is not sophisticated, but it has some drawbacks already:
  • It’s not possible to reuse data preparation steps in another reporting tool. If we want to use another tool, we have to implement all the steps again or move processing into Data Warehouse and expose data from there.
  • We are forced to import all data used from all the data sources into the tool because it is not possible to use data from more than one source in a direct-query mode in PowerBI. In other words, if you have a lot of data at your source, it may be challenging to process a high volume of data.

Let’s see if we can find another path to success, but this time we will make use of data virtualization capabilities of Lyftrondata.

A Lyftrondata-based approach utilizing data virtualization

Similar to PowerBI, at the beginning, we need to establish connections to data sources. Let’s connect to Fixer.IO source: we need to select JSON data provider and enter URL and JSON path to the repeating element, which in our case is just “$” (the root):

Recent Posts