Muutke küpsiste eelistusi

E-raamat: Definitive Guide to DAX, The: Business intelligence for Microsoft Power BI, SQL Server Analysis Services, and Excel

  • Formaat: 768 pages
  • Sari: Business Skills
  • Ilmumisaeg: 02-Jul-2019
  • Kirjastus: Microsoft Press
  • Keel: eng
  • ISBN-13: 9780134865881
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 38,60 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 768 pages
  • Sari: Business Skills
  • Ilmumisaeg: 02-Jul-2019
  • Kirjastus: Microsoft Press
  • Keel: eng
  • ISBN-13: 9780134865881
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

This comprehensive and authoritative guide will teach you the DAX language for business intelligence, data modeling, and analytics. Leading Microsoft BI consultants Marco Russo and Alberto Ferrari help you master everything from table functions through advanced code and model optimization. You’ll learn exactly what happens under the hood when you run a DAX expression, how DAX behaves differently from other languages, and how to use this knowledge to write fast, robust code. If you want to leverage all of DAX’s remarkable power and flexibility, this no-compromise “deep dive” is exactly what you need.
 
Perform powerful data analysis with DAX for Microsoft SQL Server Analysis Services, Excel, and Power BI
  • Master core DAX concepts, including calculated columns, measures, and error handling
  • Understand evaluation contexts and the CALCULATE and CALCULATETABLE functions
  • Perform time-based calculations: YTD, MTD, previous year, working days, and more
  • Work with expanded tables, complex functions, and elaborate DAX expressions
  • Perform calculations over hierarchies, including parent/child hierarchies
  • Use DAX to express diverse and unusual relationships
  • Measure DAX query performance with SQL Server Profiler and DAX Studio
Foreword xvii
Introduction to the second edition xx
Introduction to the first edition xxi
Chapter 1 What is DAX? 1(16)
Understanding the data model
1(4)
Understanding the direction of a relationship
3(2)
DAX for Excel users
5(4)
Cells versus tables
5(2)
Excel and DAX: Two functional languages
7(1)
Iterators in DAX
8(1)
DAX requires theory
8(1)
DAX for SQL developers
9(3)
Relationship handling
9(1)
DAX is a functional language
10(1)
DAX as a programming and querying language
10(1)
Subqueries and conditions in DAX and SQL
11(1)
DAX for MDX developers
12(2)
Multidimensional versus Tabular
12(1)
DAX as a programming and querying language
12(1)
Hierarchies
13(1)
Leaf-level calculations
14(1)
DAX for Power BI users
14(3)
Chapter 2 Introducing DAX 17(40)
Understanding DAX calculations
17(8)
DAX data types
19(4)
DAX operators
23(1)
Table constructors
24(1)
Conditional statements
24(1)
Understanding calculated columns and measures
25(5)
Calculated columns
25(1)
Measures
26(4)
Introducing variables
30(1)
Handling errors in DAX expressions
31(8)
Conversion errors
31(1)
Arithmetic operations errors
32(3)
Intercepting errors
35(3)
Generating errors
38(1)
Formatting DAX code
39(3)
Introducing aggregators and iterators
42(3)
Using common DAX functions
45(10)
Aggregation functions
45(1)
Logical functions
46(2)
Information functions
48(1)
Mathematical functions
49(1)
Trigonometric functions
50(1)
Text functions
50(1)
Conversion functions
51(1)
Date and time functions
52(1)
Relational functions
53(2)
Conclusions
55(2)
Chapter 3 Using basic table functions 57(22)
Introducing table functions
57(2)
Introducing EVALUATE syntax
59(2)
Understanding FILTER
61(2)
Introducing ALL and ALLEXCEPT
63(5)
Understanding VALUES, DISTINCT and the blank row
68(4)
Using tables as scalar values
72(3)
Introducing ALLSELECTED
75(2)
Conclusions
77(2)
Chapter 4 Understanding evaluation contexts 79(36)
Introducing evaluation contexts
80(8)
Understanding filter contexts
80(5)
Understanding the row context
85(3)
Testing your understanding of evaluation contexts
88(2)
Using SUM in a calculated column
88(1)
Using columns in a measure
89(1)
Using the row context with iterators
90(8)
Nested row contexts on different tables
91(1)
Nested row contexts on the same table
92(5)
Using the EARLIER function
97(1)
Understanding FILTER, ALL, and context interactions
98(3)
Working with several tables
101(8)
Row contexts and relationships
102(4)
Filter context and relationships
106(3)
Using DISTINCT and SUMMARIZE in filter contexts
109(4)
Conclusions
113(2)
Chapter 5 Understanding CALCULATE and CALCULATETABLE 115(60)
Introducing CALCULATE and CALCULATETABLE
115(33)
Creating filter contexts
115(4)
Introducing CALCULATE
119(5)
Using CALCULATE to compute percentages
124(11)
Introducing KEEPFILTERS
135(3)
Filtering a single column
138(2)
Filtering with complex conditions
140(4)
Evaluation order in CALCULATE
144(4)
Understanding context transition
148(13)
Row context and filter context recap
148(3)
Introducing context transition
151(3)
Context transition in calculated columns
154(3)
Context transition with measures
157(4)
Understanding circular dependencies
161(3)
CALCULATE modifiers
164(8)
Understanding USERELATIONSHIP
164(4)
Understanding CROSSFILTER
168(1)
Understanding KEEPFILTERS
168(1)
Understanding ALL in CALCULATE
169(2)
Introducing ALL and ALLSELECTED with no parameters
171(1)
CALCULATE rules
172(3)
Chapter 6 Variables 175(12)
Introducing VAR syntax
175(2)
Understanding that variables are constant
177(1)
Understanding the scope of variables
178(3)
Using table variables
181(1)
Understanding lazy evaluation
182(1)
Common patterns using variables
183(2)
Conclusions
185(2)
Chapter 7 Working with iterators and with CALCULATE 187(30)
Using iterators
187(12)
Understanding iterator cardinality
188(2)
Leveraging context transition in iterators
190(4)
Using CONCATENATEX
194(2)
Iterators returning tables
196(3)
Solving common scenarios with iterators
199(16)
Computing averages and moving averages
199(4)
Using RANKX
203(8)
Changing calculation granularity
211(4)
Conclusions
215(2)
Chapter 8 Time intelligence calculations 217(62)
Introducing time intelligence
217(3)
Automatic Date/Time in Power 81
218(1)
Automatic date columns in Power Pivot for Excel
219(1)
Date table template in Power Pivot for Excel
220(1)
Building a date table
220(8)
Using CALENDAR and CALENDARAUTO
222(2)
Working with multiple dates
224(1)
Handling multiple relationships to the Date table
224(2)
Handling multiple date tables
226(2)
Understanding basic time intelligence calculations
228(5)
Using Mark as Date Table
232(1)
Introducing basic time intelligence functions
233(13)
Using year-to-date, quarter-to-date, and month-to-date
235(2)
Computing time periods from prior periods
237(2)
Mixing time intelligence functions
239(2)
Computing a difference over previous periods
241(2)
Computing a moving annual total
243(2)
Using the right call order for nested time intelligence functions
245(1)
Understanding semi-additive calculations
246(12)
Using LASTDATE and LASTNONBLANK
248(6)
Working with opening and closing balances
254(4)
Understanding advanced time intelligence calculations
258(14)
Understanding periods to date
259(3)
Understanding DATEADD
262(7)
Understanding FIRSTDATE, LASTDATE, FIRSTNONBLANK, and LASTNONBLANK
269(2)
Using drillthrough with time intelligence
271(1)
Working with custom calendars
272(5)
Working with weeks
272(4)
Custom year-to-date, quarter-to-date, and month-to-date
276(1)
Conclusions
277(2)
Chapter 9 Calculation groups 279(34)
Introducing calculation groups
279(2)
Creating calculation groups
281(7)
Understanding calculation groups
288(18)
Understanding calculation item application
291(8)
Understanding calculation group precedence
299(5)
Including and excluding measures from calculation items
304(2)
Understanding sideways recursion
306(5)
Using the best practices
311(1)
Conclusions
311(2)
Chapter 10 Working with the filter context 313(32)
Using HASONEVALUE and SELECTEDVALUE
314(5)
Introducing ISFILTERED and ISCROSSFILTERED
319(3)
Understanding differences between VALUES and FILTERS
322(2)
Understanding the difference between ALLEXCEPT and ALL/VALUES
324(4)
Using ALL to avoid context transition
328(2)
Using ISEMPTY
330(2)
Introducing data lineage and TREATAS
332(4)
Understanding arbitrarily shaped filters
336(7)
Conclusions
343(2)
Chapter 11 Handling hierarchies 345(18)
Computing percentages over hierarchies
345(5)
Handling parent/child hierarchies
350(12)
Conclusions
362(1)
Chapter 12 Working with tables 363(32)
Using CALCULATETABLE
363(2)
Manipulating tables
365(16)
Using ADDCOLUMNS
366(3)
Using SUMMARIZE
369(3)
Using CROSSJOIN
372(2)
Using UNION
374(4)
Using INTERSECT
378(1)
Using EXCEPT
379(2)
Using tables as filters
381(9)
Implementing OR conditions
381(3)
Narrowing sales computation to the first year's customers
384(2)
Computing new customers
386(2)
Reusing table expressions with DETAILROWS
388(2)
Creating calculated tables
390(4)
Using SELECTCOLUMNS
390(1)
Creating static tables with ROW
391(1)
Creating static tables with DATATABLE
392(1)
Using GENERATESERIES
393(1)
Conclusions
394(1)
Chapter 13 Authoring queries 395(42)
Introducing DAX Studio
395(1)
Understanding EVALUATE
396(4)
Introducing the EVALUATE syntax
396(1)
Using VAR in DEFINE
397(2)
Using MEASURE in DEFINE
399(1)
Implementing common DAX query patterns
400(29)
Using ROW to test measures
400(1)
Using SUMMARIZE
401(2)
Using SUMMARIZECOLUMNS
403(6)
Using TOPN
409(6)
Using GENERATE and GENERATEALL
415(3)
Using ISONORAFTER
418(2)
Using ADDMISSINGITEMS
420(1)
Using TOPNSKIP
421(1)
Using GROUPBY
421(3)
Using NATURALINNERJOIN and NATURALLEFTOUTERJOIN
424(2)
Using SUBSTITUTE WITHINDEX
426(2)
Using SAMPLE
428(1)
Understanding the auto-exists behavior in DAX queries
429(6)
Conclusions
435(2)
Chapter 14 Advanced DAX concepts 437(34)
Introducing expanded tables
437(7)
Understanding RELATED
441(2)
Using RELATED in calculated columns
443(1)
Understanding the difference between table filters and column filters
444(12)
Using table filters in measures
447(4)
Understanding active relationships
451(2)
Difference between table expansion and filtering
453(2)
Context transition in expanded tables
455(1)
Understanding ALLSELECTED and shadow filter contexts
456(7)
Introducing shadow filter contexts
457(4)
ALLSELECTED returns the iterated rows
461(2)
ALLSELECTED without parameters
463(1)
The ALL* family of functions
463(3)
ALL
465(1)
ALLEXCEPT
466(1)
ALLNOBLANKROW
466(1)
ALLSELECTED
466(1)
ALLCROSSFILTERED
466(1)
Understanding data lineage
466(3)
Conclusions
469(2)
Chapter 15 Advanced relationships 471(48)
Implementing calculated physical relationships
471(9)
Computing multiple-column relationships
471(3)
Implementing relationships based on ranges
474(2)
Understanding circular dependency in calculated physical relationships
476(4)
Implementing virtual relationships
480(8)
Transferring filters in DAX
480(2)
Transferring a filter using TREATAS
482(1)
Transferring a filter using INTERSECT
483(1)
Transferring a filter using FILTER
484(1)
Implementing dynamic segmentation using virtual relationships
485(3)
Understanding physical relationships in DAX
488(3)
Using bidirectional cross-filters
491(2)
Understanding one-to-many relationships
493(1)
Understanding one-to-one relationships
493(1)
Understanding many-to-many relationships
494(12)
Implementing many-to-many using a bridge table
494(6)
Implementing many-to-many using a common dimension
500(4)
Implementing many-to-many using MMR weak relationships
504(2)
Choosing the right type of relationships
506(1)
Managing granularities
507(5)
Managing ambiguity in relationships
512(5)
Understanding ambiguity in active relationships
514(1)
Solving ambiguity in non-active relationships
515(2)
Conclusions
517(2)
Chapter 16 Advanced calculations in DAX 519(26)
Computing the working days between two dates
519(8)
Showing budget and sales together
527(3)
Computing same-store sales
530(6)
Numbering sequences of events
536(3)
Computing previous year sales up to last date of sales
539(5)
Conclusions
544(1)
Chapter 17 The DAX engines 545(34)
Understanding the architecture of the DAX engines
545(5)
Introducing the formula engine
547(1)
Introducing the storage engine
547(1)
Introducing the VertiPaq (in-memory) storage engine
548(1)
Introducing the DirectQuery storage engine
549(1)
Understanding data refresh
549(1)
Understanding the VertiPaq storage engine
550(15)
Introducing columnar databases
550(3)
Understanding VertiPaq compression
553(9)
Understanding segmentation and partitioning
562(1)
Using Dynamic Management Views
563(2)
Understanding the use of relationships in VertiPaq
565(3)
Introducing materialization
568(3)
Introducing aggregations
571(2)
Choosing hardware for VertiPaq
573(4)
Hardware choice as an option
573(1)
Set hardware priorities
574(1)
CPU model
574(1)
Memory speed
575(1)
Number of cores
576(1)
Memory size
576(1)
Disk I/O and paging
576(1)
Best practices in hardware selection
577(1)
Conclusions
577(2)
Chapter 18 Optimizing VertiPaq 579(30)
Gathering information about the data model
579(5)
Denormalization
584(7)
Columns cardinality
591(1)
Handling date and time
592(3)
Calculated columns
595(4)
Optimizing complex filters with Boolean calculated columns
597(2)
Processing of calculated columns
599(1)
Choosing the right columns to store
599(3)
Optimizing column storage
602(2)
Using column split optimization
602(1)
Optimizing high-cardinality columns
603(1)
Disabling attribute hierarchies
604(1)
Optimizing drill-through attributes
604(1)
Managing VertiPaq Aggregations
604(3)
Conclusions
607(2)
Chapter 19 Analyzing DAX query plans 609(48)
Capturing DAX queries
609(3)
Introducing DAX query plans
612(5)
Collecting query plans
613(1)
Introducing logical query plans
614(1)
Introducing physical query plans
614(2)
Introducing storage engine queries
616(1)
Capturing profiling information
617(7)
Using DAX Studio
617(3)
Using the SQL Server Profiler
620(4)
Reading VertiPaq storage engine queries
624(21)
Introducing xmSQL syntax
624(8)
Understanding scan time
632(2)
Understanding DISTINCTCOUNT internals
634(1)
Understanding parallelism and datacache
635(2)
Understanding the VertiPaq cache
637(3)
Understanding CallbackDatalD
640(5)
Reading DirectQuery storage engine queries
645(4)
Analyzing composite models
646(1)
Using aggregations in the data model
647(2)
Reading query plans
649(6)
Conclusions
655(2)
Chapter 20 Optimizing DAX 657(120)
Defining optimization strategies
658(10)
Identifying a single DAX expression to optimize
658(3)
Creating a reproduction query
661(3)
Analyzing server timings and query plan information
664(3)
Identifying bottlenecks in the storage engine or formula engine
667(1)
Implementing changes and rerunning the test query
668(1)
Optimizing bottlenecks in DAX expressions
668(41)
Optimizing filter conditions
668(4)
Optimizing context transitions
672(6)
Optimizing IF conditions
678(12)
Reducing the impact of CallbockDatoID
690(3)
Optimizing nested iterators
693(6)
Avoiding table filters for DISTINCTCOUNT
699(5)
Avoiding multiple evaluations by using variables
704(5)
Conclusions
709(68)
Index 777
Marco Russo and Alberto Ferrari are the founders of sqlbi.com, where they regularly publish articles about Microsoft Power BI, Power Pivot, DAX, and SQL Server Analysis Services. They have worked with DAX since the fi rst beta version of Power Pivot in 2009 and, during these years, sqlbi.com became one of the major sources for DAX articles and tutorials. Their courses, both in-person and online, are the major source of learning for many DAX enthusiasts.







They both provide consultancy and mentoring on business intelligence (BI) using Microsoft technologies. They have written several books and papers about Power BI, DAX, and Analysis Services. They constantly help the community of DAX users providing content for the websites daxpatterns.com, daxformatter.com, and dax.guide.







Marco and Alberto are also regular speakers at major international conferences, including Microsoft Ignite, PASS Summit, and SQLBits. Contact Marco at marco.russo@sqlbi.com, and contact Alberto at alberto.ferrari@sqlbi.com