From usability to performance, analytics to architecture; as report developers, the user experience design (UX) of your data model is quickly becoming more important than the pretty pictures that sit on top of it. This session will concentrate on the design decisions needed to increase the usage of your reports.
1. Not quite what I was expecting
I went ahead and built my own report instead
Missed the mark
PAINFULLY SLOWDifficult to navigate
I’ll never use those features
Something like beforeI didn’t want you to change the way it’s always been done
3. Premier Field Engineer - Data & AI | St Louis, MO
Workshops:
WorkshopPLUS - Business Analytics with Power BI
WorkshopPLUS - Advanced Data Analytics with Power BI
Professional:
Microsoft Certified Solutions Expert: Data Management and Analytics
Microsoft Certified Solutions Associate: BI Reporting (Excel, Power BI)
Microsoft Certified Associate: Azure AI Engineer
Microsoft Certified Trainer
Microsoft Technology Associate: Python
Microsoft Office Expert & Specialist: Excel, Access
Microsoft #HowWeExcel Contest Winner
Co-Organizer of the St Louis Power BI User Group #STLPBIUG
Personal:
Cats, Professional Wrestling, Data
Cubs Fan. Blackhawks Fan. Pineapple Pizza Fan. Probably a Monster.
4. USER EXPERIENCE (UX)
Refers to a person's emotions and attitudes about using a
product, system or service. It includes the practical,
experiential, affective, meaningful and valuable aspects
of human–computer interaction and product ownership.
Additionally, it includes a person’s perception of system aspects
such as ease of use, efficiency and utility.
Source (Wikipedia)
5. SESSION OBJECTIVES
1. Readability allows for discovery. (Ease of Use)
2. Performance considerations. (Efficiency)
3. Trust the abilities of your end users to learn. (Utility)
10. let
Source = #table(
type table [CUSTOMER_ID = Int64.Type, CUSTOMER_NAME = text, CUSTOMER_CITY = text, CUSTOMER_STATE = text],
{
{1, "Bob Smith", "Rockford", "IL"},
{2, "Randy Savage", "St Louis", "MO"},
{3, "Lucy Davis", "Lansing", "MI"}
}
),
// Replaces Underscore Field Name Values and Converts to Proper Casing
ReplaceUnderscores = Table.TransformColumnNames(Source,
each Text.Proper(
Text.Replace( _ , "_", " "
)))
in
ReplaceUnderscores
In the above let expression we transform our column names replacing underscores with a space and proper
casing with each loop. The underscore character is used to iterate thru each item in our column headers
collection.
11. let
Source = #table(
type table [CustomerID = Int64.Type, FullName = text, StreetAddress = text, CustomerCity = text, CustomerState = text],
{
{1, "Bob Smith", "123 Main St.", "Rockford", "IL"},
…
}
),
/*
Splits Column Header Characters When Transitioning From Lower Case to Upper Case to a list of Values
Wrapped in a Text Combine to Combine all List Values to a Scalar Text Value
*/
SplitByCharacter = Table.TransformColumnNames(Source,
each Text.Combine(
Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})( _ )
, " ")
)
in
SplitByCharacter
In the above let expression we transform our column names splitting each text into a list by character by
transition whenever lower-cased characters in a list are followed by upper-cased characters in a list. The
split lists of text are combined including a space between each list item.
14. FILTERS/JOINS
TRANSFORMATIONS
COLUMN
SELECTION
Transformations that can achieve query folding:
Relational data source transformations that can be query folded are
those that can be written as a single SELECT statement. A SELECT
statement can be constructed with appropriate WHERE, GROUP BY
and JOIN clauses. It can also contain column expressions
(calculations) that use common built-in functions supported by SQL
databases.
Transformations that prevent query folding:
Merging or appending queries based on different sources. The use
of complex logic that have no equivalent functions in the data
source.
17. BEHIND THE CURTAIN
1. Vertipaq Engine, Run Length Encoding, Optimal Sort Order.
2. You Can Get Kicked Out of Your Own Party.
3. Segmentation. Compression. Memory Consumption.
19. TABLEColor Value
Red 10
Blue 15
Green 13
Green 25
Yellow 31
Yellow 41
Red 11
Blue 14
Purple 21
Orange 6
Red 15
Follow Along: Colors
20. DICTIONARYID Color Value
0 Red 10
1 Blue 15
2 Green 13
2 Green 25
3 Yellow 31
3 Yellow 41
0 Red 11
1 Blue 14
4 Purple 21
5 Orange 6
0 Red 15
Dictionary ID Color
0 Red
1 Blue
2 Green
3 Yellow
4 Purple
5 Orange
21. DICTIONARYID Color Value
0 Red 10
1 Blue 15
2 Green 13
2 Green 25
3 Yellow 31
3 Yellow 41
0 Red 11
1 Blue 14
4 Purple 21
5 Orange 6
0 Red 15
Dictionary ID Color
0 Red
1 Blue
2 Green
3 Yellow
4 Purple
5 Orange
22. COLUMN ENCODING
ID Value
0 10
1 15
2 13
2 25
3 31
3 41
0 11
1 14
4 21
5 6
0 15
Dictionary ID Color
0 Red
1 Blue
2 Green
3 Yellow
4 Purple
5 Orange
23. EVALUATION
ID Value
0 10
1 15
2 13
2 25
3 31
3 41
0 11
1 14
4 21
5 6
0 15
Dictionary ID Color Value (SUM)
0 Red 36
1 Blue 29
2 Green 38
3 Yellow 72
4 Purple 21
5 Orange 6
24. OPTIMAL SORT ORDER
ID Value
0 10
0 11
0 15
1 15
1 14
2 13
2 25
3 31
3 41
4 21
5 6
Dictionary ID Color
0 Red
1 Blue
2 Green
3 Yellow
4 Purple
5 Orange
25. RUN LENGTH ENCODING
ID Value
0 10
0 11
0 15
1 15
1 14
2 13
2 25
3 31
3 41
4 21
5 6
Dictionary ID Color Start Count
0 Red 1 3
1 Blue 4 2
2 Green 6 2
3 Yellow 8 2
4 Purple 10 1
5 Orange 11 1
Dictionary ID Color
0 Red
1 Blue
2 Green
3 Yellow
4 Purple
5 Orange
26. ID Value
0 10
0 11
0 15
1 15
1 14
2 13
2 25
3 31
3 41
4 21
5 6
EVALUATION
Dictionary ID Color Value (SUM)
0 Red 36
1 Blue 29
2 Green 38
3 Yellow 72
4 Purple 21
5 Orange 6
28. BEHIND THE CURTAIN
1. Vertipaq Engine, Run Length Encoding, Auto Sort.
2. You Can Get Kicked Out of Your Own Party.
3. Segmentation. Compression. Memory Consumption.
29. CARDINALITY
1. High-cardinality: columns with values that are very
uncommon or unique.
• DateTime
• Unique IDs (Not Needed For Relationships)
• Text (Freeform Fields)
• Numbers (Floating Point Precision)
2. Low-cardinality: columns with relatively few unique values.
• Date (365 Days a Year)
• Time (86,400 Seconds)
• True / False
• Currency (4 Digits after Decimal)
31. BEHIND THE CURTAIN
1. Vertipaq Engine, Run Length Encoding, Auto Sort.
2. You Can Get Kicked Out of Your Own Party.
3. Segmentation. Compression.
32. RESOURCE CONSUMPTION
1M 1M 1M … Model
Compressed
Segment
Compressed
Segment
Data Model
(Hierarchies,
Calculated Columns,
Relationships)
Compressed
Segment
Compressed
Segment
Compressed
Segment
…
CPU
MEMORY
CPU
33. TAKEAWAYS
1. Only bring in what you need.
2. DateTime = BAD; unless necessary.
3. Calculated Column = POST compression.
• Perform Calculations Close to the Source (SQL or within Power Query)
36. END USE
1. Nothing is Free. Resource Consumption.
2. Be cautious with preview features.
3. Don’t assume your audience can’t learn.
4. Consistency. Consistency. Consistency.
5. Don’t risk your brand over someone else’s need for a pie chart.
6. Champion modern analytics within your organization.
• By 2020, 50% of analytical queries either will be generated via search, natural language processing or voice, or will be
automatically generated. (Gartner)