As Buck Woody notes here, when you are exploring a new data set it can be useful calculate some basic descriptive statistics. One new M function that appeared in Power BI recently can help you to do this: Table.Profile(). This function takes a value of type table and returns a table that displays, for each column in the original table, the minimum, maximum, average, standard deviation, count of values, count of null values and count of distinct values (but no mode or median?). So, given the following table:
…the Table.Profile() function returns the following table:
Of course you could create something similar yourself fairly easily (as I have done for a customer in the past), and it’s not as sophisticated as the Quick Insights feature, but it’s handy to have a single function that does all this.
You could even use it on all of the tables in a SQL Server database. Since the Sql.Database() function returns a table containing all of the tables and views in a database, like so:
All you need to do to use Table.Profile() on all these tables is to add a new custom column that calls this function for every value in the Data column:
Then finally expand the new custom column and you’ll see the stats for every column in every table:
Here’s the code:
let Source = Sql.Database("localhost", "adventure works dw"), #"Added Custom" = Table.AddColumn(Source, "Profile", each Table.Profile([Data])), #"Expanded Profile" = Table.ExpandTableColumn(#"Added Custom", "Profile", {"Column", "Min", "Max", "Average", "StandardDeviation", "Count", "NullCount", "DistinctCount"}, {"Column", "Min", "Max", "Average", "StandardDeviation", "Count", "NullCount", "DistinctCount"}) in #"Expanded Profile"
