本文說明如何將數據從內部部署數據倉儲傳輸到雲端環境,然後使用商業智慧 (BI) 模型來提供數據。 您可以使用此方法作為最終目標,或使用雲端式元件進行完整現代化的第一步。
本指南以 Azure Synapse Analytics 端對端案例為基礎,。 此程式會使用 Azure Synapse Analytics 管線,將數據從 SQL 資料庫內嵌到 SQL 集區。 然後,它會執行數據轉換以進行分析。 本文著重於 Azure Synapse Analytics 管線,但您也可以使用 Azure Data Factory 管線或 Fabric Data Factory 管線來執行這些工作。
使用此架構的時機
您可以使用各種方法來符合企業 BI 的商務需求。 各種層面都會定義商務需求,例如目前的技術投資、人力技能、現代化時程表、未來目標,以及您是否偏好平臺即服務(PaaS)或軟體即服務(SaaS)。
請考慮下列設計方法:
Microsoft Fabric 的湖屋
Fabric 和 Azure Databricks,適用於對 Azure Databricks 和 Power BI 進行現有投資的客戶,並想要使用 Fabric 現代化
適用於使用 Azure SQL 生態系統和網狀架構 的中小型企業的企業 BI
針對偏好 SaaS 的客戶,完全在 Fabric 上將數據倉儲
本文中的架構假設您使用 Azure Synapse Analytics 數據倉儲作為企業語意模型的持續性層,並使用 Power BI 進行商業智慧。 此 PaaS 方法具有彈性,可配合各種商務需求和喜好設定。
架構
下載此架構的 Visio 檔案。
工作流程
資料來源
- Azure 中的 SQL Server 資料庫包含源數據。 若要模擬內部部署環境,此案例的部署腳本會設定 Azure SQL 資料庫。 AdventureWorks 範例資料庫用作來源資料結構描述和範例資料。 如需詳細資訊,請參閱 從 SQL Server複製和轉換數據。
擷取和資料儲存體
Azure Data Lake Storage 是數據擷取期間的暫存區域。 您可以使用 PolyBase 將資料複製到 Azure Synapse Analytics 專用 SQL 集區。
Azure Synapse Analytics 是一種分散式系統,可對大型數據執行分析。 它支援大量平行處理,因此它可以執行高效能分析。 Azure Synapse Analytics 專用 SQL 集區是持續從內部部署環境擷取的目標。 SQL 集區可以透過 DirectQuery 提供數據來 Power BI,並執行進一步的處理。
Azure Synapse Analytics 管線 協調 Azure Synapse Analytics 工作區內的數據擷取和轉換。
分析和報告
- 此案例中的數據模型化方法結合了 企業模型 和 BI 語意模型。 Azure Synapse Analytics 專用 SQL 集區 包含企業模型。 Power BI Premium 容量 F64 包含 BI 語意模型。 Power BI 會透過 DirectQuery 存取資料。
元件
此案例使用以下元件:
Azure SQL Database 是 Azure 裝載的 PaaS SQL 伺服器。 此架構會使用 SQL Database 來示範移轉案例的數據流程。
Data Lake Storage 為用於保存中繼移轉結果的非結構化數據提供彈性的雲端記憶體。
Azure Synapse Analytics 是適用於數據倉儲和巨量數據系統的企業分析服務。 Azure Synapse Analytics 可作為企業語意模型和服務中的主要計算和持續性記憶體。
Power BI Premium 是一種 BI 工具,可呈現及可視化此案例中的數據。
Microsoft Entra ID 是支援驗證和授權流程的多雲端身分識別和網路解決方案套件。
簡化的架構
案例詳細資料
在此案例中,組織具有包含大型內部部署數據倉儲的 SQL 資料庫。 組織想要使用 Azure Synapse Analytics 來執行分析,然後透過 Power BI 將這些見解傳遞給使用者和分析。
驗證
Microsoft Entra ID 會驗證連線到 Power BI 儀錶板和應用程式的使用者。 單一登錄會將用戶連線到 Azure Synapse Analytics 布建集區中的數據源。 授權發生在來源上。
累加式載入
當您執行自動化擷取、轉換、載入(ETL)或擷取、載入、轉換 (ELT) 程式時,您應該只載入自上一次執行後變更的數據。 此程式稱為 累加式載入。 相反地,完整載入會載入所有數據。 若要執行累加式載入,請決定如何識別已變更的數據。 您可以使用 高水位標記 值方法,該方法會追蹤日期時間數據行的最新值或源數據表中唯一的整數數據行。
您可以在 SQL Server 中使用 時態表。 時態表是儲存數據變更歷程記錄的系統版本數據表。 資料庫引擎會自動記錄個別記錄資料表中每項變更的歷程記錄。 若要查詢歷程記錄數據,您可以將 FOR SYSTEM_TIME
子句新增至查詢。 資料庫引擎會從內部查詢記錄資料表,但這個查詢過程對應用程式是隱蔽的。
時態表支援維度數據,這可能會隨著時間而變更。 事實資料表通常代表不可變的交易,例如銷售,在這種情況下,保留系統版本歷程記錄並不合理。 相反地,交易通常會有代表交易日期的數據行。 數據行可作為水位線值。 例如,在 AdventureWorks 數據倉儲中,SalesLT.*
數據表具有 LastModified
字段。
以下是 ELT 管線的一般查詢流程:
針對來源資料庫中的每個資料表,追蹤上次執行 ELT 作業的截止時間。 將此資訊儲存在資料倉儲中。 在初始設定時,所有時間都會設定為
1-1-1900
。在資料匯出步驟期間,截止時間會當做參數傳遞至來源資料庫中的一組預存程序。 這些預存程式會查詢在截止時間之後變更或建立的任何記錄。 對於該範例中的所有資料表,您可以使用
ModifiedDate
資料行。當資料移轉完成時,請更新儲存截止時間的資料表。
資料管線
此案例使用的資料來源是 AdventureWorks 範例資料庫。 累加式數據載入模式可確保只會載入最近一次管線執行之後修改或新增的數據。
中繼資料驅動的複製工具
Azure Synapse Analytics 管線內的內建 元數據驅動複製工具 會以累加方式載入關係資料庫中所包含的所有數據表。
使用精靈介面將複製數據工具連線至源資料庫。
線上之後,請設定每個資料表的累加式載入或完整載入。
複製數據工具會建立產生控制數據表所需的管線和 SQL 腳本。 此數據表會儲存累加式載入程式的數據,例如每個資料表的高水位線值或數據行。
在這些腳本執行之後,管線會將所有源數據倉儲數據表載入 Azure Synapse Analytics 專用集區。
在工具載入數據之前,它會建立三個管線來逐一查看資料庫中的數據表。
管線會執行下列工作:
計算管線執行中要複製的物件數目,例如資料表。
逐一查看要載入或複製的每個物件。
在管線逐一查看每個對象之後,它會執行下列工作:
檢查是否需要差異負載。 否則,管線會完成一般的完整負載。
從控件數據表擷取高水位線值。
將數據從源數據表複製到 Data Lake Storage 中的預備帳戶。
透過選取的複製方法將數據載入專用 SQL 集區,例如 PolyBase 或 Copy 命令。
更新控制元件數據表中的高水位線值。
將數據載入 Azure Synapse Analytics SQL 集區
複製活動 將數據從 SQL 資料庫複製到 Azure Synapse Analytics SQL 集區。 此範例的 SQL 資料庫位於 Azure 中,因此會使用 Azure 整合運行時間從 SQL 資料庫讀取數據,並將數據寫入指定的預備環境。
複製語句接著會將數據從預備環境載入 Azure Synapse Analytics 專用集區。
使用 Azure Synapse Analytics 管線
Azure Synapse Analytics 中的管線會定義一組已排序的活動,以完成累加式載入模式。 手動或自動觸發程式會啟動管線。
轉換資料
此參考架構中的範例資料庫很小,因此不會建立沒有數據分割的復寫數據表。 針對生產工作負載,分散式數據表可以改善查詢效能。 如需詳細資訊,請參閱在 Azure Synapse Analytics 中設計分散式數據表的指引。 範例文本會透過靜態 資源類別執行查詢,。
在生產環境中,請考慮建立具有迴圈配置資源散發的臨時表。 然後將數據轉換成具有叢集數據行存放區索引的生產數據表,以提供最佳的整體查詢效能。 資料行存放區索引已針對掃描許多記錄的查詢進行最佳化。
數據行存放區索引不會針對單一查閱或查閱單一數據列以最佳方式執行。 如果您需要執行頻繁的單一查閱,您可以將非叢集索引新增至數據表,以提升速度。 不過,在數據倉儲案例中,單一查閱通常較在線事務處理工作負載較不常見。 如需詳細資訊,請參閱在 Azure Synapse Analytics 中索引數據表。
注意
叢集資料行存放區資料表不支援 varchar(max)
、nvarchar(max)
或 varbinary(max)
資料類型。 如果您使用這些數據類型,請考慮堆積或叢集索引。 您也可以考慮將這些資料行放入個別的數據表中。
使用 Power BI Premium 來存取、建模和視覺化資料
Power BI Premium 支援數個選項來連線到 Azure 上的資料源。 您可以使用 Azure Synapse Analytics 布建的集區來執行下列工作:
- 匯入:資料會匯入 Power BI 模型。
- DirectQuery:資料會直接從關聯式儲存體提取。
- 複合模型:結合某些資料表的匯入,以及其他資料表的 DirectQuery。
此案例會使用 DirectQuery 儀錶板,因為它具有少量數據和低模型複雜度。 DirectQuery 會將查詢委派給下方功能強大的計算引擎,並在來源上使用廣泛的安全性功能。 DirectQuery 可確保結果一律與最新的源數據一致。
匯入模式提供最快的查詢回應時間。 如果下列專案,請考慮匯入模式:
- 模型完全符合Power BI的記憶體。
- 重新整理之間的數據延遲是可接受的。
- 您需要來源系統與最終模型之間的複雜轉換。
在此情況下,終端使用者想要完整存取最新數據,且 Power BI 重新整理不會延遲,而且他們想要所有超過 Power BI 數據集容量的歷史數據。 根據容量大小,Power BI 數據集可以處理 25-400 GB。 專用 SQL 集區中的數據模型已經在星型架構中,不需要轉換,因此 DirectQuery 是適當的選擇。
使用 Power BI Premium 來管理大型模型、編頁報表和部署管線。 利用內建的 Azure Analysis Services 端點。 您也可以擁有具有獨特價值主張的專用容量。
當 BI 模型成長或儀錶板複雜度增加時,您可以切換至複合模型,並透過 混合式數據表匯入查閱數據表的元件,以及匯入預先匯總的數據。 您可以在 Power BI 中針對匯入的數據集啟用 查詢快取,並針對儲存模式屬性使用 雙數據表。
在複合模型中,數據集可作為虛擬傳遞層。 當使用者與視覺效果互動時,Power BI 會將 SQL 查詢產生至 Azure Synapse Analytics SQL 集區。 Power BI 會根據效率判斷要使用記憶體內部或 DirectQuery 記憶體。 引擎會決定何時從記憶體內部切換到 DirectQuery,並將邏輯推送至 Azure Synapse Analytics SQL 集區。 視查詢數據表的內容而定,它們可以做為快取(匯入)或非快取的複合模型。 您可以選擇要快取到記憶體中的數據表、結合一或多個 DirectQuery 來源的數據,或結合 DirectQuery 源數據和匯入的數據。
當您搭配 Azure Synapse Analytics 布建集區使用 DirectQuery 時:
使用 Azure Synapse Analytics 結果集快取 來快取使用者資料庫中的查詢結果,以便重複使用。 此方法可將查詢效能提升到毫秒,並減少計算資源使用量。 使用快取結果集的查詢不會取用 Azure Synapse Analytics 中的任何並行位置,因此不會計入現有的並行限制。
使用 Azure Synapse Analytics 具體化檢視 預先計算、儲存和維護數據表等數據。 在具體化檢視中使用所有數據或數據子集的查詢可以達到更快的效能,而不需要直接參考定義的具體化檢視來使用它。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework。
安全性
安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱 安全性的設計檢閱檢查清單。
雲端現代化引進了安全性考慮,例如數據外泄、惡意代碼感染和惡意代碼插入。 您需要雲端提供者或服務解決方案來解決您的疑慮,因為安全性措施不足可能會造成重大問題。
此案例使用分層式安全性控制的組合來解決最苛刻的安全性考慮:網路、身分識別、隱私權和授權控制。 Azure Synapse Analytics 布建的集區會儲存大部分的數據。 Power BI 會透過單一登錄透過 DirectQuery 存取數據。 您可使用 Microsoft Entra ID 進行驗證。 布建集區內的數據授權也有廣泛的安全性控制。
一些常見的安全性問題包括:
定義誰可以看到哪些數據。
- 請確定您的數據符合聯邦、當地和公司指導方針,以降低數據外泄風險。 Azure Synapse Analytics 提供多個 數據保護功能, 達到合規性。
判斷如何驗證使用者的身分識別。
- 使用 Azure Synapse Analytics 來控制誰可以透過 存取哪些資料,以及 驗證。
選擇網路安全性技術來保護網路和數據的完整性、機密性和存取權。
- 使用 網路安全性 選項,協助保護 Azure Synapse Analytics 的安全。
選擇可偵測並通知您威脅的工具。
- 使用 Azure Synapse Analytics 威脅偵測 功能,例如 SQL 稽核、SQL 威脅偵測和弱點評估,以稽核、保護和監視資料庫。
決定如何保護記憶體帳戶中的數據。
- 針對需要快速且一致回應時間或每秒有大量輸入/輸出作業 (IOP) 的工作負載使用 Azure 記憶體帳戶。 儲存器帳戶可以儲存所有資料物件,並有數個 儲存器帳戶安全性選項。
成本優化
成本優化著重於減少不必要的費用,並提升營運效率的方式。 如需詳細資訊,請參閱成本最佳化的設計檢閱檢查清單。
本節提供此解決方案中涉及之不同服務定價的相關信息,並提及此案例與範例數據集所做的決策。 在 Azure 定價計算機使用此啟動組態,並加以調整以符合您的案例。
Azure Synapse Analytics
Azure Synapse Analytics 是無伺服器架構,可用來獨立調整計算和記憶體層級。 計算資源會根據使用量產生成本。 您可以視需要調整或暫停這些資源。 記憶體資源會產生每 TB 的成本,因此當您內嵌數據時,您的成本會增加。
Azure Synapse Analytics 管線
三個主要元件會影響管線的價格:
- 資料管線活動和整合執行階段時數
- 數據流叢集大小和實作
- 作業費用
如需定價詳細數據,請參閱 Azure Synapse Analytics 定價上 數據整合 索引標籤。
價格會因元件或活動、頻率和整合運行時間單位數目而有所不同。
針對使用標準 Azure 裝載整合運行時間的範例數據集,複製數據活動 做為管線的核心。 它會依源資料庫中所有實體(數據表)的每日排程執行。 此案例不包含數據流。 而且不會產生營運成本,因為管線每月執行不到 100 萬個作業。
Azure Synapse Analytics 專用集區和記憶體
針對範例數據集,您可以布建 500 個數據倉儲單位 (DWU),以提供分析負載的順暢體驗。 您可以針對報告用途,在上班時間維護計算。 如果解決方案移至生產環境,請使用保留的數據倉儲容量作為符合成本效益的策略。 使用各種技術將成本和效能計量最大化。
如需 Azure Synapse Analytics 專用集區的定價詳細數據,請參閱 Azure Synapse Analytics 定價 上數據倉儲 索引標籤。 在專用的耗用量模型中,客戶會針對每個布建的 DWU 產生每小時運行時間的成本。 也請考慮數據儲存成本,包括待用數據的大小、快照集和異地備援。
Blob 儲存體
請考慮使用 Azure 記憶體保留容量來降低記憶體成本。 使用此模型時,如果您保留固定儲存體容量一或三年,就會獲得折扣。 如需詳細資訊,請參閱 使用保留容量將 Blob 記憶體的成本優化。 此案例不會使用永續性記憶體。
Power BI Premium
此案例使用 Power BI Premium 工作區 內建的效能增強功能,以因應需求所需的分析需求。
如需詳細資訊,請參閱 Power BI 定價。
卓越營運
卓越營運涵蓋部署應用程式的作業程式,並讓它在生產環境中執行。 如需詳細資訊,請參閱 Operational Excellence的設計檢閱檢查清單。
使用 Azure DevOps 發行管線和 GitHub Actions,將跨多個環境部署 Azure Synapse Analytics 工作區自動化。 如需詳細資訊,請參閱 Azure Synapse Analytics 工作區的持續整合和持續傳遞。
將每個工作負載放在個別的部署範本中,並將資源儲存在原始檔控制系統中。 您可以一起或個別部署範本,作為持續整合和持續傳遞 (CI/CD) 程式的一部分。 此方法可簡化自動化程式。 此架構有四個主要工作負載:
- 數據倉儲伺服器和相關資源
- Azure Synapse Analytics 管線
- Power BI 資產,包括儀錶板、應用程式和數據集
- 內部部署至雲端模擬案例
考慮在可行的情況下暫存您的工作負載。 將您的工作負載部署到各種階段。 在移至下一個階段之前,請在每個階段執行驗證檢查。 這種方法會以受控的方式將更新推送至您的生產環境,並將未預期的部署問題降到最低。 使用 藍綠部署 和 canary 發行 策略來更新實時生產環境。
使用復原策略來處理失敗的部署。 例如,您可以從部署歷程記錄中自動重新部署先前成功的部署。 在 Azure CLI 中使用
--rollback-on-error
旗標。使用 Azure 監視器 來分析數據倉儲的效能,以及整個 Azure 分析平臺,以取得整合式監視體驗。 Azure Synapse Analytics 在 Azure 入口網站中提供豐富的監視體驗,讓您可看到有關資料倉儲工作負載的深入解析。 使用 Azure 入口網站來監視您的數據倉儲。 它提供可設定的保留期間、警示、建議,以及計量和記錄的可自定義圖表和儀錶板。
如需詳細資訊,請參閱下列資源:
- 教學課程:開始使用 Azure Synapse Analytics
- 使用 Azure CLI 建立 Azure Synapse Analytics 工作區
效能效率
效能效率是指工作負載能夠有效率地調整以符合使用者需求。 如需詳細資訊,請參閱 效能效率的設計檢閱檢查清單。
本節提供重設大小決策以容納此數據集的詳細數據。
Azure Synapse Analytics 布建的集區
您可以使用 的各種數據倉儲組態。
DWU | 計算節點數目 | 每個節點的散發數目 |
---|---|---|
DW100c | 1 | 60 |
-- TO -- |
||
DW30000c | 60 | 1 |
若要查看相應放大的效能優點,特別是針對較大的 DWU,請使用至少 1 TB 的數據集。 若要尋找專用 SQL 集區的最佳 DWU 數目,請嘗試相應增加和減少。 在您載入數據之後,執行具有不同 DWU 數目的查詢。 調整速度很快,因此您可以輕鬆地實驗各種效能等級。
尋找最佳 DWU 數目
針對開發中的專用 SQL 集區,請選取少量的 DWU 作為起點,例如 DW400c 或 DW200c。 監視每個 DWU 數目的應用程式效能。 假設線性刻度,並判斷您需要增加或減少 DWU 多少。 繼續進行調整,直到達到滿足商務需求的最佳效能等級。
調整 Azure Synapse Analytics SQL 集區
如需 Azure Synapse Analytics 中管線的延展性和效能優化功能,以及您使用的複製活動,請參閱 複製活動效能和延展性指南。
如需詳細資訊,請參閱下列資源:
- 使用 Azure 入口網站調整 Azure Synapse Analytics SQL 集區的計算
- 使用 Azure PowerShell 調整專用 SQL 集區的計算
- 使用 T-SQL 在 Azure Synapse Analytics 中調整專用 SQL 集區的計算
- 管理專用 SQL 集區的計算
Power BI Premium 和 Fabric
本文使用 Power BI Premium F64 容量 來示範 BI 功能。 Fabric 中的專用 Power BI 容量範圍從 F64 (8 個虛擬核心) 到 F1024 (128 個虛擬核心)。
若要判斷您需要多少容量:
參與者
Microsoft維護本文。 下列參與者撰寫本文。
主要作者:
- Galina Polyakova | 資深雲端解決方案架構師
- Noah Costar | 雲端解決方案架構師
- George Stevens | 雲端解決方案架構師
其他投稿人:
- Jim McLeod | 雲端解決方案架構師
- Miguel Myers | 資深計劃經理
若要查看非公開的 LinkedIn 頭像,請登入至 LinkedIn。
下一步
- 什麼是 Power BI Premium?
- 什麼是 Microsoft Entra 識別碼?
- 使用 Azure Databricks 存取 Data Lake Storage 和 Azure Blob 記憶體
- 什麼是 Azure Synapse Analytics?
- Azure Data Factory 和 Azure Synapse Analytics 中的管線及活動
- 什麼是 Azure SQL?