![]()
一位零售經(jīng)理花了3小時手動篩選Excel表格,只為找出"過去90天利潤超20%且銷量過500的產(chǎn)品"。同一時刻,懂DAX的同事輸入一行公式,30秒出結(jié)果。差距不在智商,在于多數(shù)人把Power BI用成了"高級Excel"——而微軟早就埋了更鋒利的工具。
CALCULATE:數(shù)據(jù)分析的"如果"按鈕
這是DAX的底層操作系統(tǒng)。原話:「It changes the context of a calculation.」
想象你在看全國銷售報(bào)表,老板突然問"高端品類表現(xiàn)如何"。沒有CALCULATE,你得新建一張表、重新導(dǎo)入數(shù)據(jù)、再算一遍。有了它,公式這樣寫:
High End Sales = CALCULATE(SUM(Sales[Amount]), Products[Category] = "High-End")
原話解釋:「It lets you ask questions like 'what if?' without changing your original data.」數(shù)據(jù)上下文像俄羅斯套娃,CALCULATE負(fù)責(zé)拆開你想看的那一層。它不修改原始數(shù)據(jù),只臨時切換計(jì)算視角。
實(shí)際場景:財(cái)務(wù)想看"剔除促銷后的真實(shí)毛利率",運(yùn)營想看"華東區(qū)VIP客戶貢獻(xiàn)"。同一套數(shù)據(jù),不同切片,靠這一個函數(shù)來回切換。
SUMX:為什么簡單求和會坑你
Excel用戶最順手的SUM,在Power BI里可能是陷阱。
假設(shè)銷售表有Price和Quantity兩列。直接SUM(Price)*SUM(Quantity)?你會得到"平均單價×總銷量"的荒謬結(jié)果。原話:「It's more accurate than a simple sum.」
SUMX的運(yùn)作像老式收銀機(jī):逐行掃描,每行算Price×Quantity,最后累加。
Total Revenue = SUMX(Sales, Sales[Price] * Sales[Quantity])
![]()
原話強(qiáng)調(diào):「It goes row by row... handles complex logic that a simple sum cannot.」行級計(jì)算是DAX的分水嶺。不懂這個,你的"總營收"可能永遠(yuǎn)對不上財(cái)務(wù)部的數(shù)字。
延伸:AVERAGEX、MINX、MAXX同屬X函數(shù)家族,邏輯相同——先遍歷,后聚合。
DATESINPERIOD:時間維度的自動駕駛
每月初手動改報(bào)表日期范圍?這個函數(shù)讓報(bào)告永遠(yuǎn)"新鮮"。
Sales Last 3 Months = CALCULATE(SUM(Sales[Amount]), DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -3, MONTH))
拆解:MAX('Date'[Date])找到最新日期,-3 MONTH往回倒推,CALCULATE框定計(jì)算范圍。原話:「Instead of manually filtering dates every month, this automates your reports.」
關(guān)鍵在負(fù)號。寫-3是回溯,寫3是預(yù)測。季度環(huán)比、滾動12個月、同比去年——時間智能的骨架都在這里。
一個細(xì)節(jié):必須自建獨(dú)立的Date表,不能直接用Sales表的日期列。這是90%新手踩的第一坑。
FILTER:當(dāng)篩選條件本身就是計(jì)算結(jié)果
CALCULATE的篩選參數(shù)通常是固定值,比如Region="North"。但如果條件是"消費(fèi)總額超1000的客戶",固定值不夠用。
High Value Customers = CALCULATE(DISTINCTCOUNT(Customers[ID]), FILTER(Customers, CALCULATE(SUM(Sales[Amount])) > 1000))
原話點(diǎn)破:「It allows you to filter based on the result of a calculation, not just raw data.」FILTER先對客戶表逐行計(jì)算歷史消費(fèi),再篩出符合條件的ID,最后去重計(jì)數(shù)。
![]()
嵌套CALCULATE是高級玩法。外層算客戶數(shù),內(nèi)層算每個客戶的消費(fèi)額——上下文切換兩次,像望遠(yuǎn)鏡調(diào)焦。
典型場景:RFM模型里的M(Monetary),客戶分層,LTV預(yù)測。沒有FILTER,這些模型搭不起來。
DIVIDE:除法里的安全氣囊
利潤率公式人人會寫:[Total Profit]/[Total Revenue]。但當(dāng)某月營收為零,報(bào)表炸出"Infinity"或"NaN",老板的臉色比錯誤代碼更難看。
Profit Margin = DIVIDE([Total Profit], [Total Revenue], 0)
第三個參數(shù)是"備選方案"。原話:「If the revenue is zero, just show zero instead of breaking.」
這個函數(shù)很小,但防御性編程的意識很大。業(yè)務(wù)數(shù)據(jù)永遠(yuǎn)不干凈:新店開業(yè)首月、季節(jié)性停售、數(shù)據(jù)錄入延遲——零值和空值是常態(tài),不是異常。
對比Excel的IFERROR,DIVIDE更輕量,專為度量值設(shè)計(jì)。寫進(jìn)模板,能避免未來無數(shù)個深夜debug。
組合實(shí)戰(zhàn):一個公式回答老板的真實(shí)問題
回到開頭的零售經(jīng)理。需求拆解:利潤>20%、銷量>500、時間窗口90天。
五個函數(shù)全部登場:CALCULATE切換上下文,DATESINPERIOD鎖定90天,SUMX算實(shí)際銷量(Price×Quantity),DIVIDE算利潤率,F(xiàn)ILTER把兩個條件打包塞進(jìn)篩選器。
原話總結(jié):「You don't need to be a programmer to be good at business analytics. You just need to know how to ask the right questions and master these 5 building blocks.」
這五個函數(shù)覆蓋80%業(yè)務(wù)場景,不是夸張。剩下的20%?大概率是你把問題想復(fù)雜了。
最后留一個細(xì)節(jié):那位30秒出結(jié)果的同事,把常用組合存成了DAX模板。下次類似需求,復(fù)制粘貼改參數(shù)——這才是"工具人"和"分析師"的真正差距。你的DAX代碼庫,現(xiàn)在有幾個可復(fù)用的片段?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.