Professional Documents
Culture Documents
com
alberto.ferrari@sqlbi.com
a brand of
Founder of www.sqlbi.com
Founder of www.sqlbi.com
o
o
o
o
Problem Solving
Complex Project Assistance
Data Warehouse Assessments and Development
Courses, Trainings and Workshops
o
o
o
o
Problem Solving
Complex Project Assistance
Data Warehouse Assessments and Development
Courses, Trainings and Workshops
Book Writer
Book Writer
Year To Date
Quarter To Date
Running Total
o
o
Fiscal Year
o
o
DAX basics
CALCULATE basics
Calendar Table
Built in Excel
Or in a SQL Table
SalesAmountYTD :=
TOTALYTD(
SUM (Sales[SalesAmount]),
Calendar[FullDate]
)
SalesAmountYTD :=
LineTotalYTD :=
TOTALYTD(
SUM (Sales[SalesAmount]),
Sales[OrderDate]
)
TOTALYTD (
SUM (Sales[SalesAmount]),
Calendar[FullDate],
"06-30"
)
Running Total
SalesAmountYTD :=
CALCULATE (
SUM (Sales[SalesAmount]),
DATESYTD (Calendar[Date])
)
DATEADD
SalesSPLY :=
CALCULATE (
SUM (Sales[SalesAmount]),
SAMEPERIODLASTYEAR (Calendar[FullDate])
)
SalesAmountlSPLY :=
CALCULATE(
SUM (Sales[SalesAmount]),
DATEADD (Calendar[FullDate], -1, YEAR)
)
PARALLELPERIOD
o
o
SalesPPLY :=
CALCULATE(
SUM (Sales [LineTotal]),
PARALLELPERIOD (Calendar[FullDate], -1, YEAR)
)
Many measures
User Experience might not be the best
Drawbacks
o
o
o
Handling DateTime
Additive Measure
o
o
Warehouse stocking
Current account balance
SemiAdditive Measures
LastBalance :=
CALCULATE (
SUM (Balances[Balance]),
LASTDATE (Date[Date])
)
CALCULATE(
SUM( SalesOrderDetail[LineTotal] ),
DATESBETWEEN(
OrderDate[Date],
NEXTDAY(
SAMEPERIODLASTYEAR(
LASTDATE( OrderDate[Date] )
)
),
LASTDATE( OrderDate[Date] )
)
)
The solution is to use the calendar table as the primary one, changing
the shape of the query.
DEFINE
MEASURE 'Internet Sales'[PY Sales] =
CALCULATE(
[Internet Total Sales],
SAMEPERIODLASTYEAR( 'Date'[Date] )
)
EVALUATE
SUMMARIZE(
'Internet Sales',
'Date'[Calendar Year],
'Date'[Month],
'Date'[Month Name],
"Sales", [Internet Total Sales],
"PY Sales", [PY Sales]
)
DEFINE
MEASURE 'Internet Sales'[PY Sales] =
CALCULATE(
[Internet Total Sales],
SAMEPERIODLASTYEAR( 'Date'[Date] )
)
EVALUATE
ADDCOLUMNS(
FILTER(
SUMMARIZE(
'Date',
'Date'[Calendar Year],
'Date'[Month],
'Date'[Month Name],
"Sales", [Internet Total Sales]
),
[Sales] <> 0
),
"PY Sales", [PY Sales]
)
Conclusions
Thank you!
www.sqlbi.com
Not no hierarchies
Consulting
Assessment
Outsourcing
Technical
Fellowship
www.sqlbi.com/consulting