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