設計及開發複雜數據流的最佳做法

如果您要開發的數據流變得越來越複雜,以下是您可以對原始設計進行改善的一些工作。

將它分成多個數據流

不要在一個數據流中執行所有動作。 單一複雜的數據流不僅會使數據轉換程式變得更長,也使得更難瞭解及重複使用數據流。 將數據流分割成多個數據流,可以藉由將不同數據流中的數據表,甚至將一個數據表分割成多個數據流來完成。 您可以使用計算數據表或鏈接資料表的概念,在一個數據流中建置轉換的一部分,並在其他數據流中重複使用。

從暫存/擷取數據流分割數據轉換數據流

有一些數據流只是為了擷取數據(也就是 暫存數據流),而其他則只是為了轉換數據,不僅有助於建立多層架構,也有助於降低數據流的複雜度。 某些步驟只會從數據源擷取數據,例如取得數據、流覽和數據類型變更。 藉由分隔暫存數據流和轉換數據流,您可以讓數據流更容易開發。

Multilayered dataflow architecture.

顯示從數據源擷取到暫存數據流的數據影像,其中數據表會儲存在Dataverse或 Azure Data Lake 記憶體中。 然後,數據會移至轉換數據流,其中數據會轉換並轉換成數據倉儲結構。 然後,數據會移至語意模型。

使用自訂函式

自定義函式對於必須針對來自不同來源的一些查詢執行特定步驟的案例很有説明。 自定義函式可以透過 Power Query 編輯器 中的圖形化介面或使用 M 腳本來開發。 函式可以在數據流中視需要重複使用。

只有單一版本的原始程式碼可協助自定義函式,因此您不需要複製程序代碼。 因此,維護 Power Query 轉換邏輯和整個數據流會更容易。 如需詳細資訊,請移至下列部落格文章: Power BI Desktop 中的自定義函式變得容易。

Screenshot of the Queries pane with the Get Holidays custom function and its data emphasized.

注意

有時候您可能會收到通知,告知您需要進階容量,才能使用自定義函式重新整理數據流。 您可以忽略此訊息,然後重新開啟數據流編輯器。 這通常可解決您的問題,除非您的函式參考「已啟用負載」查詢。

將查詢放入資料夾

使用資料夾進行查詢有助於將相關的查詢分組在一起。 開發數據流時,請花一點時間在有意義的資料夾中排列查詢。 使用此方法,您未來可以更輕鬆地找到查詢,並維護程式代碼會更容易。

使用計算數據表

計算數據表不僅可讓您的數據流更容易理解,也提供更佳的效能。 當您使用計算數據表時,從其中參考的其他數據表會從「已處理和儲存」數據表取得數據。 轉換更簡單且更快。

利用增強型計算引擎

針對在 Power BI 管理入口網站中開發的數據流,請務必先在計算數據表中執行聯結和篩選轉換,再執行其他類型的轉換,來使用增強的計算引擎。

將許多步驟分成多個查詢

很難追蹤一個數據表中的大量步驟。 相反地,您應該將大量步驟分成多個數據表。 您可以將 [啟用載入 ] 用於其他查詢,並在它們為中繼查詢時加以停用,並只透過數據流載入最終數據表。 當您有多個查詢,每個查詢中都有較小的步驟時,使用相依性圖表並追蹤每個查詢以進行進一步調查,而不是在一個查詢中深入探索數百個步驟。

新增查詢和步驟的屬性

檔是輕鬆維護程式代碼的關鍵。 在 Power Query 中,您可以將屬性新增至數據表,也可以新增至步驟。 當您將滑鼠停留在該查詢或步驟上時,您在屬性中新增的文字會顯示為工具提示。 本文件可協助您在未來維護模型。 一目了然,您可以了解那裡發生的事情,而不是重新思考並記住您在此步驟中所做的事。

確定容量位於相同的區域中

數據流目前不支援多個國家或地區。 進階版 容量必須位於與 Power BI 租使用者相同的區域中。

將內部部署來源與雲端來源分開

建議您為每個來源類型建立個別的數據流,例如內部部署、雲端、SQL Server、Spark 和 Dynamics 365。 依來源類型分隔數據流有助於快速進行疑難解答,並在重新整理數據流時避免內部限制。

根據數據表所需的排程重新整理來分隔數據流

如果您有每小時在來源系統中更新的銷售事務數據表,而且您每周都會更新產品對應數據表,請使用不同的數據重新整理排程,將這兩個數據表分成兩個數據流。

避免排程相同工作區中鏈接數據表的重新整理

如果您經常被鎖定在包含鏈接資料表的數據流中,可能是由數據流重新整理期間鎖定之相同工作區中的對應相依數據流所造成。 這類鎖定提供交易精確度,並確保已成功重新整理這兩個數據流,但它可以封鎖您編輯。

如果您為鏈接數據流設定個別的排程,可以不必要地重新整理數據流,並封鎖您編輯數據流。 有兩個建議可避免此問題:

  • 請勿在與來源數據流相同的工作區中設定連結數據流的重新整理排程。
  • 如果您想要個別設定重新整理排程,並想要避免鎖定行為,請將數據流移至不同的工作區。