OPTIMIZINGDAX - Enterprise DNA
[Pages:8]OPTIMIZING
DAX
General Guidelines & Best Practices
DATA MODEL
Do not import columns you do not need
Star schema is always best - Resist the urge to normalize your dimension tables - Remember: Columns will be encoded and compressed, so you can keep values "as-is" an no need to create separate dimensions - Avoid many-to-many relationships if possible
Cardinality (unique values) is of the utmost importance - aim to minimize as much as possible - Split columns (i.e. DateTime should always be a column for Date and one for Time). This should be done at the source, not after being imported! - Reduce exactness of data if business requirements allow - Convert to integers if possible
Relationship size is based on the cardinality of the Primary Key - not the attribute used in filtering. Cardinality determines the speed.
Find and correct Referential Integrity issues (missing keys in a Dimension table that are present in the Fact table)
1
Discover Enterprise DNA's DAX Courses
DATA MODEL
Calculated Columns: - Try to compute at the source if possible. Can use DAX to create calculated
columns but could get better compression if they are done at the source - Do not store partial calculations as they take up memory - Complex filters are good candidates for calculated columns
Everything happens in columns (encoding, compression, scanning, etc.)
2
Discover Enterprise DNA's DAX Courses
OPTIMIZING
First and foremost: reduce Formula Engine (FE) and increase Storage Engine (SE) usage
Try to reduce the amount of materialization of data as much as possible - Physical Query plan has a "Records" column. This number should be as close to the number of the output query as possible.
3
Start at the "Server Timings" tab in DAX Studio and the "Duration" column
Try to mitigate CallBackDataID because queries with CallBackDataID:
- Are slower than pure SE queries - Remove the data caching
feature of the SE - However, if the "Duration" is small no need to worry - Date functions (e.g., LAST Date), Math functions (e.g., ROUND), Error Functions
Always clear the cache before running tests. Can keep the cache warm to run further test if need be, but always start with a cold
Look at the # Records being given to the FE from the SE in the PQP. The number of records here should be as close to the amount of records required for the output. If the Records number is very high this can be a sign of early materialization. Aim for late materialization!
Discover Enterprise DNA's DAX Courses
DATA MEASURES
Avoid measures (or re-write) that have CallBackDataID
Try to breakout complex IF statements into separate measures using CALCULATE.
Be careful with context transition in an iterator. Remember: a measure has an implied calculate wrapped around which invokes context transition. Variables help with readability/debugging/performance. Remember: variables are computed once where they are defined, not where they are used. Also, that are immutable (cannot be changed) Use CALCULATE/CALCULATETABLE over FILTER when possible (look for a "WHERE" clause in the SE Query
Use SUMMARIZE to group and ADDCOLUMNS to add calculated columns to that table
Use HASONEFILTER/HASONEVALUE to detect filters
4
Discover Enterprise DNA's DAX Courses
VERTIPAQ OPERATOR TYPES
LOGICAL PLAN OPERATORS OPERATOR TYPE WHAT IT DOES
EXAMPLE
Scan_Vertipaq
RelLogOp
- Basis of all other VertiPaq operators - Performs joins following M:1 - Determines which rows to return - Groups results by output columns
GroupBy_Ver-
RelLogOp
- Renames Columns - Adds rollup columns to VertiPaq - Query
Filter_Vertipaq
RelLogOp
Adds a filter predicate to a query
Sum_Vertipaq
ScaLogOp
Adds a Sum to a VertiPaqQuery
5
Discover Enterprise DNA's DAX Courses
VERTIPAQ OPERATOR TYPES
LOGICAL PLAN OPERATORS OPERATOR TYPE WHAT IT DOES
Min_Vertipaq
RelLogOp
Adds a filter predicate to a query
Max_Vertipaq
ScaLogOp
Adds a Max to a VertiPaqQuery
Count_Vertipaq
ScaLogOp
Adds a Count to a VertiPaqQuery
DistinctCount_Vertipaq ScaLogOp
Adds a DistinctCount to a VertiPaqQuery
Average_Vertipaq
ScaLogOp
Adds a Average to a VertiPaqQuery
Stdev.S_Vertipaq
ScaLogOp
Adds a Standard Deviation to a VertiPaqQuery
Stdev.P_Vertipaq
ScaLogOp
Adds a Standard Deviation based on Populatio to a VertiPaqQuery
Var.S_Vertipaq
ScaLogOp
Adds a Variance based on Sample to a VertiPaqQuery
Var.P_Vertipaq
ScaLogOp
Adds a Variance based on Populatio to a VertiPaqQuery
EXAMPLE
6
Discover Enterprise DNA's DAX Courses
Join the most advanced Power BI community anywhere Access the best content, resources, on-going training and support available globally for Power BI!
enterprisedna.co | info@enterprisedna.co
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- how to calculate days between dates in power bi
- power query m function reference microsoft docs
- declare set date sql
- how to correct american dates in office365
- date functions create a stored procedure create procedure
- date in where clause in sql server
- python cheat sheet programming with mosh
- optimizingdax enterprise dna
- how to calculate days in power bi
Related searches
- dna and protein synthesis worksheet
- dna central dogma of biology
- worksheet on dna rna protein synthesis answer
- dna rna and protein synthesis answer key
- worksheet on dna rna and protein synthesis
- dna and rna khan academy
- dna synthesis khan academy
- dna protein synthesis activity
- dna and protein synthesis quiz
- dna and protein synthesis article
- dna and protein synthesis notes
- dna rna review worksheet