如果你正在開發的資料流變得越來越龐大且複雜,以下是你可以做的一些事情來改進你原本的設計。
把它拆成多個資料流
不要把所有事情都放在一個資料流裡。 單一且複雜的資料流程不僅會讓資料轉換過程變長,也讓理解和重複使用資料流程變得更困難。 將資料流拆分成多個資料流,可以透過將不同資料流中的資料表,甚至將一個資料表分成多個資料流來達成。 你可以利用計算資料表或連結資料表的概念,在一個資料流中建立部分轉換,並在其他資料流中重複使用。
將資料轉換資料流與暫存/擷取資料流分離
有些資料流專門用來擷取資料(也就是暫 存資料流),有些則專門用來轉換資料,不僅有助於建立多層架構,也有助於降低資料流的複雜度。 有些步驟只是從資料來源擷取資料,例如取得資料、導航和資料型別變更。 透過將暫存資料流與轉換資料流分開,可以讓你的資料流更易開發。
圖片顯示資料從資料來源擷取到暫存資料流,然後資料表儲存在 Dataverse 或 Azure Data Lake 儲存中。 然後,資料會移至轉換資料流程,其中資料會轉換並轉換成資料倉儲結構。 接著資料會被移至語意模型。
使用自訂函式
自訂函式在需要針對多個來自不同來源的查詢完成一定步驟的情況中非常有用。 自訂函式可透過 Power Query Editor 的圖形介面或使用 M 腳本開發。 函式可以在資料流中重複使用,並可用於任意多的資料流中的表格。
使用自訂函式有助於保持原始碼只有單一版本,這樣你就不必重複撰寫程式碼。 因此,維護 Power Query 的轉換邏輯和整個資料流程變得容易許多。 欲了解更多資訊,請參閱以下部落格文章:在 Power BI Desktop 中輕鬆自訂函數。
備註
有時你可能會收到通知,告訴你需要進階容量才能使用自訂函式刷新資料流程。 你可以忽略這個訊息,重新開啟資料流編輯器。 這通常能解決你的問題,除非你的函式會提到「載入啟用」的查詢。
將查詢放入資料夾
使用資料夾來查詢有助於將相關查詢群組在一起。 在開發資料流程時,花更多時間將查詢安排在有意義的資料夾中。 用這種方法,未來你能更容易找到查詢,維護程式碼也會輕鬆許多。
使用運算表格
計算資料表不僅讓你的資料流更易理解,也帶來更好的效能。 當你使用計算出的資料表時,從中被參考的其他資料表則是從一個「已處理並儲存」的資料表取得資料。 轉換過程簡單且快速。
善用強化版的運算引擎
對於在 Power BI 管理員入口網站開發的資料流,請確保利用增強的計算引擎,先在計算資料表中執行連接和篩選轉換,再進行其他類型的轉換。
將許多步驟拆解成多個查詢
在一張表格裡要記住大量步驟真的很困難。 相反地,你應該將大量步驟拆分成多個表格。 你可以用 Enable Load 來處理其他查詢,如果是中間查詢就停用,最後只透過資料流載入最終資料表。 當你有多個查詢且每個查詢步驟較少時,使用依賴圖來追蹤每個查詢以進行進一步調查,比起在一個查詢中分析數百個步驟更容易。
新增查詢與步驟屬性
文件是擁有易於維護程式碼的關鍵。 在 Power Query 中,你可以將資料屬性加入至資料表及步驟中。 你在屬性中新增的文字會在游標懸停在該查詢或步驟上時顯示為工具提示。 這些文件有助於你未來維護你的模型。 只要瞥一眼表格或步驟,你就能理解那裡發生了什麼,而不必重新思考或記住自己在那一步中所做的事情。
確保容量位於同一區域
資料流目前不支援多個國家或多個地區。 Premium 容量必須與你的 Power BI 租戶在同一區域。
將本地來源與雲端來源分離
我們建議你為每種來源類型建立獨立的資料流程,例如本地端、雲端、SQL Server、Spark 和 Dynamics 365。 依來源類型區分資料流有助於快速排除故障,並避免刷新資料流時產生內部限制。
根據資料表所需的排程刷新來分隔資料流
如果你有一個銷售交易表,來源系統每小時更新一次,還有一個產品映射表每週更新一次,那就把這兩個資料表拆成兩個資料流,並有不同的資料更新時程。
避免在同一工作區內排程重新整理連結資料表
如果你經常無法存取包含連結資料表的資料流,可能是因為同一工作區內的對應相依資料流在資料流刷新時被鎖定所致。 這種鎖定提供交易的準確性,並確保兩個資料流都能成功刷新,但可能會阻擋你編輯。
如果你為連結的資料流設置獨立的排程,資料流可能會被不必要地刷新,並阻止你編輯資料流。 有兩個建議可以避免此問題:
- 不要在與來源資料流同一個工作區的連結資料流設定刷新排程。
- 如果你想另外設定刷新排程,並避免鎖定行為,請將資料流移到另一個工作區。