Power BI 面試問題
作者 Aaron Cao · 更新於

Power BI 面試聚焦於 DAX 求值上下文、資料建模和重新整理架構。你需要能說明度量值與計算列的區別、解釋篩選上下文與行上下文、為星型架構給出理由、在 Import 與 DirectQuery 之間做取捨,並設定行級安全性(RLS)。
每一輪都會出現哪些 DAX 問題?
你可以做出一份能跑起來的報表,卻依然在 DAX 問題上卡殼,因為面試考察的是求值模型本身,而不是函式清單。本節涵蓋幾乎每場 Power BI 面試都會出現的 DAX 問題,以及一個紮實的回答應包含什麼。
- 度量值和計算列有什麼區別? 計算列在重新整理期間逐行計算並儲存在模型中,佔用記憶體。度量值在查詢時針對當前篩選上下文計算,不儲存任何內容。要說清記憶體佔用和計算時機,而不只是“一個是動態的”。
- 解釋一下行上下文和篩選上下文。 行上下文是迭代過程中的當前行,篩選上下文是切片器、視覺物件和 DAX 施加的一組篩選。大多數令人困惑的結果都源於預期一種上下文卻得到了另一種。
- CALCULATE 的作用是什麼? 它在修改後的篩選上下文中計算一個表示式,並把行上下文轉換為篩選上下文。面試官最想聽到的就是後半句。
- 什麼時候需要像
SUMX這樣的迭代函式? 當計算必須先逐行進行、再聚合時,例如單價乘以數量,而模型中沒有儲存乘積列。 ALL的作用是什麼,為什麼要與 CALCULATE 搭配使用? 它會移除篩選,這正是構建佔比類度量值的方法。- 解釋一下
RELATED與RELATEDTABLE的區別。 方向很關鍵:一個是跨到“一”的一側,另一個是從“多”的一側返回多行。
整場面試都適用的一個習慣:當 DAX 回答開始說不清楚時,就回到“上下文”這個概念。幾乎所有追問最終都歸結為當前是哪種上下文、又是什麼改變了它。
資料建模問題應該怎麼回答?
建模問題能把只會搭報表的人和真正能負責資料集的人區分開來。這裡期望的是維度建模的詞彙。
- 星型架構還是雪花架構?為什麼? 星型架構,因為查詢效能更好、DAX 更簡單,維度採用反規範化設計。只有當某個維度確實很大或被多方共享時才用雪花架構。用單一大表回答,面試基本會提前結束。
- 什麼是事實表,什麼是維度表? 事實表以指定的粒度存放可度量的事件,維度表存放你用來切片的屬性。
- 為什麼關係的基數和交叉篩選方向很重要? 單向的一對多是預設設定,這是有原因的;雙向篩選會帶來歧義,還可能算出錯誤的總計。
- 多對多關係該怎麼處理? 用一張橋接表,並說明之後的總計具體代表什麼含義。
- 為什麼需要一張專門的日期表? 時間智慧函式需要一張連續且標記好的日期表;沒有它,年初至今和去年同期的度量值都會出錯。
- 這個轉換該放在 Power Query 裡做,還是用 DAX? 能在 Power Query 裡做就在那裡做整形,因為那裡的轉換只在重新整理時執行一次,而不是每次查詢都執行。
一位為零售報表團隊面試的 BI 分析師被問到:為什麼銷售總額按產品看是對的,按地區看卻不對。面試官想要的答案是建模層面的:雙向關係造成了有歧義的篩選路徑,而不是重寫 DAX。先從模型層面去診斷,才是他們在考察的本能。
更多按崗位劃分的題庫見按角色劃分的面試問題。
關於重新整理、安全和部署,他們會問什麼?
這些問題多出現在 BI 開發工程師和分析工程師的面試中,也正是那些只在 Power BI Desktop 裡搭建過報表的候選人會沒話可說的地方。
- Import、DirectQuery 還是 Composite? Import 查詢最快,但受限於記憶體和重新整理視窗。DirectQuery 能保持資料最新,但會把負載推給資料來源,且存在 DAX 限制。Composite 則是兩者混合。要說出取捨,以及決定選哪個的那一個關鍵條件。
- 本地資料閘道器是做什麼用的? 用於把雲服務連線到企業網路背後的資料來源,支援定時重新整理和 DirectQuery。
- 增量重新整理是怎麼工作的? 按日期範圍分割槽,讓只有最近的分割槽需要重新載入,並按該功能要求的範圍參數進行配置。
- 你會怎麼實現行級安全性? 用帶有 DAX 篩選表示式的角色作用在維度表上,並用當前登入使用者函式在對映表中查詢該使用者,實現動態安全性。
- 工作區、應用、資料集、報表之間是什麼關係? 這是基礎的服務層面常識,也是一個只在 Desktop 裡做過事的人很容易答錯的簡單問題。
- 你會怎麼最佳化一份很慢的報表? 減少每頁的視覺物件數量,優先用度量值而不是計算列,降低關係列上的基數,並用效能分析器排查。
如果你的經驗完全限於 Desktop,就直說,並說明你還需要學什麼。面試官能接受被明確說出的短板;他們不能接受被編出來的部署經驗,因為下一個追問就會拆穿它。
Power BI 面試該怎麼練習?
Power BI 的回答一開口就會以一種特定的方式露餡:候選人明明知道區別在哪裡,卻說得繞來繞去,因為他從來只是靠點滑鼠來“演示”這個區別,而不是靠說出來。讀題庫能帶來的只是“眼熟”,而這種眼熟一旦遇到陌生人當面發問、還在等你回答,就會瞬間崩塌。
從上面的問題裡挑出你最不想被問到的五個,不看螢幕,在九十秒內大聲說出每一個的答案。如果你連 CALCULATE 是做什麼的都得畫圖才能說清楚,那你在面試現場也說不清楚。相比重讀筆記,用會追問的 AI 面試官反覆練習這些問題更接近真實對話,這正是 模擬面試 模式的設計初衷。
SubcueAI 創始人 Aaron Cao 把這個練習模式的重心放在了“反覆開口說”上,而不是內容本身的呈現,因為題目清單從不稀缺,稀缺的是開口說的次數。在真實面試中,桌面客戶端和瀏覽器擴充套件的側邊欄可以在面試官講話時同步呈現結構,這對你本就熟悉的內容幫助最大。設定步驟見使用教程頁面。