計算數據表案例和使用案例
在數據流中使用 計算數據表 有好處。 本文說明計算數據表的使用案例,並說明其如何在幕後運作。
什麼是計算數據表?
數據表代表在數據流重新整理之後,在數據流中建立之查詢的數據輸出。 它代表來源的數據,以及選擇性地套用至它的轉換。 有時候,您可能想要建立屬於先前內嵌數據表之函式的新數據表。
雖然可以重複建立數據表並套用新轉換的查詢,但此方法有缺點:數據會內嵌兩次,而且數據源上的負載會加倍。
計算數據表可解決這兩個問題。 計算數據表與其他數據表類似,因為它們會從來源取得數據,而且您可以套用進一步的轉換來建立它們。 但其數據源自使用的記憶體數據流,而不是原始數據源。 也就是說,它們先前是由數據流所建立,然後重複使用。
您可以藉由參考相同數據流中的數據表,或參考在不同數據流中建立的數據表,來建立計算數據表。
為什麼要使用計算數據表?
在一個數據表中執行所有轉換步驟可能會很慢。 此速度變慢的原因有很多—數據源可能很慢,或者您執行的轉換可能需要在兩個或多個查詢中複寫。 最好先從來源擷取數據,然後在一或多個數據表中重複使用。 在這種情況下,您可以選擇建立兩個數據表:一個從數據源取得數據,另一個是計算數據表,將更多轉換套用至數據流所使用的Data Lake。 這項變更可以提升資料的效能和重複使用性,以節省時間和資源。
例如,如果兩個數據表甚至共用其轉換邏輯的一部分,而沒有計算數據表,則必須執行轉換兩次。
不過,如果使用計算數據表,則轉換的通用(共用)部分會處理一次,並儲存在 Azure Data Lake 儲存體 中。 接著會從一般轉換的輸出處理其餘轉換。 整體而言,此處理速度要快得多。
計算數據表提供一個位置作為轉換的原始程式碼,並加速轉換,因為它只需要完成一次,而不是多次。 數據源上的負載也會降低。
使用計算數據表的範例案例
如果您要在 Power BI 中建置匯總資料表以加速數據模型,您可以參考原始數據表並套用更多轉換來建置匯總數據表。 藉由使用此方法,您不需要從來源複寫轉換(來自原始數據表的元件)。
例如,下圖顯示 Orders 數據表。
使用這個資料表的參考,您可以建置計算數據表。
顯示如何從 Orders 資料表建立計算數據表的螢幕快照。 首先,以滑鼠右鍵按下 [查詢] 窗格中的 [Orders] 數據表,然後從下拉功能表中選取 [參考] 選項。 此動作會建立計算數據表,此數據表會在這裡重新命名為匯總的 Orders。
計算數據表可以有進一步的轉換。 例如,您可以使用 Group By 來匯總客戶層級的數據。
這表示 Orders Aggregated 數據表會從 Orders 數據表取得數據,而不是再次從數據源取得數據。 由於某些需要完成的轉換已在 Orders 資料表中完成,因此效能較佳,且數據轉換較快。
其他數據流中的計算數據表
您也可以在其他數據流中建立計算數據表。 您可以使用 Microsoft Power Platform 數據流連接器從數據流取得數據來建立它。
影像強調Power Platform 資料流連接器從Power Query 選擇資料源視窗。 此外,也包含一個描述,指出一個數據流數據表可以在另一個數據流數據表的數據之上建置,而該數據表已經保存在記憶體中。
計算數據表的概念是讓數據表保存在記憶體中,以及從中衍生的其他數據表,以便減少數據源的讀取時間,並共用一些常見的轉換。 透過數據流連接器從其他數據流取得數據,或參考相同數據流中的另一個查詢,即可達成此縮減。
計算資料表:使用轉換或不使用轉換?
既然您知道計算數據表對於改善數據轉換的效能而言是很好的問題,建議您詢問轉換是否一律延後至計算數據表,還是應該套用至源數據表。 也就是說,數據應該一律擷取到一個數據表,然後在計算數據表中轉換? 什麼是優缺點?
載入沒有轉換文字/CSV 檔案的數據
當數據源不支持查詢折疊時(例如文字/CSV 檔案),從來源取得數據時,套用轉換沒有什麼好處,尤其是在數據量很大時。 源數據表應該只會從 Text/CSV 檔案載入數據,而不套用任何轉換。 然後,計算數據表可以從源數據表取得數據,並在內嵌的數據上執行轉換。
您可能會問,建立只內嵌數據的源數據表的價值為何? 這類數據表仍然很有用,因為如果來源的數據用於多個數據表中,它會減少數據源的負載。 此外,數據現在可以由其他人和數據流重複使用。 計算數據表特別適用於數據量很大的情況,或透過內部部署數據網關存取數據源時,因為它們會減少來自網關的流量,以及其後方的數據源負載。
執行 SQL 資料表的一些常見轉換
如果您的數據源支持查詢折疊,最好在源數據表中執行某些轉換,因為查詢會折疊至數據源,而且只會從該數據源擷取轉換的數據。 這些變更可改善整體效能。 下游計算數據表中常見的轉換集合應該套用在源數據表中,以便將其折疊至來源。 只有套用至下游數據表的其他轉換應該在計算數據表中完成。