Index

Numbers

1:1 relationships (data models), 2

A

active relationships

ambiguity, 514515

CALCULATETABLE function, 451453

expanded tables and, 450453

USERELATIONSHIP function, 450451

ADDCOLUMNS function, 223224, 366369, 371372

ADDCOLUMNS iterators, 196199

ADDMISSINGITEMS function

authoring queries, 419420, 432433

auto-exists feature (queries), 432433

aggregation functions, xmSQL queries, 625627

aggregations, 568571

in data models, 587588, 647648

SE, 548

VertiPaq aggregations, managing, 604607

aggregators, 42, 43, 44, 4546

AVERAGE function, 4344

AVERAGEX function, 44

COUNT function, 46

COUNTA function, 46

COUNTBLANK function, 46

COUNTROWS function, 46

DISTINCTCOUNT function, 46

DISTINCTCOUNTNOBLANK function, 46

MAX function, 43

MIN function, 43

SUM function, 4243, 4445

SUMX function, 45

ALL function, 464465

ALLEXCEPT function versus, 326328

CALCULATE function and, 125132, 164, 169172

calculated physical relationships, circular dependencies, 478

columns and, 6465

computing percentages, 125132

context transitions, avoiding, 328330

evaluation contexts, 100101

filter contexts, 324326, 327330

measures and, 6364

nonworking days between two dates, computing, 523525

percentages, computing, 6364

syntax of, 63

top categories/subcategories example, 6667

VALUES function and, 67, 327328

ALL* functions, 462464

ALLCROSSFILTERED function, 464, 465

ALLEXCEPT function, 6566, 464, 465

ALL function versus, 326328

computing percentages, 135

filter contexts, 326328

VALUES function versus, 326328

ALLNOBLANKROW function, 464, 465, 478

ALLSELECTED function, 7475, 76, 455457, 464, 465

CALCULATE function and, 171172

computing percentages, 7576

iterated rows, returning, 460462

shadow filter contexts, 459462

alternate/primary keys column (tables), 599, 600

ambiguity in relationships, 512513

active relationships, 514515

non-active relationships, 515517

Analysis Services 2012/2014 and CallbackDataID function, 644

annual totals (moving), computing, 243244

arbitrarily shaped filters, 336

best practices, 343

building, 338343

column filters versus, 336

defined, 337338

simple filters versus, 337

uses of, 343

arithmetic operators, 23

error-handling

division by zero, 3233

empty/missing values, 3335

xmSQL queries, 627

arrows (cross filter direction), 3

attributes, data model optimization

disabling attribute hierarchies, 604

optimizing drill-through attributes, 604

authoring queries, 395

ADDMISSINGITEMS function, 419420, 432433

auto-exists feature, 428434

DAX Studio, 395

DEFINE sections

MEASURE keyword in, 399

VAR keyword in, 397399

EVALUATE statements

ADDMISSINGITEMS function, 419420, 432433

example of, 396

expression variables and, 398

GENERATE function, 414417

GENERATEALL function, 417

GROUPBY function, 420423

ISONORAFTER function, 417419

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

query variables and, 398

ROW function, 400401

SAMPLE function, 427428

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function, 401403, 433434

SUMMARIZECOLUMNS function, 403409, 429434

syntax of, 396399

TOPN function, 409414

TOPNSKIP function, 420

expression variables, 397399

GENERATE function, 414417

GENERATEALL function, 417

GROUPBY function, 420423

ISONORAFTER function, 417419

MEASURE in DEFINE sections, 399

measures

query measures, 399

testing, 399401

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

query variables, 397399

ROW function, testing measures, 400401

SAMPLE function, 427428

shadow filter contexts, 457462

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function, 401403, 433434

SUMMARIZECOLUMNS function, 403409, 429434

TOPN function, 409414

TOPNSKIP function, 420

VAR in DEFINE sections, 397399

Auto Date/Time (Power BI), 218219

auto-exists feature (queries), 428434

automatic date columns (Power Pivot for Excel), 219

AVERAGE function, 4344, 199

AVERAGEA function, returning averages, 199

averages (means)

computing averages, AVERAGEX function, 199201

moving averages, 201202

returning averages

AVERAGE function, 199

AVERAGEA function, 199

AVERAGEX function, 44

computing averages, 199201

filter contexts, 111112

AVERAGEX iterators, 188

B

batch events (xmSQL queries), 630632

bidirectional cross-filter direction (physical relationships), 490, 491493, 507

bidirectional filtering (relationships), 34

bidirectional relationships, 106, 109

Binary data type, 23

BLANK function, 36

blank rows, invalid relationships, 6871

Boolean calculated columns, data model optimization, 597598

Boolean conditions, CALCULATE function, 119120, 123124

Boolean data type, 22

Boolean logic, 23

bottlenecks, DAX optimization, 667668

identifying SE/FE bottlenecks, 667668

optimizing bottlenecks, 668

bridge tables, MMR (Many-Many Relationships), 494499

budget/sales information (calculations), showing together, 527530

C

CALCULATE function, 115

ALL function, 125132, 164, 169172

ALLSELECTED function, 171172

Boolean conditions, 119120, 123124

calculated physical relationships, circular dependencies, 478480

calculation items, applying to expressions, 291299

circular dependencies, 161164

computing percentages, 124, 135

ALL function, 125132

ALLEXCEPT function, 135

VALUES function, 133134

context transitions, 148, 151154

calculated columns, 154157

measures, 157160

CROSSFILTER function, 168

evaluation contexts, 79

evaluation order, 144148

filter arguments, 118119, 122, 123, 445447

filter contexts, 148151

filtering

multiple columns, 140143

a single column, 138140

KEEPFILTERS function, 135138, 139143, 164, 168169

evaluation order, 146148

filtering multiple columns, 142143

moving averages, 201202

numbering sequences of events (calculations), 537538

overwriting filters, 120122, 136

Precedence calculation group, 299304

range-based relationships (calculated physical relationships), 474476

RELATED function and, 443444

row contexts, 148151

rules for, 172173

semantics of, 122123

syntax of, 118, 119120

table filters, 382384, 445447

time intelligence calculations, 228232

transferring filters, 482483, 484485

UNION function and, 376378

USERELATIONSHIP function, 164168

calculated columns, 2526

Boolean calculated columns, data model optimization, 597598

context transitions, 154157

data model optimization, 595599

DISTINCT function, 68

expressions, 29

measures, 42

choosing between calculated columns and measures, 2930

differences between calculated columns and measures, 29

using measures in calculated columns, 30

processing, 599

RELATED function, 443444

SUM function, evaluation contexts, 8889

table functions, 59

VALUES function, 68

calculated physical relationships, 471

circular dependencies, 476480

multiple-column relationships, 471473

range-based relationships, 474476

calculated tables, 59

creating, 390391

DISTINCT function, 68

SELECTCOLUMNS function, 390391

VALUES function, 68

CALCULATETABLE function, 115, 363

active relationships, 451453

FILTER function versus, 363365

time intelligence functions, 259, 260261

calculation granularity and iterators, 211214

calculation groups, 279281

calculation items and, 288

creating, 281288

defined, 288

Name calculation group, 288

Precedence calculation group, 288, 299304

calculation items

applying to expressions, 291

CALCULATE function, 291299

DATESYTD function, 293296

YTD calculations, 294

best practices, 311

calculation groups and, 288

Expression calculation item, 289

format strings, 289291

including/excluding measures from calculation items, 304306

Name calculation item, 288

Ordinal values, 289

properties of, 288289

sideways recursion, 306311

YOY calculation item, 289290

YOY% calculation item, 289290

calculations

budget/sales information (calculations), showing together, 527530

nonworking days between two dates, computing, 523525

precomputing values (calculations), computing work days between two dates, 525527

sales

computing previous year sales up to last day sales (calculations), 539544

computing same-store sales, 530536

showing budget/sales information together, 527530

syntax of, 1718

work days between two dates, computing, 519523

nonworking days, 523525

precomputing values (calculations), 525527

CALENDAR function, building date tables, 222

CALENDARAUTO function, building date tables, 222224

calendars (custom), time intelligence calculations, 272

DATESYTD function, 276277

weeks, 272275

CallbackDataID function

Analysis Services 2012/2014 and, 644

DAX optimization, 690693

parallelism and, 641

VertiPaq and, 640644

capturing DAX queries, 609611

cardinality

columns (tables)

data model optimization, 591592

optimizing high-cardinality columns, 603

iterators, 188190

relationships (data models), 489490, 586587, 590591

Cardinality column (VertiPaq Analyzer), 581, 583

categories/subcategories example, ALL function and, 6667

cells (Excel), 5

chains (relationships), 3

circular dependencies

CALCULATE function and, 161164

calculated physical relationships, 476480

code documentation, variables, 183184

code maintenance/readability, FILTER function, 6263

column filters

arbitrarily shaped filters versus, 336

defined, 336

columnar databases, 550553

columns (tables), 57

ADDCOLUMNS function, 223224, 366369, 371372

ADDCOLUMNS iterators, 196199

ALL function and, 6465

ALLEXCEPT function and, 6566

automatic date columns (Power Pivot for Excel), 219

Boolean calculated columns, data model optimization, 597598

calculated columns, 2526, 42, 443444

Boolean calculated columns, 597598

choosing between calculated columns and measures, 2930

context transitions, 154157

data model optimization, 595599

differences between calculated columns and measures, 29

DISTINCT function, 68

expressions, 29

processing, 599

SUM function, 8889

table functions, 59

using measures in calculated columns, 30

VALUES function, 68

cardinality

data model optimization, 591592

optimizing high-cardinality columns, 603

Date column, data model optimization, 592595

defined, 2

descriptive attributes column (tables), 600, 601602

filtering

CALCULATE function, 138140

multiple columns, 140143

a single column, 138140

table filters versus, 444447

measures, evaluation contexts, 8990

multiple columns

DISTINCT function and, 71

VALUES function and, 71

primary/alternate keys column (tables), 599, 600

qualitative attributes column (tables), 599, 600

quantitative attributes column (tables), 599, 600601

referencing, 1718

relationships, 3

row contexts, 87

SELECTCOLUMNS function, 390391, 393394

SELECTCOLUMNS iterators, 196, 197199

split optimization, 602603

storage optimization, 602

column split optimization, 602603

high-cardinality columns, 603

storing, 601602

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function and, 401

SUMMARIZECOLUMNS function, 403409, 429434

technical attributes column (tables), 600, 602

Time column, data model optimization, 592595

VertiPaq Analyzer, 580583

Columns # column (VertiPaq Analyzer), 582

Columns Hierarchies Size column (VertiPaq Analyzer), 582

Columns Total Size column (VertiPaq Analyzer), 581

COMBINEVALUES function, multiple-column relationships (calculated physical relationships), 472473

comments

at the end of expressions, 18

expressions, comment placement in expressions, 18

multi-line comments, 18

single-line comments, 18

comparison operators, 23

composite data models, 646647

DirectQuery mode, 488

VertiPaq mode, 488

compression (VertiPaq), 553554

hash encoding, 555556

re-encoding, 559

RLE, 556559

value encoding, 554555

CONCATENATEX function

iterators and, 194196

tables as scalar values, 74

conditional statements, 2425, 708709

conditions

DAX, 11

SQL, 11

CONTAINS function

tables and, 387388

transferring filters, 481482, 484485

CONTAINSROW function and tables, 387388

context transitions, 148

ALL function and, 328330

CALCULATE function and, 151154

calculated columns, 154157

DAX optimization, 672678

expanded tables, 454455

iterators, leveraging context transitions, 190194

measures, 157160

time intelligence functions, 260

conversion functions, 51

CURRENCY function, 51

DATE function, 51, 52

DATEVALUE function, 51

FORMAT function, 51

INT function, 51

TIME function, 51, 52

VALUE function, 51

conversions, error-handling, 3132

cores (number of), VertiPaq hardware selection, 574, 576

COUNT function, 46

COUNTA function, 46

COUNTBLANK function, 46

COUNTROWS function, 46

filter contexts and relationships, 109

nested row contexts on the same table, 9295

tables as scalar values, 73

CPU model, VertiPaq hardware selection, 574575

cross-filter directions (physical relationships), 3, 490

bidirectional cross-filter direction, 490, 491493, 507

single cross-filter direction, 490

cross-filtering, data model optimization, 590

cross-island relationships, 489

CROSSFILTER function

bidirectional relationships, 109

CALCULATE function and, 168

CROSSJOIN function and tables, 372374, 383384

Currency data type, 21

CURRENCY function, 51

custom calendars, time intelligence calculations, 272

DATESYTD function, 276277

weeks, 272275

customers (new), computing (tables), 380381, 386387

D

Daily AVG

calculation group precedence, 299303

calculation items, including/excluding measures, 304306

data lineage, 332336, 465468

data models

aggregations, 647648

composite data models, 646647

DirectQuery mode, 488

VertiPaq mode, 488

defined, 12

optimizing with VertiPaq, 579

aggregations, 587588, 604607

calculated columns, 595599

choosing columns for storage, 599602

column cardinality, 591592

cross-filtering, 590

Date column, 592595

denormalizing data, 584591

disabling attribute hierarchies, 604

gathering data model information, 579584

optimizing column storage, 602603

optimizing drill-through attributes, 604

relationship cardinality, 586587, 590591

Time column, 592595

relationships, 2

1:1 relationships, 2

active relationships, 450453

bidirectional filtering, 34

cardinality, 586587, 590591

chains, 3

columns, 3

cross filter direction, 3

DAX and SQL, 9

directions of, 34

many-sided relationships, 2, 3

one-sided relationships, 2, 3

Relationship reports (VertiPaq Analyzer), 584

unidirectional filtering, 4

weak relationships, 2

single data models

DirectQuery mode, 488

VertiPaq mode, 488

tables, defined, 2

weak relationships, 439

data refreshes, SSAS (SQL Server Analysis Services), 549550

Data Size column (VertiPaq Analyzer), 581

data types, 19

Binary data type, 23

Boolean data type, 22

Currency data type, 21

DateTime data type, 2122

Decimal data type, 21

Integer data type, 21

operators, 23

arithmetic operators, 23

comparison operators, 23

logical operators, 23

overloading, 1920

parenthesis operators, 23

text concatenation operators, 23

string/number conversions, 1921

strings, 22

Variant data type, 22

Database Size % column (VertiPaq Analyzer), 582

databases (columnar), 550553

datacaches

FE, 547

SE, 547

VertiPaq, 549, 635637

DATATABLE function, creating static tables, 392393

Date column, data model optimization, 592595

DATE function, 51, 52

date table templates (Power Pivot for Excel), 220

date tables

building, 220221

ADDCOLUMNS function, 223224

CALENDAR function, 222

CALENDARAUTO function, 222224

date templates, 224

duplicating, 227

loading from other data sources, 221

Mark as Date Table, 232233

multiple dates, managing, 224

multiple date tables, 226228

multiple relationships to date tables, 224226

naming, 221

date templates, 224

date/time-related calculations, 217

Auto Date/Time (Power BI), 218219

automatic date columns (Power Pivot for Excel), 219

basic calculations, 228232

basic functions, 233235

CALCULATE function, 228232

CALCULATETABLE function, 259, 260261

context transitions, 260

custom calendars, 272

DATESYTD function, 276277

weeks, 272275

date tables

ADDCOLUMNS function, 223224

building, 220224

CALENDAR function, 222

CALENDARAUTO function, 222224

date table templates (Power Pivot for Excel), 220

date templates, 224

duplicating, 227

loading from other data sources, 221

managing multiple dates, 224228

Mark as Date Table, 232233

multiple date tables, 226228

multiple relationships to date tables, 224226

naming, 221

DATEADD function, 237238, 262269

DATESINPERIOD function, 243244

DATESMTD function, 259, 276277

DATESQTD function, 259, 276277

DATESYTD function, 259, 260, 261262, 276277

differences over previous periods, computing, 241243

drillthrough operations, 271

FILTER function, 228232

FIRSTDATE function, 269, 270

FIRSTNONBLANK function, 256257, 270271

LASTDATE function, 248249, 254, 255, 269270

LASTNONBLANK function, 250254, 255, 270271

mixing functions, 239241

moving annual totals, computing, 243244

MTD calculations, 235236, 259262, 276277

nested functions, call order of, 245246

NEXTDAY function, 245246

nonworking days between two dates, computing, 523525

opening/closing balances, 254258

PARALLELPERIOD function, 238239

periods to date, 259262

PREVIOUSMONTH function, 239

QTD calculations, 235236, 259262, 276277

SAMEPERIODLASTYEAR function, 237, 245246

semi-additive calculations, 246248

STARTOFQUARTER function, 256257

time periods, computing from prior periods, 237239

work days between two dates, computing, 519523

nonworking days, 523525

precomputing values (calculations), 525527

YTD calculations, 235236, 259262, 276277

DATEADD function, time intelligence calculations, 237238, 262269

DATESINPERIOD function, computing moving annual totals, 243244

DATESMTD function, time intelligence calculations, 259, 276277

DATESQTD function, time intelligence calculations, 259, 276277

DATESYTD function

calculation items, applying to expressions, 293296

time intelligence calculations, 259, 260, 261262, 276277

DateTime data type, 2122

DATEVALUE function, 51

DAX (Data Analysis eXpressions), 1

conditions, 11

data models

defined, 12

relationships, 24

tables, 2

date templates, 224

DAX and, cells and tables, 57

Excel and

functional languages, 7

theories, 89

expressions

identifying a single DAX expression for optimization, 658661

optimizing bottlenecks, 668

as functional language, 10

functions, 67

iterators, 8

MDX, 12

hierarchies, 1314

leaf-level calculations, 14

multidimensional versus tabular space, 12

as programming language, 1213

as querying language, 1213

queries, 613

optimizing, 657

bottlenecks, 668

CallbackDataID function, 690693

change implementation, 668

conditional statements, 708709

context transitions, 672678

creating reproduction queries, 661664

DISTINCTCOUNT function, 699704

to-do list, 658

filter conditions, 668672

identifying a single DAX expression for optimization, 658661

identifying SE/FE bottlenecks, 667668

IF conditions, 678690

multiple evaluations, avoiding with variables, 704708

nested iterators, 693699

query plans, 664667

rerunning test queries, 668

server timings, 664667

variables, 704708

Power BI and, 1415

as programming language, 1011

queries

capturing, 609611

creating reproduction queries, 661662

DISTINCTCOUNT function, 634635

executing, 546

query plans, 612613

collecting, 613614

DAX Studio, 617620

logical query plans, 612, 614

physical query plans, 612613, 614616

SQL Server Profiler, 620623

as querying language, 1011

SQL and, 9

subqueries, 11

DAX engines

DirectQuery, 546, 548, 549

FE, 546, 547

datacaches, 547

operators of, 547

single-threaded implementation, 547

SE, 546

aggregations, 548

datacaches, 547

DirectQuery, 548, 549

operators of, 547

parallel implementations, 548

VertiPaq, 547549, 550577

Tabular model and, 545546

VertiPaq, 546, 547548, 550. See also data models, optimizing with VertiPaq

aggregations, 571573

columnar databases, 550553

compression, 553562

datacaches, 549

DMV, 563565

hardware selection, 573577

hash encoding, 555556

hierarchies, 561562

materialization, 568571

multithreaded implementations, 548

partitioning, 562563

processing tables, 550

re-encoding, 559

relationships (data models), 561562, 565568

RLE, 556559

scan operations, 549

segmentation, 562563

sort orders, 560561

value encoding, 554555

DAX Studio, 395

capturing DAX queries, 609611

Power BI and, 609611

query measures, creating, 662663

query plans, capturing profiling information, 617620

VertiPaq caches, 639640

DAXFormatter.com, 41

Decimal data type, 21

DEFINE MEASURE clauses in EVALUATE statements, 59

DEFINE sections (authoring queries)

MEASURE keyword in, 399

VAR keyword in, 397399

denormalizing data and data model optimization, 584591

descriptive attributes column (tables), 600, 601602

DETAILROWS function, reusing table expressions, 388389

dictionary encoding. See hash encoding

Dictionary Size column (VertiPaq Analyzer), 581

DirectQuery, 488489, 546, 548, 549, 617

calculated columns, 2526

composite data models, 488

End events (SQL Server Profiler), 621

SE, 549

composite data models, 646647

reading, 645646

single data models, 488

Disk I/O performance, VertiPaq hardware selection, 574, 576577

DISTINCT function, 71

blank rows and invalid relataionships, 68, 7071

calculated columns, 68

calculated physical relationships

circular dependencies, 477478

range-based relationships, 476

filter contexts, 111112

multiple columns, 71

UNION function and, 375378

VALUES function versus, 68

DISTINCTCOUNT function, 46

DAX optimization, 699704

same-store sales (calculations), computing, 535536

table filters, avoiding, 699704

VertiPaq SE queries, 634635

DISTINCTCOUNTNOBLANK function, 46

DIVIDE function, DAX optimization, 684687

division by zero, arithmetic operators, 3233

DMV (Dynamic Management Views) and SSAS, 563565

documenting code, variables, 183184

drill-through attributes, optimizing, 604

drillthrough operations, time intelligence calculations, 271

duplicating, date tables, 227

duration of an order example, 26

dynamic segmentation, virtual relationships and, 485488

E

EARLIER function, evaluation contexts, 9798

editing text, formatting DAX code, 42

empty/missing values, error-handling, 3335

Encoding column (VertiPaq Analyzer), 582, 583

error-handling

BLANK function, 36

Excel, empty/missing values, 35

expressions, 31

arithmetic operator errors, 3235

conversion errors, 3132

generating errors, 3839

IF function, 36, 37

IFERROR function, 3536, 3738

ISBLANK function, 36

ISERROR function, 36, 38

SQRT function, 36

variables, 37

EVALUATE statements

ADDMISSINGITEMS function, 419420, 432433

DEFINE MEASURE clauses, 59

example of, 396

expression variables and, 398

GENERATE function, 414417

GENERATEALL function, 417

GROUPBY function, 420423

ISONORAFTER function, 417419

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

ORDER BY clauses, 60

query variables and, 398

ROW function, 400401

SAMPLE function, 427428

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function, 401403, 433434

SUMMARIZECOLUMNS function, 403409, 429434

syntax of, 5960, 396399

TOPN function, 409414

TOPNSKIP function, 420

evaluation contexts, 79

ALL function, 100101

AVERAGEX function, filter contexts, 111112

CALCULATE function, 79

columns in measures, 8990

COUNTROWS function, filter contexts and relationships, 107108

defined, 80

DISTINCT function, filter contexts, 111112

EARLIER function, 9798

filter contexts, 80, 109110

AVERAGEX function, 111112

CALCULATE function, 118119

CALCULATE function and, 148151

creating, 115119

DISTINCT function, 111112

examples of, 8085

filter arguments, 118119

relationships and, 106109

row contexts versus, 85

SUMMARIZE function, 112

FILTER function, 9293, 9495, 98101

multiple tables, working with, 101102

filter contexts and relationships, 106109

row contexts and relationships, 102105

RELATED function

filter contexts and relationships, 109

nested row contexts on different tables, 92

row contexts and relationships, 103105

RELATEDTABLE function

filter contexts and relationships, 109

nested row contexts on different tables, 9192

row contexts and relationships, 103105

relationships and, 101102

filter contexts, 106109

row contexts, 102105

row contexts, 80

CALCULATE function and, 148151

column references, 87

examples of, 8687

filter contexts versus, 85

iterators and, 9091

nested row contexts on different tables, 9192

nested row contexts on the same table, 9297

relationships and, 102105

SUM function, in calculated columns, 8889

SUMMARIZE function, filter contexts, 112

evaluations (multiple), avoiding with variables, 704708

events (calculations), numbering sequences of, 536539

Excel

calculations, 8

cells, 5

columns, 57

DAX and

cells and tables, 57

functional languages, 7

theories, 89

error-handling, empty/missing values, 35

formulas, 6

functions, 67

Power Pivot for Excel

automatic date columns, 219

date table templates, 220

EXCEPT function, tables and, 379381

expanded tables

active relationships, 450453

column filters versus table filters, 444447

context transitions, 454455

filter contexts, 439441

filtering, 444447

active relationships and, 450453

differences between table filters and expanded tables, 453454

RELATED function, 441444

relationships, 437441

table filters

column filters versus, 444447

in measures, 447450

Expression calculation item, 289

Expression Trees, 612

expressions

calculated columns, 29

calculation items, applying to expressions, 291

CALCULATE function, 291299

DATESYTD function, 293296

YTD calculations, 294

comments, placement in expressions, 18

DAX optimization, 658661, 668

error-handling, 31

arithmetic operator errors, 3235

conversion errors, 3132

formatting, 3940, 42

MDX

DAX and, 1213, 14

queries, 546, 604, 613, 663664

query measures, 399

scalar expressions, 5758

table expressions

EVALUATE statements, 5960

reusing, 388389

variables, 3031, 397399

F

FE (Formula Engines), 546, 547

bottlenecks, identifying, 667668

datacaches, 547

operators of, 547

query plans, reading, 652653, 654655

single-threaded implementation, 547, 642

filter arguments

CALCULATE function, 118119, 122, 123, 445447

defined, 120

multiple column references, 140

SUMMARIZECOLUMNS function, 406409

filter contexts, 80, 109110, 313, 343344

ALL function, 324326, 327330

ALLEXCEPT function, 326328

arbitrarily shaped filters, 336

best practices, 343

building, 338343

column filters versus, 336

defined, 337338

simple filters versus, 337

uses of, 343

AVERAGEX function, 111112

CALCULATE function, 148151

filter arguments, 118119

overwriting filters, 120122

column filters

arbitrarily shaped filters versus, 336

defined, 336

creating, 115119

data lineage, 332336

DISTINCT function, 111112

examples of, 8085

expanded tables, 439441

FILTERS function, 322324

HASONVALUE function, 314318

ISCROSSFILTERED function, 319322

ISEMPTY function, 330332

ISFILTERED function, 319, 320322

nesting in variables, 184185

relationships and, 106109

row contexts versus, 85

SELECTEDVALUE function, 318319

simple filters

arbitrarily shaped filters versus, 337

defined, 337

SUMMARIZE function, 112

TREATAS function, 334336

VALUES function, 322324, 327328

FILTER function, 5758

CALCULATETABLE function versus, 363365

code maintenance/readability, 6263

evaluation contexts, 98101

as iterator, 6061

nested row contexts on the same table, 9293, 9495

nesting, 6162

range-based relationships (calculated physical relationships), 474476

syntax of, 60

time intelligence calculations, 228232

transferring filters, 481482, 484485

filter operations, xmSQL queries, 628630

filtering

ALLCROSSFILTERED function, 464, 465

columns (tables) versus table filters, 444447

DAX optimization, filter conditions, 668672

expanded tables

differences between table filters and expanded tables, 453454

table filters and active relationships, 450453

FILTER function

range-based relationships (calculated physical relationships), 474476

transferring filters, 484485

KEEPFILTERS function, 461462, 482483, 484

relationships

bidirectional filtering, 34

unidirectional filtering, 4

shadow filter contexts, 457462

tables, 381

CALCULATE function and, 445447

column filters versus, 444447

differences between table filters and expanded tables, 453454

DISTINCTCOUNT function, 699704

in measures, 447450

OR conditions, 381384

table filters and active relationships, 450453

transferring filters, 480481

CALCULATE function, 482

CONTAINS function, 481482

FILTER function, 481482, 484485

INTERSECT function, 483484

TREATAS function, 482483, 484

FILTERS function

filter contexts, 322324

VALUES function versus, 322324

FIRSTDATE function, time intelligence calculations, 269, 270

FIRSTNONBLANK function, time intelligence calculations, 256257, 270271

FORMAT function, 51

format strings

calculation items and, 289291

defined, 291

SELECTEDMEASUREFORMATSTRING function, 291

formatting DAX code, 39, 4142

DAXFormatter.com, 41

editing text, 42

expressions, 3940, 42

formulas, 42

help, 42

variables, 4041

formulas

Excel, 6

formatting, 42

IN function, tables and, 387388

functions

ADDCOLUMNS function, 223224, 366369, 371372

ADDMISSINGITEMS function

authoring queries, 419420, 432433

auto-exists feature (queries), 432433

aggregation functions, xmSQL queries, 625627

aggregators, 42, 44, 4546

AVERAGE function, 4344

AVERAGEX function, 44

COUNT function, 46

COUNTA function, 46

COUNTBLANK function, 46

COUNTROWS function, 46

DISTINCTCOUNT function, 46

DISTINCTCOUNTNOBLANK function, 46

MAX function, 43

MIN function, 43

SUM function, 4243, 4445

SUMX function, 45

ALL function, 464465

ALLEXCEPT function versus, 326328

CALCULATE function and, 164, 169172

calculated physical relationships and circular dependencies, 478

computing nonworking days between two dates, 523525

computing percentages, 125132

context transitions, 328330

evaluation contexts, 100101

filter contexts, 324326, 327330

VALUES function and, 327328

ALL* functions, 462464

ALLCROSSFILTERED function, 464, 465

ALLEXCEPT function, 464, 465

ALL function versus, 326328

computing percentages, 135

filter contexts, 326328

VALUES function versus, 326328

ALLNOBLANKROW function, 464, 465, 478

ALLSELECTED function, 455457, 464, 465

CALCULATE function and, 171172

returning iterated rows, 460462

shadow filter contexts, 459462

AVERAGE function, returning averages, 199

AVERAGEA function, returning averages, 199

AVERAGEX function

computing averages, 199201

filter contexts, 111112

Boolean conditions, 123124

CALCULATE function, 115

ALL function, 125132, 164, 169172

ALLSELECTED function, 171172

Boolean conditions, 119120

calculated physical relationships and circular dependencies, 478480

calculation items, applying to expressions, 291299

circular dependencies, 161164

computing percentages, 124135

context transitions, 148, 151160

CROSSFILTER function, 168

evaluation contexts, 79

evaluation order, 144148

filter arguments, 118119, 122, 123, 445447

filter contexts, 148151

filtering a single column, 138140

filtering multiple columns, 140143

KEEPFILTERS function, 135138, 139143, 164, 168169

KEEPFILTERS function and, 146148

moving averages, 201202

numbering sequences of events (calculations), 537538

overwriting filters, 120122

Precedence calculation group, 299304

range-based relationships (calculated physical relationships), 474476

RELATED function and, 443444

row contexts, 148151

rules for, 172173

semantics of, 122123

syntax of, 118, 119120

table filters, 445447

tables as filters, 382384

time intelligence calculations, 228232

transferring filters, 482483, 484485

UNION function and, 376378

USERELATIONSHIP function, 164168

CALCULATETABLE function, 115, 363

active relationships, 451453

FILTER function versus, 363365

time intelligence functions, 259, 260261

CALENDAR function, date tables, 222

CALENDARAUTO function, date tables, 222224

CallbackDataID function

Analysis Services 2012/2014 and, 644

DAX optimization, 690693

parallelism and, 641

VertiPaq and, 640644

COMBINEVALUES function, multiple-column relationships (calculated physical relationships), 472473

CONCATENATEX function

iterators and, 194196

tables as scalar values, 74

CONTAINS function

tables and, 387388

transferring filters, 481482, 484485

CONTAINSROW function, tables and, 387388

conversion functions, 51

COUNTROWS function

filter contexts and relationships, 107108

nested row contexts on the same table, 9295

tables as scalar values, 73

CROSSFILTER function

bidirectional relationships, 109

CALCULATE function and, 168

CROSSJOIN function, tables and, 372374, 383384

CURRENCY function, 51

DATATABLE function, creating static tables, 392393

DATE function, 51, 52

DATEADD function, time intelligence calculations, 237238, 262269

DATESINPERIOD function, moving annual totals, 243244

DATESMTD function, time intelligence calculations, 259, 276277

DATESQTD function, time intelligence calculations, 259, 276277

DATESYTD function

calculation items, applying to expressions, 293296

time intelligence calculations, 259, 260, 261262, 276277

DATEVALUE function, 51

DETAILROWS function, reusing table expressions, 388389

DISTINCT function

calculated physical relationships and circular dependencies, 477478

filter contexts, 111112

range-based relationships (calculated physical relationships), 476

UNION function and, 375378

DISTINCTCOUNT function

avoiding table filters, 699704

computing same-store sales, 535536

DAX optimization, 699704

DIVIDE function, DAX optimization, 684687

EARLIER function, evaluation contexts, 9798

Excel, 67

EXCEPT function, tables and, 379381

FILTER function

CALCULATETABLE function versus, 363365

evaluation contexts, 98101

nested row contexts on the same table, 9293, 9495

range-based relationships (calculated physical relationships), 474476

time intelligence calculations, 228232

transferring filters, 481482, 484485

FILTERS function

filter contexts, 322324

VALUES function versus, 322324

FIRSTDATE function, time intelligence calculations, 269, 270

FIRSTNONBLANK function, time intelligence calculations, 256257, 270271

FORMAT function, 51

IN function, tables and, 387388

GENERATE function, authoring queries, 414417

GENERATEALL function, authoring queries, 417

GENERATESERIES function, tables and, 393394

GROUPBY function

authoring queries, 420423

SUMMARIZE function and, 420423

HASONEVALUE function

filter contexts, 314318

tables as scalar values, 73

information functions, 4849

INT function, 51

INTERSECT function

tables and, 378379

transferring filters, 483484

ISCROSSFILTERED function, filter contexts, 319322

ISEMPTY function, filter contexts, 330332

ISFILTERED function

filter contexts, 319, 320322

time intelligence calculations, 268269

ISNUMBER function, 4849

ISONORAFTER function

authoring queries, 417419

TOPN function and, 417419

ISSELECTEDMEASURE function, including/excluding measures from calculation items, 304306

ISSUBTOTAL function and SUMMARIZE function, 402403

KEEPFILTERS function, 461462

CALCULATE function and, 135138, 142143, 146148, 164, 168169

evaluation order, 146148

transferring filters, 482483, 484

LASTDATE function, time intelligence calculations, 248249, 254, 255, 269270

LASTNONBLANK function, 250254, 255, 270271

logical functions

IF function, 4647

IFERROR function, 47

SWITCH function, 4748

LOOKUPVALUE function, 444, 473

mathematical functions, 49

NATURALINNERJOIN function, authoring queries, 423425

NATURALLEFTOUTERJOIN function, authoring queries, 423425

nested functions, call order of time intelligence functions, 245246

NEXTDAY function, call order of nested time intelligence functions, 245246

PARALLELPERIOD function, time intelligence calculations, 238239

PREVIOUSMONTH function, time intelligence calculations, 239

RANK.EQ function, 210

RANKX function, numbering sequences of events (calculations), 538539

RELATED function

CALCULATE function and, 443444

calculated columns, 443444

context transitions in expanded tables, 455

expanded tables, 441444

filter contexts and relationships, 109

nested row contexts on different tables, 92

row contexts and relationships, 103105

table filters and expanded tables, 454

RELATEDTABLE function

filter contexts and relationships, 109

nested row contexts on different tables, 9192

row contexts and relationships, 103105

relational functions, 5354

ROLLUP function, 401402, 403

ROW function

creating static tables, 391392

testing measures, 400401

SAMEPERIODLASTYEAR function

call order of nested time intelligence functions, 245246

computing previous year sales up to last day sales (calculations), 540544

time intelligence calculations, 237

SAMPLE function, authoring queries, 427428

SELECTCOLUMNS function, 390391, 393394

SELECTEDMEASURE function, including/excluding measures from calculation items, 304306

SELECTEDMEASUREFORMATSTRING function, 291

SELECTEDVALUE function

calculated physical relationships and circular dependencies, 479480

computing same-store sales, 533534

context transitions in expanded tables, 454455

filter contexts, 318319

tables as scalar values, 7374

STARTOFQUARTER function, time intelligence calculations, 256257

SUBSTITUTEWITHINDEX function, authoring queries, 425427

SUM function in calculated columns, 8889

SUMMARIZE function

authoring queries, 401403, 433434

auto-exists feature (queries), 433434

columns (tables) and, 401

filter contexts, 112

GROUPBY function and, 420423

ISSUBTOTAL function and, 402403

ROLLUP function and, 401402, 403

table filters and expanded tables, 453454

tables and, 369372, 373374, 383384

transferring filters, 484485

SUMMARIZECOLUMNS function

authoring queries, 403409, 429434

auto-exists feature (queries), 429434

filter arguments, 406409

IGNORE modifier, 403404

ROLLUPADDISSUBTOTAL modifier, 404406

ROLLUPGROUP modifier, 406

TREATAS function and, 407408

table functions, 57

ALL function, 6365, 6667

ALLEXCEPT function, 6566

ALLSELECTED function, 7476

calculated columns and, 59

calculated tables, 59

DISTINCT function, 68, 7071

FILTER function, 5758, 6063

measures and, 59

nesting, 5859

RELATEDTABLE function, 5859

VALUES function, 6774

text functions, 5051

TIME function, 51, 52

time intelligence functions (nested), call order of, 245246

TOPN function

authoring queries, 409414

ISONORAFTER function and, 417419

sort order, 410

TOPNSKIP function, authoring queries, 420

TREATAS function, 378

data lineage, 467468

filter contexts and data lineage, 334336

SUMMARIZECOLUMNS function and, 407408

transferring filters, 482483, 484

UNION function and, 377378

trigonometric functions, 50

UNION function

CALCULATE function and, 376378

DISTINCT function and, 375378

tables and, 374378

TREATAS function and, 377378

USERELATIONSHIP function

active relationships, 450451

CALCULATE function and, 164168

non-active relationships and ambiguity, 516517

VALUE function, 51

VALUES function

ALL function and, 327328

ALLEXCEPT function versus, 326328

calculated physical relationships and circular dependencies, 477480

computing percentages, 133134

filter contexts, 322324, 327328

FILTERS function versus, 322324

range-based relationships (calculated physical relationships), 474476

G

GENERATE function, authoring queries, 414417

GENERATEALL function, authoring queries, 417

GENERATESERIES function, tables and, 393394

generating errors (error-handling), 3839

granularity

calculations and iterators, 211214

relationships (data models), 507512

GROUPBY function

authoring queries, 420423

SUMMARIZE function and, 420423

H

hash encoding (VertiPaq compression), 555556

HASONEVALUE function

filter contexts, 314318

tables as scalar values, 73

help, formatting DAX code, 42

hierarchies, 345, 362

attribute hierarchies (data model optimization), disabling, 604

Columns Hierarchies Size column (VertiPaq Analyzer), 582

DAX, 1314

MDX, 1314

P/C (Parent/Child) hierarchies, 350361, 362

percentages, computing, 345

IF conditions, 349

PercOnCategory measures, 348

PercOnParent measures, 346349

ratio to parent calculations, 345

SSAS and, 561562

Use Hierarchies Size column (VertiPaq Analyzer), 582

I

IF conditions

computing percentages over hierarchies, 349

DAX optimization, 678679

DIVIDE function and, 684687

iterators, 687690

in measures, 679683

IF function, 36, 37, 4647

IFERROR function, 3536, 3738, 47

IGNORE modifier, SUMMARIZECOLUMNS function, 403404

information functions, 4849

INT function, 51

Integer data type, 21

INTERSECT function

tables and, 378379

transferring filters, 483484

intra-island relationships, 489

invalid relationships, blank rows and, 6871

ISBLANK function, 36

ISCROSSFILTERED function, filter contexts, 319322

ISEMPTY function, filter contexts, 330332

ISERROR function, 36, 38

ISFILTERED function

filter contexts, 319, 320322

time intelligence calculations, 268269

ISNUMBER function, 4849

ISONORAFTER function

authoring queries, 417419

TOPN function and, 417419

ISSELECTEDMEASURE function, including/excluding measures from calculation items, 304306

ISSUBTOTAL function, 402403

iterators, 8, 43, 44, 209215

ADDCOLUMNS iterators, 196199

averages (means)

computing with AVERAGEX function, 199201

moving averages, 201202

returning with AVERAGE function, 199

returning with AVERAGEA function, 199

AVERAGEX iterators, 188

behavior of, 91

calculation granularity, 211214

cardinality, 188190

CONCATENATEX function and, 194196

context transitions, leveraging, 190194

DAX optimization

IF conditions, 687690

nested iterators, 693699

FILTER function as, 6061

nested iterators

DAX optimization, 693699

leveraging context transitions, 190194

parameters of, 187188

RANK.EQ function, 210

RANKX iterators, 188, 202210

ROW CONTEXT iterators, 187188

row contexts and, 9091

SELECTCOLUMNS iterators, 196, 197199

SUMX iterators, 187188

tables, returning, 196199

J

join operators, xmSQL queries, 628630

K

KEEPFILTERS function, 461462

CALCULATE function and, 135138, 139143, 164, 168169

evaluation order, 146148

filtering multiple columns, 142143

transferring filters, 482483, 484

L

last day sales (calculations), computing previous year sales up to, 539544

LASTDATE function, time intelligence calculations, 248249, 254, 255, 269270

LASTNONBLANK function, time intelligence calculations, 250254, 255, 270271

lazy evaluations, variables, 181183

leaf-level calculations

DAX, 14

MDX, 14

leap year bug, 22

list of values. See filter arguments

logical functions

IF function, 4647

IFERROR function, 47

SWITCH function, 4748

logical operators, 23

logical query plans, 612, 614, 650651

LOOKUPVALUE function, 444, 473

M

maintenance (code), FILTER function, 6263

many-sided relationships (data models), 2, 3

many-to-many relationships. See MMR

Mark as Date Table, 232233

materialization (queries), 568571

mathematical functions, 49

MAX function, 43

MDX (Multidimensional Expressions)

DAX and, 12

hierarchies, 1314

leaf-level calculations, 14

multidimensional versus tabular space, 12

as programming language, 1213

as querying language, 1213

queries, 546

attribute hierarchies (data model optimization), disabling, 604

DAX and, 613

executing, 546

reproduction queries, creating, 663664

means (averages)

computing averages, AVERAGEX function, 199201

moving averages, 201202

returning averages

AVERAGE function, 199

AVERAGEA function, 199

MEASURE keyword, DEFINE sections (authoring queries), 399

measures, 2628

ALL function and, 6364

calculated columns, 42

choosing between calculated columns and measures, 2930

differences between calculated columns and measures, 29

using measures in calculated columns, 30

calculation items, including/excluding measures from, 304306

columns in, evaluation contexts, 8990

context transitions, 157160

DEFINE MEASURE clauses in EVALUATE statements, 59

defining in tables, 29

expressions, 29

IF conditions, DAX optimization, 679683

ISSELECTEDMEASURE function, including/excluding measures from calculation items, 304306

PercOnCategory measures, computing percentages over hierarchies, 348

PercOnParent measures, computing percentages over hierarchies, 346349

query measures, 399, 662663

SELECTEDMEASURE function, including/excluding measures from calculation items, 304306

table filters in, 447450

table functions, 59

testing, 399401

VALUES function and, 6768

memory size, VertiPaq hardware selection, 574, 576

memory speed, VertiPaq hardware selection, 574, 575576

MIN function, 43

MMR (Many-Many Relationships), 489, 490, 494, 507

bridge tables, 494499

common dimensionality, 500504

weak relationships, 504506

moving annual totals, computing, 243244

moving averages, CALCULATE function, 201202

MTD (Month-to-Date) calculations, time intelligence calculations, 235236, 259262, 276277

multi-line comments, 18

multiple columns

DISTINCT function and, 71

multiple-column relationships (calculated physical relationships), 471473

VALUES function and, 71

MultipleItemSales variable, 58

N

Name calculation group, 288

Name calculation item, 288

naming variables, 182

narrowing table computations, 384386

NATURALINNERJOIN function, authoring queries, 423425

NATURALLEFTOUTERJOIN function, authoring queries, 424425

nested functions, call order of time intelligence functions, 245246

nested iterators

DAX optimization, 693699

leveraging context transitions, 190194

nesting

filter contexts, in variables, 184185

FILTER functions, 6162

multiple rows, in variables, 184

row contexts

on different tables, 9192

on the same table, 9297

table functions, 5859

VAR/RETURN statements, 179180

new customers, computing (tables), 380381, 386387

NEXTDAY function, call order of nested time intelligence functions, 245246

non-active relationships, ambiguity, 515517

nonworking days between two dates, computing, 523525

numbering sequences of events (calculations), 536539

numbers, conversions, 1921

O

one-sided relationships (data models), 2, 3

one-to-many relationships. See SMR

one-to-one relationships. See SSR

opening/closing balances (time intelligence calculations), 254258

operators, 23

arithmetic operators, 23

division by zero, 3233

empty/missing values, 3335

error-handling, 3235

comparison operators, 23

logical operators, 23

overloading, 1920

parenthesis operators, 23

text concatenation operators, 23

optimizing

columns

high-cardinality columns, 603

split optimization, 602603

storage optimization, 602603

data models with VertiPac, 579

aggregations, 587588

cross-filtering, 590

denormalizing data, 584591

gathering data model information, 579584

relationship cardinality, 586587

DAX, 657

bottlenecks, 668

CallbackDataID function, 690693

change implementation, 668

conditional statements, 708709

context transitions, 672678

DISTINCTCOUNT function, 699704

expressions, identifying a single DAX expression for optimization, 658661

filter conditions, 668672

IF conditions, 678683, 684690

multiple evaluations, avoiding with variables, 704708

nested iterators, 693699

query plans, 664667

reproduction queries, creating, 661664

SE/FE bottlenecks, identifying, 667668

server timings, 664667

test queries, rerunning, 668

to-do list, 658

variables, 704708

OR conditions, tables as filters, 381384

ORDER BY clauses in EVALUATE statements, 60

orders (example), computing duration of, 26

Ordinal values, calculated items, 289

overwriting filters, CALCULATE function, 120122, 136

P

P/C (Parent/Child) hierarchies, 350361, 362

paging, VertiPaq hardware selection, 576577

parallelism

CallbackDataID function, 641

VertiPaq SE queries, 641

PARALLELPERIOD function, time intelligence calculations, 238239

parenthesis operators, 23

partitioning and SSAS, 562563

Partitions # column (VertiPaq Analyzer), 582

percentages, computing, 135

ALL function, 6364

ALLSELECTED function, 7576

CALCULATE function, 124

ALL function, 125132

ALLEXCEPT function, 135

VALUES function, 133134

hierarchies, 345

IF conditions, 349

PercOnCategory measures, 348

PercOnParent measures, 346349

ratio to parent calculations, 345

PercOnCategory measures, computing percentages over hierarchies, 348

PercOnParent measures, computing percentages over hierarchies, 346, 348349

PercOnSubcategory measures, computing percentages over hierarchies, 346348

physical query plans, 612613, 614616, 651652

physical relationships

calculated physical relationships, 471473

circular dependencies, 476480

range-based relationships, 474476

cardinality, 489490

choosing, 506507

cross-filter directions, 490

bidirectional cross-filter direction, 490, 491493, 507

single cross-filter direction, 490

cross-island relationships, 489

intra-island relationships, 489

MMR, 489, 490, 494, 507

bridge tables, 494499

common dimensionality, 500504

weak relationships, 504506

SMR, 489, 490, 493, 507

SSR, 489, 490, 493494

strong relationships, 488

virtual relationships versus, 506507

weak relationships, 488, 489, 504506

Power BI

Auto Date/Time, 218219

DAX and, 1415

DAX Studio and, 609611

filter contexts, 8485

Power BI reports and DAX queries, 609610

Power Pivot for Excel

automatic date columns, 219

date table templates, 220

Precedence calculation group, 288, 299304

precomputing values (calculations), computing work days between two dates, 525527

previous year sales up to last day sales (calculations), computing, 539544

PREVIOUSMONTH function, time intelligence calculations, 239

Primary/Alternate Keys column (tables), 599

primary/alternate keys column (tables), 600

processing tables, 550

PYTD (Previous Year-To-Date) calculations, calculation items and sideways recursion, 307308

Q

QTD (Quarter-to-Date) calculations, time intelligence calculations, 235236, 259262, 276277

qualitative attributes column (tables), 599, 600

quantitative attributes column (tables), 599, 600601

queries

DAX queries

capturing, 609611

DISTINCTCOUNT function, 634635

executing, 546

DAX query plans, 612613

DirectQuery, 546, 548, 549, 617

DirectQuery SE queries

composite data models, 646647

reading, 645646

Expression Trees, 612

FE, 546, 547

datacaches, 547

operators of, 547

single-threaded implementation, 547

materialization, 568571

MDX queries, 546

DAX and, 613

disabling attribute hierarchies (data model optimization), 604

executing, 546

query measures, creating with DAX Studio, 662663

reproduction queries, creating

creating query measures with DAX Studio, 662663

in DAX, 661662

in MDX, 663664

SE, 546, 616617

aggregations, 548

datacaches, 547

DirectQuery, 548

operators of, 547

parallel implementations, 548

VertiPaq, 547549, 550577

test queries, rerunning (DAX optimization), 668

VertiPaq, 546, 547548, 550. See also data models, optimizing with VertiPaq

aggregations, 571573

columnar databases, 550553

compression, 553562

datacaches, 549

DMV, 563565

hardware selection, 573577

hash encoding, 555556

hierarchies, 561562

materialization, 568571

multithreaded implementations, 548

partitioning, 562563

processing tables, 550

re-encoding, 559

relationships (data models), 561562, 565568

RLE, 556559

scan operations, 549

segmentation, 562563

sort orders, 560561

value encoding, 554555

VertiPaq SE queries, 624

composite data models, 646647

datacaches and parallelism, 635637

DISTINCTCOUNT function, 634635

scan time, 632634

xmSQL queries and, 624632

xmSQL queries, 624

aggregation functions, 625627

arithmetical operations, 627

batch events, 630632

filter operations, 628630

join operators, 630

queries, authoring, 395

ADDMISSINGITEMS function, 419420, 432433

auto-exists feature, 428434

DAX Studio, 395

DEFINE sections

MEASURE keyword in, 399

VAR keyword in, 397399

EVALUATE statements

ADDMISSINGITEMS function, 419420, 432433

example of, 396

expression variables and, 398

GENERATE function, 414417

GENERATEALL function, 417

GROUPBY function, 420423

ISONORAFTER function, 417419

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

query variables and, 398

ROW function, 400401

SAMPLE function, 427428

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function, 401403, 433434

SUMMARIZECOLUMNS function, 403409, 429434

syntax of, 396399

TOPN function, 409414

TOPNSKIP function, 420

expression variables, 397399

GENERATE function, 414417

GENERATEALL function, 417

GROUPBY function, 420423

ISONORAFTER function, 417419

MEASURE in DEFINE sections, 399

measures

query measures, 399

testing, 399401

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

query variables, 397399

ROW function, testing measures, 400401

SAMPLE function, 427428

shadow filter contexts, 457462

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function, 401403, 433434

SUMMARIZECOLUMNS function, 403409, 429434

TOPN function, 409414

TOPNSKIP function, 420

VAR in DEFINE sections, 397399

Query End events (SQL Server Profiler), 621

query plans

capturing queries

DAX Studio, 617620

SQL Server Profiler, 620623

collecting, 613614

DAX optimization, 664667

logical query plans, 612, -614, 650651

physical query plans, 612613, 614616, 651652

reading, 649655

query variables, 397399

R

range-based relationships (calculated physical relationships), 474476

RANK.EQ function, 210

RANKX function, numbering sequences of events (calculations), 538539

RANKX iterators, 188, 202210

ratio to parent calculations, computing percentages over hierarchies, 345

readability (code), FILTER function, 6263

recursion (sideways), calculation items, 306311

re-encoding

SSAS and, 559

VertiPaq, 559

referencing columns in tables, 1718

refreshing data, SSAS (SQL Server Analysis Services), 549550

RELATED function

CALCULATE function and, 443444

calculated columns, 443444

context transitions in expanded tables, 455

expanded tables, 441444

filter contexts, relationships and, 109

nested row contexts on different tables, 92

row contexts and relationships, 103105

table filters and expanded tables, 454

RELATEDTABLE function, 5859

filter contexts, relationships and, 109

nested row contexts on different tables, 9192

row contexts and relationships, 103105

relational functions, 5354

relationships (data models), 2

1:1 relationships, 2

active relationships

ambiguity, 514515

CALCULATETABLE function, 451453

expanded tables and, 450453

USERELATIONSHIP function, 450451

ambiguity, 512513

active relationships, 514515

non-active relationships, 515517

bidirectional filtering, 34

bidirectional relationships, 106, 109

calculated physical relationships, 471

circular dependencies, 476480

multiple-column relationships, 471473

range-based relationships, 474476

cardinality, 489490, 586587, 590591

chains, 3

columns, 3

cross-filter directions, 3, 490

bidirectional cross-filter direction, 490, 491493, 507

single cross-filter direction, 490

cross-island relationships, 489

DAX and SQL, 9

directions of, 34

evaluation contexts and, 101102

filter contexts, 106109

row contexts, 102105

expanded tables, 437441

granularity, 507512

intra-island relationships, 489

invalid relationships and blank rows, 6871

many-sided relationships, 2, 3

MMR, 489, 490, 494, 507

bridge tables, 494499

common dimensionality, 500504

weak relationships, 504506

non-active relationships, ambiguity, 515517

one-sided relationships, 2, 3

performance, 507

physical relationships

calculated physical relationships, 471480

cardinality, 489490

choosing, 506507

cross-filter directions, 490493

cross-island relationships, 489

intra-island relationships, 489

MMR, 489, 490, 494506, 507

SMR, 489, 490, 493, 507

SSR, 489, 490, 493494

strong relationships, 488

virtual relationships versus, 506507

weak relationships, 488, 489, 504506

Relationship reports (VertiPaq Analyzer), 584

Relationship Size column (VertiPaq Analyzer), 582

relationships, expanded tables, 437441

shallow relationships in batch events (xmSQL queries), 630632

SMR, 489, 490, 493, 507

SSAS and, 561562

SSR, 489, 490, 493494

strong relationships, 488

transferring filters, 480481

CALCULATE function, 482

CONTAINS function, 481482

FILTER function, 481482, 484485

INTERSECT function, 483484

TREATAS function, 482483, 484

unidirectional filtering, 4

USERELATIONSHIP function, non-active relationships and ambiguity, 516517

VertiPaq and, 565568

virtual relationships, 480, 507

dynamic segmentation, 485488

physical relationships versus, 506507

transferring filters, 480485

weak relationships, 2, 439, 488, 489, 504506

reproduction queries, creating

in DAX, 661662

in MDX, 663664

query measures, creating with DAX Studio, 662663

reusing table expressions, 388389

RLE (Run Length Encoding), VertiPaq, 556559

ROLLUP function, 401402, 403

ROLLUPADDISSUBTOTAL modifier, SUMMARIZECOLUMNS function, 404406

ROLLUPGROUP modifier, SUMMARIZECOLUMNS function, 406

ROW CONTEXT iterators, 187188

row contexts, 80

CALCULATE function and, 148151

column references, 87

examples of, 8687

filter contexts versus, 85

iterators and, 9091

nested row contexts

on different tables, 9192

on the same table, 9297

relationships and, 102105

ROW function

static tables, creating, 391392

testing measures, 400401

rows (tables)

ALLNOBLANKROW function, 464, 465

blank rows, invalid relationships, 6871

CONTAINSROW function, 387388

DETAILROWS function, 388389

nesting in variables, 184

SAMPLE function, 427428

TOPN function, 409414

Rows column (VertiPaq Analyzer), 581, 583

S

sales

budget/sales information (calculations), showing together, 527530

previous year sales up to last day sales (calculations), computing, 539544

same-store sales (calculations), computing, 530536

same-store sales (calculations), computing, 530536

SAMEPERIODLASTYEAR function

computing previous year sales up to last day sales (calculations), 540544

nested time intelligence functions, call order of, 245246

time intelligence calculations, 237

SAMPLE function, authoring queries, 427428

scalar expressions, 5758

scalar values

storing in variables, 176, 181

tables as, 7174

SE (Storage Engines), 546

aggregations, 548

bottlenecks, identifying, 667668

datacaches, 547

DirectQuery, 548, 549

operators of, 547

parallel implementations, 548

queries, 616617

SE queries, copy VertiPaq SE queries entries

VertiPaq, 547548, 550. See also data models, optimizing with VertiPaq

aggregations, 571573

columnar databases, 550553

compression, 553562

datacaches, 549

DMV, 563565

hardware selection, 573577

hash encoding, 555556

hierarchies, 561562

materialization, 568571

multithreaded implementations, 548

partitioning, 562563

processing tables, 550

re-encoding, 559

relationships (data models), 561562, 565568

RLE, 556559

scan operations, 549

segmentation, 562563

sort orders, 560561

value encoding, 554555

VertiPaq SE queries, 624632

segmentation

dynamic segmentation and virtual relationships, 485488

SSAS and, 562563

Segments # column (VertiPaq Analyzer), 582

SELECTCOLUMNS function, 390391, 393394

SELECTCOLUMNS iterators, 196, 197199

SELECTEDMEASURE function, including/excluding measures from calculation items, 304306

SELECTEDMEASUREFORMATSTRING function, 291

SELECTEDVALUE function

calculated physical relationships, circular dependencies, 479480

context transitions in expanded tables, 454455

filter contexts, 318319

same-store sales (calculations), computing, 533534

tables as scalar values, 7374

semi-additive calculations, time intelligence calculations, 246248

sequences of events (calculations), numbering, 536539

server timings, DAX optimization, 664667

shadow filter contexts, 457462

shallow relationships in batch events (xmSQL queries), 630632

sideways recursion, calculation items, 306311

simple filters

arbitrarily shaped filters versus, 337

defined, 337

single cross-filter direction (physical relationships), 490

single data models

DirectQuery mode, 488

VertiPaq mode, 488

single-line comments, 18

SMR (Single-Many Relationships), 489, 490, 493, 507

sort order, determining, ORDER BY clauses, 60

sort orders

SSAS and, 560561

VertiPaq, 560561

SQL (Structured Query Language)

conditions, 11

DAX and, 9

as declarative language, 10

error-handling, empty/missing values, 35

subqueries, 11

SQL Server Profiler

DirectQuery End events, 621

Query End events, 621

query plans, capturing profiling information, 620623

VertiPaq SE Query Cache Match events, 621

VertiPaq SE Query End events, 621

SQRT function, 36

SSAS (SQL Server Analysis Services)

data refreshes, 549550

DMV, 563565

hierarchies, 561562

partitioning, 562563

processing tables, 550

re-encoding, 559

relationships (data models), 561562

segmentation, 562563

sort orders, 560561

SSR (Single-Single Relationships), 489, 490, 493494

star schemas, denormalizing data and data model optimization, 586

STARTOFQUARTER function, time intelligence calculations, 256257

static tables, creating

DATATABLE function, 392393

ROW function, 391392

storing

blockz, in variables, 176, 181

columns (tables), 601602

partial results of calculations, in variables, 176177

scalar values, in variables, 176, 181

tables, in variables, 58

string conversions, 1921

strong relationships, 488

subcategories/categories example, ALL function and, 6667

subqueries

DAX, 11

SQL, 11

SUBSTITUTEWITHINDEX function, authoring queries, 425427

SUM function, 4243, 4445, 8889

SUMMARIZE function

authoring queries, 401403, 433434

auto-exists feature (queries), 433434

columns (tables) and, 401

filter contexts, 112

GROUPBY function and, 420423

ISSUBTOTAL function and, 402403

ROLLUP function and, 401402, 403

table filters and expanded tables, 453454

tables and, 369372, 373374, 383384

transferring filters, 484485

SUMMARIZECOLUMNS function

authoring queries, 403409, 429434

auto-exists feature (queries), 429434

filter arguments, 406409

IGNORE modifier, 403404

ROLLUPADDISSUBTOTAL modifier, 404406

ROLLUPGROUP modifier, 406

TREATAS function and, 407408

SUMX function, 45

SUMX iterators, 187188

SWITCH function, 4748

T

table constructors, 24

table expressions, EVALUATE statements, 5960

table filters, DISTINCTCOUNT function, 699704

table functions, 57

ALL function

columns and, 6465

computing percentages, 6364

measures and, 6364

syntax of, 63

top categories/subcategories example, 6667

VALUES function versus, 67

ALLEXCEPT function, 6566

ALLSELECTED function, 7476

calculated columns and, 59

calculated tables, 59

DISTINCT function, 71

blank rows and invalid relationships, 68, 7071

calculated columns, 68

multiple columns, 71

VALUES function versus, 68

FILTER function, 5758

code maintenance/readability, 6263

as iterator, 6061

nesting, 6162

syntax of, 60

measures and, 59

nesting, 5859

RELATEDTABLE function, 5859

VALUES function, 71

ALL function versus, 67

blank rows and invalid relationships, 6871

calculated columns, 68

calculated tables, 68

DISTINCT function versus, 68

measures and, 6768

multiple columns, 71

tables as scalar values, 7174

Table Size % column (VertiPaq Analyzer), 582

Table Size column (VertiPaq Analyzer), 581

table variables, 181182

tables, 363

ADDCOLUMNS function, 366369, 371372

blank rows, invalid relationships, 6871

bridge tables, MMR, 494499

CALCULATE function, tables as filters, 382384

calculated columns, 2526, 42

choosing between calculated columns and measures, 2930

differences between calculated columns and measures, 29

expressions, 29

using measures in calculated columns, 30

calculated tables, 59

creating, 390391

DISTINCT function, 68

SELECTCOLUMNS function, 390391

VALUES function, 68

CALCULATETABLE function, 363365

columns

ADDCOLUMNS function, 366369, 371372

Boolean calculated columns, 597598

calculated columns and data model optimization, 595599

calculated columns, RELATED function, 443444

cardinality, 603

cardinality and data model optimization, 591592

Date column, 592595

defined, 2

descriptive attributes column (tables), 600, 601602

filtering, 444447

optimizing high-cardinality columns, 603

Primary/Alternate Keys column (tables), 599

primary/alternate keys column (tables), 600

qualitative attributes column (tables), 599, 600

quantitative attributes column (tables), 599, 600601

referencing, 1718

relationships, 3

SELECTCOLUMNS function, 390391, 393394

storage optimization, 602603

storing, 601602

SUBSTITUTEWITHINDEX function, 425427

SUMMARIZE function and, 401

SUMMARIZECOLUMNS function, 403409, 429434

technical attributes column (tables), 600, 602

Time column, 592595

VertiPaq Analyzer, 580583

computing new customers, 380381, 386387

CONTAINS function, 387388

CONTAINSROW function, 387388

CROSSJOIN function, 372374, 383384

date tables

ADDCOLUMNS function, 223224

building, 220224

CALENDAR function, 222

CALENDARAUTO function, 222224

date table templates (Power Pivot for Excel), 220

date templates, 224

duplicating, 227

loading from other data sources, 221

managing multiple dates, 224228

Mark as Date Table, 232233

multiple date tables, 226228

multiple relationships to date tables, 224226

naming, 221

defined, 2

DETAILROWS function, 388389

EXCEPT function, 379381

expanded tables

active relationships, 450453

column filters versus table filters, 444447

context transitions, 454455

differences between table filters and expanded tables, 453454

filter contexts, 439441

filtering, 444447, 450453

RELATED function, 441444

relationships, 437441

table filters in measures, 447450

table filters versus column filters, 444447

expressions, reusing, 388389

FILTER function versus CALCULATETABLE function, 363365

filtering

CALCULATE function and, 445447

column filters versus, 444447

in measures, 447450

as filters, 381384

GENERATESERIES function, 393394

IN function, 387388

INTERSECT function, 378379

iterators, returning tables with, 196199

measures, defining in tables, 29

narrowing computations, 384386

NATURALINNERJOIN function, 423425

NATURALLEFTOUTERJOIN function, 423425

processing, 550

records, 2

reusing expressions, 388389

rows

ALLNOBLANKROW function, 464, 465

CONTAINSROW function, 387388

DETAILROWS function, 388389

SAMPLE function, 427428

TOPN function, 409414

as scalar values, 7174

SELECTCOLUMNS function, 390391, 393394

static tables

creating with DATATABLE function, 392393

creating with ROW function, 391392

storing in variables, 176, 181

SUMMARIZE function, 369372, 373374, 383384

temporary tables in batch events (xmSQL queries), 630632

TOPN function, 409414

UNION function, 374378

variables, storing tables in, 58

Tabular model

calculation groups, creating, 281288

DAX engines and, 545546

DAX queries, executing, 546

DirectQuery, 546

MDX queries, executing, 546

VertiPaq, 546

technical attributes column (tables), 600, 602

templates

date table templates (Power Pivot for Excel), 220

date templates, 224

temporary tables in batch events (xmSQL queries), 630632

test queries, rerunning (DAX optimization), 668

text

concatenation operators, 23

editing, formatting DAX code, 42

text functions, 5051

Time column, data model optimization, 592595

TIME function, 51, 52

time intelligence calculations, 217

Auto Date/Time (Power BI), 218219

automatic date columns (Power Pivot for Excel), 219

basic calculations, 228232

basic functions, 233235

CALCULATE function, 228232

CALCULATETABLE function, 259, 260261

context transitions, 260

custom calendars, 272

DATESYTD function, 276277

weeks, 272275

date tables

ADDCOLUMNS function, 223224

building, 220224

CALENDAR function, 222

CALENDARAUTO function, 222224

date table templates (Power Pivot for Excel), 220

date templates, 224

duplicating, 227

loading from other data sources, 221

managing multiple dates, 224228

Mark as Date Table, 232233

multiple date tables, 226228

multiple relationships to date tables, 224226

naming, 221

DATEADD function, 237238, 262269

DATESINPERIOD function, 243244

DATESMTD function, 259, 276277

DATESQTD function, 259, 276277

DATESYTD function, 259, 260, 261262, 276277

differences over previous periods, computing, 241243

drillthrough operations, 271

FILTER function, 228232

FIRSTDATE function, 269, 270

FIRSTNONBLANK function, 256257, 270271

LASTDATE function, 248249, 254, 255, 269270

LASTNONBLANK function, 250254, 255, 270271

mixing functions, 239241

moving annual totals, computing, 243244

MTD calculations, 235236, 259262, 276277

nested functions, call order of, 245246

NEXTDAY function, 245246

opening/closing balances, 254258

PARALLELPERIOD function, 238239

periods to date, 259262

PREVIOUSMONTH function, 239

QTD calculations, 235236, 259262, 276277

SAMEPERIODLASTYEAR function, 237, 245246

semi-additive calculations, 246248

STARTOFQUARTER function, 256257

time periods, computing from prior periods, 237239

YTD calculations, 235236, 259262, 276277

time periods, computing from prior periods, 237239

top categories/subcategories example, ALL function and, 6667

TOPN function

authoring queries, 409414

ISONORAFTER function and, 417419

sort order, 410

TOPNSKIP function, authoring queries, 420

transferring filters, 480481

CALCULATE function, 482

CONTAINS function, 481482

FILTER function, 481482, 484485

INTERSECT function, 483484

TREATAS function, 482483, 484

TREATAS function, 378

data lineage, 467468

filter contexts and data lineage, 334336

SUMMARIZECOLUMNS function and, 407408

transferring filters, 482483, 484

UNION function and, 377378

trigonometric functions, 50

U

unary operators, P/C (Parent/Child) hierarchies, 362

unidirectional filtering (relationships), 4

UNION function

CALCULATE function and, 376378

DISTINCT function and, 375378

tables and, 374378

TREATAS function and, 377378

Use Hierarchies Size column (VertiPaq Analyzer), 582

USERELATIONSHIP function

active relationships, 450451

CALCULATE function and, 164168

non-active relationships and ambiguity, 516517

V

value encoding (VertiPaq compression), 554555

VALUE function, 51

values, list of. See filter arguments

VALUES function, 71

ALL function and, 327328

ALL function versus, 67

ALLEXCEPT function versus, 326328

blank rows and invalid relataionships, 6871

calculated columns, 68

calculated physical relationships

circular dependencies, 477480

range-based relationships, 474476

calculated tables, 68

computing percentages, 133134

DISTINCT function versus, 68

filter contexts, 322324, 327328

FILTERS function versus, 322324

measures and, 6768

multiple columns, 71

tables as scalar values, 7174

VAR keyword, DEFINE sections (authoring queries), 397399

variables, 3031, 175

as a constant, 177178

defining, 176, 178180

documenting code, 183184

error-handling, 37

expression variables, 397399

formatting, 4041

lazy evaluations, 181183

multiple evaluations, avoiding with variables, 704708

MultipleItemSales variable, 58

names, 182

nesting

filter contexts, 184185

multiple rows, 184

query variables, 397399

scalar values, 58

scope of, 178180

storing

partial results of calculations, 176177

scalar values, 176, 181

tables, 176, 181

table variables, 181182

tables, storing, 58

VAR syntax, 175177

VAR/RETURN blocks, 175177, 180

VAR/RETURN statements, nesting, 179180

Variant data type, 22

VertiPaq, 546, 547548, 550

aggregations, 571573, 604607

caches, 637640

CallbackDataID function, 640644

columnar databases, 550553

compression, 553554

hash encoding, 555556

re-encoding, 559

RLE, 556559

value encoding, 554555

data model optimization, 579

aggregations, 587588, 604607

calculated columns, 595599

choosing columns for storage, 599602

column cardinality, 591592

cross-filtering, 590

Date column, 592595

denormalizing data, 584591

disabling attribute hierarchies, 604

gathering data model information, 579584

optimizing column storage, 602603

optimizing drill-through attributes, 604

relationship cardinality, 586587, 590591

Time column, 592595

datacaches, 549

DMV, 563565

hardware selection, 573

best practices, 577

CPU model, 574575

Disk I/O performance, 574, 576577

memory size, 574, 576

memory speed, 574, 575576

number of cores, 574, 576

as an option, 573574

paging, 576577

setting priorities, 574576

hierarchies, 561562

materialization, 568571

multithreaded implementations, 548

partitioning, 562563

processing tables, 550

relationships (data models), 561562, 565568

row-level security, 639

scan operations, 549

segmentation, 562563

sort orders, 560561

VertiPaq Analyzer

columns (tables), 580583

gathering data model information, 579584

VertiPaq Analyzer, Relationship reports, 584

VertiPaq mode, 488489

composite data models, 488

single data models, 488

VertiPaq SE queries, 624

composite data models, 646647

datacaches, parallelism and, 635637

DISTINCTCOUNT function, 634635

scan time, 632634

xmSQL queries and, 624

aggregation functions, 625627

arithmetical operations, 627

batch events, 630632

filter operations, 628630

join operators, 630

VertiPaq SE Query Cache Match events (SQL Server Profiler), 621

VertiPaq SE Query End events (SQL Server Profiler), 621

virtual relationships, 480, 507

dynamic segmentation, 485488

physical relationships versus, 506507

transferring filters, 480481

CALCULATE function, 482

CONTAINS function, 481482

FILTER function, 481482, 484485

INTERSECT function, 483484

TREATAS function, 482483, 484

W

weak relationships, 2, 439, 488, 489, 504506

weeks (custom calendars), time intelligence calculations, 272275

work days between two dates, computing, 519523

nonworking days, 523525

precomputing values (calculations), 525527

X

xmSQL

CallbackDataID function

parallelism and, 641

VertiPaq and, 640644

VertiPaq queries, 548

xmSQL queries, 624

aggregation functions, 625627

arithmetic operations, 627

batch events, 630632

filter operations, 628630

join operators, 630

Y

YOY (Year-Over-Year) calculation item, 289290

YOY% (Year-Over-Year Percentage) calculation item, 289290

YTD (Year-to-Date) calculations

calculation group precedence, 299303

calculation items

applying to expressions, 294

sideways recursion, 307

time intelligence calculations, 235236, 259262, 276277

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.21.86