Power BI: Data Modelling

Comparison of Features Available Per Tier

Feature/Capability   Power  BI Free Power BI Pro Power BI Premium
Create datasets and reports in Power BI Desktop  x  x  x
Publish datasets and reports to Power BI Service  x  x  x
Publish datasets and reports to Power BI Report Server  x
Create dashboard  x  x  x
(compilation of visuals from one or more reports)  x  x  x
Q&A natural language queries x  x  x
Data alerts  x  x  x
E-mail subscriptions (“subscribe”)  x  x
Export to CSV, Excel  x  x  x
Export to PowerPoint  x  x  x
Analyze in Excel (connectivity to a published dataset from Excel for creating reports based on an existing dataset)  x  x
Power BI Service Live Connection (connectivity to a published dataset from Power BI Desktop for creating reports based on an existing dataset-requires )  x  x
Access to all data sources (unrestricted)  x  x  x
Scheduled data refresh via On-Premises Gateway in Personal Mode Up to 8x/day On-Premises
Data Gateway Recommended
Scheduled data refresh via On-Premises Data Gateway Up to 8x/day Up to 8x/day Up to 48x/day
DirectQuery and Analysis Services Live Connection via On-Premises Data Gateway  x  x  x
Use of streaming datasets  x  x  x
Use of custom visuals from Office Store  x  x  x
Sharing read-only dashboard with individual colleagues (peer-to-peer)  x  x
Sharing read-only dashboard with an external user  x  x
Create and publish Apps  x  x
Create and publish Organizational Content Packs  x  x
Publish to Web (public report distribution)  x  x  x
Power BI Mobile Apps  x  x  x
Cortana/Windows integration for report rendering  x  x  x
Maximum size of an imported dataset (*=future size increases over time) 1GB per file 1GB per file 1GB per file*
Maximum data storage quota 10GB per user 10GB per user 100TB per capacity
Multi-tenant service  x  x
Isolated capacity  x
 x
Unlimited # of consumers (view-only users) of Apps  x
Dedicated hardware capacity with scalability on-demand  x
Use of Power BI Report Server for on-premises deployment scenarios  x
APIs for embedding reports in an internal custom application  x  x
Power BI Embedded for embedding reports in an external custom application  x
Third party SaaS Apps (from AppSource)  x  x  x
Share queries in Azure Data Catalog  x  x
Integration with Office 365 Groups  x  x
Integration with Azure Active Directory  x  x  x

Power BI and business application platform

Creation translation system of labels with Power BI

In an Power BI Desktop data models, you can’t do multiple translations of a caption to provide a culture-specific. Today we will see For how perform translations Power BI models.
A translation consists of a translated caption for the name of fields in the table a binding to a column that provides data values in the target language. You can have multiple translations. There is no theoretical limit on the number of translations you can embed in model.
To perform this using:

In this post we get data from three csv file: product, sales territory  and sales from AdventureWorks. We will create a model in the file model.xlsx and we will create the dictionary in the Dictionary.xlsx. See below the file in the folder

So, we have a series of label, and want to look them up in this table (lookup table) in the dictionary.xlsx with two columns one for it-IT label and one for en-US label, see below

Now we will import into Power Query into model.xlsx file then territory’s lookup table

Now we will import into Power Query into model.xlsx file then product’s table from SalesTerritory.csv file. The objective is change the label with a correct translation for examples SalesTerritoryRegion change in Region or in Italian language “Regione“. After importing it we will can observed in power query the following structure:

Now we will create a query for perform the translation. The M formulas is:

let
    Source = Csv.Document(File.Contents(PathFile & "\SalesTerritory.csv"),[Delimiter=",", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Removed Columns2" = Table.RemoveColumns(Source,{"Column2", "Column6"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns2",{{"Column3", "Column2"}, {"Column4", "Column3"}, {"Column5", "Column4"}}),
    #"Kept First Rows" = Table.FirstN(#"Renamed Columns",1),
    #"Removed Top Rows" = Table.Skip(#"Renamed Columns",1),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Top Rows",{{"Column1", type number}}),
    #"Transposed Table" = Table.Transpose(#"Kept First Rows"),
    #"Invoked Custom Function" = Table.AddColumn(#"Transposed Table", "lkpLabel", each lkpLabel([Column1], lbTerritory, 2, false)),
    #"Removed Columns" = Table.RemoveColumns(#"Invoked Custom Function",{"Column1"}),
    #"Transposed Table1" = Table.Transpose(#"Removed Columns"),
    #"Table Combine" = Table.Combine({#"Transposed Table1",#"Removed Top Rows"}),
    #"Promoted Headers" = Table.PromoteHeaders( #"Table Combine", [PromoteAllScalars=true])
in
    #"Promoted Headers"

Begin analyzing the formula from row 4 and 5. In this two row set two variables “Kept First Rows” e “Removed Top Rows”  the first contains the first line where there are labels that I have to replace

the second contains the all line that they will need later

The First result (“Kept First Rows“) is now ready to be transposed using the Table.Transpose() function

Here is the key step where the call the lkpLabel  function for create a colum with the new translate label. This function use 4 parameters:

    #"Invoked Custom Function" = Table.AddColumn(#"Transposed Table", "lkpLabel", each lkpLabel([Column1], lbTerritory, 2, false))
  • Lookup_value  => the value of the column which must be converted ([Column1])
  • Table array => table array is the lookup table (lbTerritory)
  • column = >number of column for lookup
  • approximate_match => it’s optional

and see bleow the new column (lkpLabel):

Once we got the new value, transpose the table again to restore the headers as a row


So now remains to connect the new header with the body of the table that contains all rows and that we previously saved to a variable “Removed Top Rows” . The table with the single header row needs to be combined with the original table with Table.Combine function

    #"Table Combine" = Table.Combine({#"Transposed Table1",#"Removed Top Rows"})

Once the tables are combined, you can see the altered headers to promote the first row to headers using the Table.PromoteHeaders() function.

   #"Promoted Headers" = Table.PromoteHeaders( #"Table Combine", [PromoteAllScalars=true])


you can download the folder with all of the demo file from this link.

Optimizing DAX

SQL Saturday 589 Interview

Tweet SQL Saturday 589 with Power BI

Basic Data Modelling with DAX by Marco Pozzan on Parma’s Univeristy

Power BI: basic data modelling with DAX by Marco Pozzan from UGISS on Vimeo.

Cloud Conference 2016 My video on Power BI + Flow

My new video on Dax Fundamentals

Switch to our mobile site