DAX權(quán)威指南:運(yùn)用Power BI、SQL Server Analysis Services和Excel實(shí)現(xiàn)商業(yè)智能分析(第2版)
定 價:188 元
- 作者:(意)Marco Russo(馬爾·科魯索),Alberto Ferrari(阿爾貝托·費(fèi)拉里)
- 出版時間:2021/3/1
- ISBN:9787121405051
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP317.3
- 頁碼:712
- 紙張:
- 版次:01
- 開本:16開
本書是微軟DAX語言在商業(yè)智能分析、數(shù)據(jù)建模和數(shù)據(jù)分析方面的指南。通過對本書的學(xué)習(xí),你將了解如何使用DAX語言進(jìn)行商業(yè)智能分析、數(shù)據(jù)建模和數(shù)據(jù)分析;你將掌握從基礎(chǔ)表函數(shù)到高級代碼,以及模型優(yōu)化的所有內(nèi)容;你將確切了解在運(yùn)行DAX表達(dá)式時,引擎內(nèi)部所執(zhí)行的操作,并利用這些知識編寫可以高速運(yùn)行且健壯的代碼。本書第2版的重點(diǎn)內(nèi)容包括基于免費(fèi)的Power BI Desktop來構(gòu)建和運(yùn)行示例,幫助你在Power Bl、SQL Server Analysis Services或Excel中充分利用強(qiáng)大的變量(VAR)語法。你想要使用DAX所有的強(qiáng)大功能嗎?那么這本未進(jìn)行任何刪減、深入淺出的著作正是你所需要的。本書適合Excel高級用戶、商業(yè)智能分析人員、使用DAX和微軟分析工具的專業(yè)人士。
Marco Russo是SQLBI.COM的創(chuàng)始人。其定期發(fā)布關(guān)于微軟Power BI、PowerPivot、DAX和SQL Server的文章。自2009年測試版的Power Pivot發(fā)布以來,SQLBI.COM成了DAX相關(guān)文章和教程的主要來源之一。他為商業(yè)智能(Business Intelligence,BI)解決方案提供咨詢和指導(dǎo),并精通與BI相關(guān)的微軟技術(shù)。他編寫了很多關(guān)于Power Pivot、DAX和Analysis Services的文章、圖書。
高飛數(shù)據(jù)分析師,BI總監(jiān)2015年接觸Power Pivot,被DAX語言的強(qiáng)大和靈活所吸引。2016年3月創(chuàng)建了面向Power BI用戶的微信公眾號“Power BI極客”,并更新至今。2019年上線同名網(wǎng)站PowerBIGeek.com,致力于打造一個綜合性的Power BI中文學(xué)習(xí)網(wǎng)站,F(xiàn)從事技術(shù)分享,企業(yè)BI項(xiàng)目實(shí)施和培訓(xùn)工作。微軟Power BI最有價值專家(MVP),Power BI可視化大賽評委,ExcelHome論壇版主。
目 錄
第1章 DAX是什么 1
理解數(shù)據(jù)模型 1
理解關(guān)系的方向 3
給Excel用戶的DAX學(xué)習(xí)建議 5
單元格和智能表格 5
Excel函數(shù)和DAX:兩種函數(shù)式語言 7
使用迭代器 7
DAX相關(guān)理論 8
給SQL開發(fā)人員的DAX學(xué)習(xí)建議 8
處理關(guān)系 9
DAX是函數(shù)式語言 9
DAX是一種編程語言和查詢語言 10
DAX和SQL中的子查詢與條件語句 10
給MDX開發(fā)者的DAX學(xué)習(xí)建議 11
多維模型和表格模型 12
DAX是一種編程語言和查詢語言 12
層級結(jié)構(gòu) 12
葉級計(jì)算 14
給Power BI用戶的DAX學(xué)習(xí)建議 14
第2章 DAX介紹 15
理解DAX計(jì)算 15
DAX的數(shù)據(jù)類型 17
DAX運(yùn)算符 20
表構(gòu)造器 22
條件語句 22
理解計(jì)算列和度量值 23
計(jì)算列 23
度量值 24
正確選擇計(jì)算列和度量值 27
變量 28
處理DAX表達(dá)式中的錯誤 29
轉(zhuǎn)換錯誤 29
算術(shù)運(yùn)算錯誤 30
空值或缺失值 30
截獲錯誤 32
生成錯誤 35
規(guī)范化DAX代碼 36
聚合函數(shù)和迭代函數(shù)介紹 39
認(rèn)識常用的DAX函數(shù) 42
聚合函數(shù) 42
邏輯函數(shù) 43
信息函數(shù) 45
數(shù)學(xué)函數(shù) 45
三角函數(shù) 46
文本函數(shù) 46
轉(zhuǎn)換函數(shù) 48
日期和時間函數(shù) 48
關(guān)系函數(shù) 49
結(jié)論 51
第3章 使用基礎(chǔ)表函數(shù) 52
表函數(shù)介紹 52
EVALUATE函數(shù)語法介紹 54
理解FILTER函數(shù) 56
ALL和ALLEXCEPT函數(shù)介紹 58
理解VALUES、DISTINCT函數(shù)和空行 63
將表用作作為標(biāo)量值 68
ALLSELECTED函數(shù)介紹 70
結(jié)論 72
第4章 理解計(jì)值上下文 73
計(jì)值上下文介紹 74
理解篩選上下文 74
理解行上下文 79
測試你對計(jì)值上下文的理解 81
在計(jì)算列中使用SUM函數(shù) 81
在度量值中使用列 83
使用迭代函數(shù)創(chuàng)建行上下文 83
嵌套多個表的行上下文 84
同一個表上的多層嵌套行上下文 85
使用EARLIER函數(shù) 90
理解FILTER、ALL函數(shù)和上下文交互 91
使用多個表 94
行上下文和關(guān)系 95
篩選上下文和關(guān)系 98
在篩選上下文中使用DISTINCT和SUMMARIZE函數(shù) 102
結(jié)論 105
第5章 理解CALCULATE和CALCULATETABLE函數(shù) 107
CALCULATE和CALCULATETABLE函數(shù)介紹 107
創(chuàng)建篩選上下文 108
CALCULATE函數(shù)介紹 111
使用CALCULATE函數(shù)計(jì)算百分比 116
KEEPFILTERS函數(shù)介紹 126
篩選單列 130
篩選復(fù)雜條件 131
CALCULATE計(jì)值順序 135
理解上下文轉(zhuǎn)換 139
行上下文和篩選上下文回顧 139
上下文轉(zhuǎn)換介紹 142
計(jì)算列中的上下文轉(zhuǎn)換 145
度量值中的上下文轉(zhuǎn)換 148
理解循環(huán)依賴 151
CALCULATE函數(shù)調(diào)節(jié)器 155
理解USERELATIONSHIP函數(shù) 155
理解CROSSFILTER函數(shù) 158
理解KEEPFILTERS函數(shù) 159
理解CALCULATE函數(shù)中的ALL函數(shù) 160
無參數(shù)的ALL和ALLSELECTED函數(shù)介紹 162
CALCULATE規(guī)則總結(jié) 163
第6章 變量 165
VAR語法介紹 165
變量是常數(shù) 167
理解變量的范圍 168
使用表作為變量 171
理解惰性計(jì)算 173
使用變量的常見模式 174
結(jié)論 176
第7章 迭代函數(shù)和CALCULATE函數(shù)的使用 177
迭代函數(shù)的使用 177
理解迭代的基數(shù) 178
在迭代函數(shù)中使用上下文轉(zhuǎn)換 180
CONCATENATEX函數(shù)的使用 184
返回表的迭代函數(shù) 186
使用迭代函數(shù)解決常見問題 189
計(jì)算平均和移動平均 189
RANKX函數(shù)的使用 192
改變計(jì)算的顆粒度 200
結(jié)論 204
第8章 時間智能計(jì)算 205
時間智能介紹 205
Power BI中的“自動日期/時間” 206
Excel Power Pivot中的自動日期列 207
Excel Power Pivot中的日期表模板 208
創(chuàng)建日期表 208
CALENDAR和CALENDARAUTO函數(shù)的使用 209
多個日期表的使用 212
處理連接到與日期表的多個關(guān)系 212
處理多個日期表 214
理解基礎(chǔ)時間智能計(jì)算 215
標(biāo)記為日期表 219
基礎(chǔ)時間智能函數(shù)介紹 221
計(jì)算年初至今、季度初至今和月初至今 222
計(jì)算平移后的周期平移 224
嵌套混合使用時間智能函數(shù) 227
計(jì)算周期之間的差異 229
計(jì)算移動年度總計(jì) 231
為嵌套的時間智能函數(shù)選擇正確的調(diào)用順序 232
理解半累加計(jì)算 234
使用LASTDATE和LASTNONBLANK函數(shù) 236
使用期初和期末余額 241
理解高級時間智能計(jì)算 245
理解累計(jì)至今區(qū)間 246
理解DATEADD函數(shù) 249
理解FIRSTDATE、LASTDATE、FIRSTNONBLANK和
LASTNONBLANK函數(shù) 255
利用時間智能函數(shù)進(jìn)行鉆取 258
使用自定義日期表 258
基于周的時間智能 259
自定義YTD、QTD和MTD 262
結(jié)論 264
第9章 計(jì)算組 265
計(jì)算組介紹 265
創(chuàng)建計(jì)算組 268
理解計(jì)算組 274
理解計(jì)算項(xiàng)的應(yīng)用 277
理解計(jì)算組優(yōu)先級 285
在計(jì)算項(xiàng)中包含或排除度量值 289
理解橫向遞歸 292
使用最佳實(shí)踐 296
結(jié)論 296
第10章 使用篩選上下文 298
使用HASONEVALUE和SELECTEDVALUE函數(shù) 299
ISFILTERED和ISCROSSFILTERED函數(shù)介紹 303
理解VALUES和FILTERS函數(shù)的區(qū)別 306
理解ALLEXCEPT和ALL/VALUES函數(shù)的區(qū)別 308
使用ALL函數(shù)避免上下文轉(zhuǎn)換 312
使用ISEMPTY函數(shù) 314
數(shù)據(jù)沿襲和TREATAS函數(shù)介紹 316
使用固化篩選器 320
結(jié)論 326
第11章 處理層級結(jié)構(gòu) 328
計(jì)算層級占比 328
處理父/子層級結(jié)構(gòu) 333
結(jié)論 344
第12章 使用表函數(shù) 345
使用CALCULATETABLE函數(shù) 345
操作表的函數(shù) 347
使用ADDCOLUMNS函數(shù) 348
使用SUMMARIZE函數(shù) 351
使用CROSSJOIN函數(shù) 354
使用UNION函數(shù) 356
使用INTERSECT函數(shù) 360
使用EXCEPT函數(shù) 361
使用表作為篩選器 363
實(shí)現(xiàn)或(OR)條件 364
將銷售額的計(jì)算范圍縮小至首年客戶 367
計(jì)算新客戶 368
使用DETAILROWS函數(shù)復(fù)用表表達(dá)式 370
創(chuàng)建計(jì)算表 372
使用SELECTCOLUMNS函數(shù) 372
使用ROW函數(shù)創(chuàng)建靜態(tài)表 373
使用DATATABLE函數(shù)創(chuàng)建靜態(tài)表 374
使用GENERATESERIES函數(shù) 375
結(jié)論 376
第13章 編寫查詢 377
DAX Studio介紹 377
理解EVALUATE函數(shù) 378
EVALUATE函數(shù)語法介紹 378
在DEFINE函數(shù)中使用VAR 379
在DEFINE函數(shù)中使用度量值 381
實(shí)現(xiàn)DAX查詢的常用模式 382
使用ROW函數(shù)測試度量值 382
使用SUMMARIZE函數(shù) 383
使用SUMMARIZECOLUMNS函數(shù) 385
使用TOPN函數(shù) 391
使用GENERATE和GENERATEALL函數(shù) 396
使用ISONORAFTER函數(shù) 399
使用ADDMISSINGITEMS函數(shù) 401
使用TOPNSKIP函數(shù) 402
使用GROUPBY函數(shù) 402
使用NATURALINNERJOIN和NATURALLEFTOUTERJOIN函數(shù) 405
使用SUBSTITUTEWITHINDEX函數(shù) 407
使用SAMPLE函數(shù) 409
理解DAX查詢中的自動匹配(Auto-Exists)行為 410
結(jié)論 416
第14章 高級DAX原理 418
擴(kuò)展表介紹 418
理解RELATED函數(shù) 422
在計(jì)算列中使用RELATED函數(shù) 424
理解表篩選器和列篩選器的區(qū)別 425
在度量值中使用表篩選器 428
理解活動關(guān)系 431
表的擴(kuò)展行為和篩選行為的區(qū)別 433
擴(kuò)展表中的上下文轉(zhuǎn)換 435
理解ALLSELECTED函數(shù)和影子篩選上下文 436
影子篩選上下文介紹 437
ALLSELECTED函數(shù)返回迭代的行 441
無參數(shù)的ALLSELECTED函數(shù) 443
ALL系列函數(shù) 443
ALL函數(shù) 445
ALLEXCEPT函數(shù) 446
ALLNOBLANKROW函數(shù) 446
ALLSELECTED函數(shù) 446
ALLCROSSFILTERED函數(shù) 446
理解數(shù)據(jù)沿襲 446
結(jié)論 449
第15章 高級關(guān)系 451
使用計(jì)算列創(chuàng)建物理關(guān)系 451
創(chuàng)建基于多列的關(guān)系 451
創(chuàng)建基于范圍的關(guān)系 453
使用計(jì)算列創(chuàng)建關(guān)系中的循環(huán)依賴問題 456
使用虛擬關(guān)系 459
在DAX中轉(zhuǎn)移篩選器 460
使用TREATAS函數(shù)轉(zhuǎn)移篩選器 462
使用INTERSECT函數(shù)轉(zhuǎn)移篩選器 463
使用FILTER函數(shù)轉(zhuǎn)移篩選器 464
使用虛擬關(guān)系實(shí)現(xiàn)動態(tài)分組 465
理解DAX中的物理關(guān)系 468
使用雙向交叉篩選器 470
理解一對多關(guān)系 472
理解一對一關(guān)系 473
理解多對多關(guān)系 473
通過橋接表實(shí)現(xiàn)多對多關(guān)系 473
通過公共維度表實(shí)現(xiàn)多對多關(guān)系 479
使用MMR弱關(guān)系實(shí)現(xiàn)多對多關(guān)系 483
選擇正確的關(guān)系類型 485
管理數(shù)據(jù)顆粒度 486
管理關(guān)系中的歧義 490
理解活動關(guān)系中的歧義 492
解決非活動關(guān)系中的歧義 494
結(jié)論 496
第16章 DAX中的高級計(jì)算 497
計(jì)算兩個日期之間的工作日數(shù)量 497
同時展示預(yù)算數(shù)據(jù)和銷售數(shù)據(jù) 505
計(jì)算同店銷售額 508
對事件進(jìn)行排序 514
根據(jù)最新銷售日期計(jì)算上一年的銷售額 517
結(jié)論 522
第17章 DAX引擎 523
了解DAX引擎的架構(gòu) 523
公式引擎介紹 524
存儲引擎介紹 525
VertiPaq(in-memory)存儲引擎介紹 526
DirectQuery存儲引擎介紹 527
理解數(shù)據(jù)刷新 527
理解VertiPaq存儲引擎 528
列式數(shù)據(jù)庫介紹 528
理解VertiPaq壓縮 531
理解值編碼 531
理解哈希編碼 532
理解行程長度編碼(RLE) 533
理解再編碼 536
確定最佳排序順序 536
理解層級和關(guān)系 538
理解分段和分區(qū) 539
使用動態(tài)管理視圖 540
理解關(guān)系在VertiPaq中的運(yùn)用 542
物化介紹 545
聚合表介紹 547
為VertiPaq配置合適的硬件 549
是否可以自主選擇硬件 550
設(shè)置硬件優(yōu)先級 550
CPU型號 550
內(nèi)存速度 552
內(nèi)核數(shù)量 552
內(nèi)存大小 552
硬盤I/O和分頁 553
硬件選擇的最佳實(shí)踐 553
結(jié)論 553
第18章 優(yōu)化VertiPaq引擎 555
收集有關(guān)數(shù)據(jù)模型的信息 555
反規(guī)范化 560
列基數(shù) 566
處理日期和時間列 567
計(jì)算列 570
使用布爾類型的計(jì)算列優(yōu)化復(fù)雜篩選器 572
計(jì)算列的處理 573
存儲合適的列 574
優(yōu)化列存儲 577
列的拆分優(yōu)化 577
優(yōu)化大基數(shù)列 578
禁用屬性層級結(jié)構(gòu) 578
優(yōu)化鉆取屬性 579
管理VertiPaq聚合表 579
結(jié)論 582
第19章 分析DAX查詢計(jì)劃 583
捕獲DAX查詢 583
DAX查詢計(jì)劃介紹 586
收集查詢計(jì)劃 587
邏輯查詢計(jì)劃介紹 587
物理查詢計(jì)劃介紹 588
存儲引擎查詢介紹 589
獲取配置信息 590
使用DAX Studio 591
使用 SQL Server Profiler 594
讀懂VertiPaq存儲引擎查詢 597
xmSQL語法介紹 597
聚合函數(shù) 598
算術(shù)運(yùn)算 600
篩選運(yùn)算 600
Join運(yùn)算符 602
批處理事件中的臨時表和淺關(guān)系 603
理解掃描時間 605
理解DISTINCTCOUNT函數(shù)的內(nèi)部行為 606
理解并行度和數(shù)據(jù)緩存 607
理解VertiPaq緩存 609
理解CallbackDataID函數(shù) 611
讀懂DirectQuery模式下的存儲引擎查詢 616
分析復(fù)合模型 617
在數(shù)據(jù)模型中使用聚合表 618
讀懂查詢計(jì)劃 620
結(jié)論 626
第20章 DAX優(yōu)化 628
定義優(yōu)化策略 629
確定要優(yōu)化的單個DAX表達(dá)式 629
創(chuàng)建查詢副本 632
創(chuàng)建DAX查詢副本 632
使用DAX Studio創(chuàng)建查詢度量值 633
創(chuàng)建MDX查詢副本 635
分析執(zhí)行時間和查詢計(jì)劃信息 636
發(fā)現(xiàn)存儲引擎或公式引擎中的性能瓶頸 639
修改并重新運(yùn)行測試查詢 639
優(yōu)化DAX表達(dá)式中的瓶頸 639
優(yōu)化篩選條件 640
優(yōu)化上下文轉(zhuǎn)換 644
優(yōu)化IF條件 650
優(yōu)化度量值中的IF函數(shù) 650
選擇IF函數(shù)還是DIVIDE函數(shù) 655
優(yōu)化迭代函數(shù)中的IF函數(shù) 658
減少CallbackDataID函數(shù)帶來的影響 661
優(yōu)化嵌套的迭代函數(shù) 665
避免在表篩選器中使用DISTINCTCOUNT函數(shù) 671
使用變量避免重復(fù)計(jì)算 676
結(jié)語結(jié)論 681