powerbi实时刷新mysql数据库_PowerBI开发 第七篇:数据集和数据刷新
PowerBI報(bào)表是基于數(shù)據(jù)分析的引擎,數(shù)據(jù)真正的來(lái)源(Data Source)是數(shù)據(jù)庫(kù),文件等數(shù)據(jù)存儲(chǔ)媒介,PowerBI支持的數(shù)據(jù)源類型多種多樣。PowerBI Service(云端)有時(shí)不直接訪問(wèn)Data Source,而是直接從PowerBI Service創(chuàng)建的數(shù)據(jù)集(Dataset)中獲取數(shù)據(jù),數(shù)據(jù)集中存儲(chǔ)的內(nèi)容主要分為三部分:Data Source的數(shù)據(jù)(Data)、連接數(shù)據(jù)源的憑證(Credentials)、以及數(shù)據(jù)源的架構(gòu)(Table Schema)等元數(shù)據(jù)(metadata)。PowerBI Service分析數(shù)據(jù)時(shí),直接訪問(wèn)Dataset獲取數(shù)據(jù),執(zhí)行聚合計(jì)算,以響應(yīng)用戶的查詢請(qǐng)求。使用Dataset的好處是:PowerBI只需要維護(hù)統(tǒng)一的Data Store,不需要從眾多不同的DataSource中讀取數(shù)據(jù),所需要的數(shù)據(jù)都能從單一的數(shù)據(jù)結(jié)構(gòu)(Dataset)中讀取。
PowerBI Service為每個(gè)發(fā)布的Report自動(dòng)創(chuàng)建一個(gè)Dataset,每一個(gè)Dataset的大小的上限是1GB。在導(dǎo)入(Import)連接模式下,PowerBI把多個(gè)Data Source的數(shù)據(jù)導(dǎo)入到Dataset中,也就是說(shuō),Dataset存儲(chǔ)的是多個(gè)數(shù)據(jù)源(Data Source)的快照。是否把數(shù)據(jù)源導(dǎo)入到Dataset,是由數(shù)據(jù)連接(Data Connection Model)決定的。
我的PowerBI開(kāi)發(fā)系列的文章目錄:PowerBI開(kāi)發(fā)
一,數(shù)據(jù)連接模式
當(dāng)使用“Get Data”連接到Data Source時(shí),PowerBI 自動(dòng)創(chuàng)建Dataset,把數(shù)據(jù)從多個(gè)Data Source加載到一個(gè)Dataset中,Dataset還包含連接Data Source的憑證(Credentials),以及數(shù)據(jù)的架構(gòu)等元數(shù)據(jù)。PowerBI Service直接從Dataset中引用數(shù)據(jù),而不是直接從Data Source中。PowerBI支持的連接模式有兩種,分別是:Import,Live/DirectQuery。導(dǎo)入(Import)模式把Data Source的數(shù)據(jù)導(dǎo)入到PowerBI Service的Dataset中,而直接查詢(DirectQuery)模式建立Data Source 和Dataset之間的直接連接。
1,導(dǎo)入(Import)模式
對(duì)于導(dǎo)入(Import)模式,云端的Dataset中存儲(chǔ)的數(shù)據(jù)來(lái)源于內(nèi)網(wǎng)(On-Premises)數(shù)據(jù)的副本,一旦加載數(shù)據(jù)源,查詢定義的所有數(shù)據(jù)都會(huì)被加載到Dataset中。PowerBI從高度優(yōu)化的Dataset中查詢數(shù)據(jù),查詢性能高,能夠快速響應(yīng)用戶的交互式查詢。由于導(dǎo)入模式是把數(shù)據(jù)源快照復(fù)制到Dataset中,因此,底層數(shù)據(jù)源的改動(dòng)不會(huì)實(shí)時(shí)更新到Dataset,這使得Dataset存儲(chǔ)的數(shù)據(jù)是過(guò)時(shí)的,用戶需要手動(dòng)刷新或設(shè)置調(diào)度刷新,否則,Dataset的數(shù)據(jù)不會(huì)更新。數(shù)據(jù)的刷新是全量更新,而非增量。
導(dǎo)入模式的限制是:Dataset的最大Size是1GB。
2,直接查詢(DirectQuery)模式
對(duì)于DirectQuery模式,PowerBI直接訪問(wèn)底層的數(shù)據(jù)源,因此數(shù)據(jù)始終是最新的。一旦加載數(shù)據(jù),PowerBI Service不會(huì)向Dataset中加載任何數(shù)據(jù)(Data),這意味著,Dataset不存儲(chǔ)任何數(shù)據(jù)(Data),但是,Dataset仍然會(huì)存儲(chǔ)連接Data Source的憑證,以及數(shù)據(jù)源的元數(shù)據(jù),用于訪問(wèn)底層數(shù)據(jù)源。在執(zhí)行查詢請(qǐng)求時(shí),PowerBI Service直接把查詢請(qǐng)求發(fā)送到原始的Data Source中去獲取所需的數(shù)據(jù)。直接查詢采用主動(dòng)獲取數(shù)據(jù)的方式,這意味著,底層數(shù)據(jù)的任何更新,不會(huì)立即反應(yīng)到現(xiàn)有的報(bào)表展示中,用戶需要刷新(Refresh)數(shù)據(jù),但是,新的查詢請(qǐng)求,都會(huì)使用最新的數(shù)據(jù)。
直接查詢模式需要使用本地?cái)?shù)據(jù)網(wǎng)管(On-Premises Data Gateway),PowerBI Service能夠從云端向本地?cái)?shù)據(jù)源(on-premises data sources)發(fā)送查詢請(qǐng)求。當(dāng)產(chǎn)生數(shù)據(jù)交互行為時(shí),查詢直接發(fā)送到數(shù)據(jù)庫(kù),Excel,Azure SQL DB/DW等,由于PowerBI和Data Source之間是直接連接,因此,不需要調(diào)度數(shù)據(jù)PowerBI Service的數(shù)據(jù)集(Dataset)。
Live/DirectQuery?– This means there is a live connection between Power BI and the data source.
DirectQuery連接模式的好處是:
能夠訪問(wèn)更大Size的Dataset:由于不需要把數(shù)據(jù)加載到Dataset中,DirectQuery模式能夠從海量的數(shù)據(jù)源中加載數(shù)據(jù);
直接訪問(wèn)數(shù)據(jù)源:在DirectQuery模式下,PowerBI使用的是最新的數(shù)據(jù)。
DirectQuery連接模式的調(diào)優(yōu):
在使用DirectQuery連接模式時(shí),如果查詢數(shù)據(jù)源的速度非常慢,以至于需要等待一段時(shí)間才能從基礎(chǔ)數(shù)據(jù)表獲得響應(yīng),那么可以在報(bào)表中設(shè)置Query reduction選項(xiàng),向數(shù)據(jù)源發(fā)送更少的查詢,使查詢交互更快。
為了設(shè)置Query reduction選項(xiàng),你需要點(diǎn)擊 File 主菜單,點(diǎn)擊菜單的路徑是:File > Options and settings > Options,然后在CURRENT FILE目錄下,選擇?Query reduction 選項(xiàng)卡:
禁用默認(rèn)的交叉高亮:在整個(gè)Report上禁用默認(rèn)的交叉高亮顯示,所謂交叉高亮,是指當(dāng)用戶點(diǎn)擊Visualization上的某一行數(shù)據(jù)時(shí),其他Visualization相關(guān)聯(lián)的相關(guān)數(shù)據(jù)行也會(huì)高亮顯示。在禁用交叉高亮之后,用戶可以通過(guò)Visual interactions功能,手動(dòng)為特定的Visual啟用交叉高亮,默認(rèn)情況下,是禁用交叉高亮。
在Slicer或Filer上顯示一個(gè)Apply按鈕:用戶可以選中相應(yīng)的選項(xiàng),但是,只有在點(diǎn)擊Apply按鈕之后,用戶選中的Slicer或Filer才會(huì)用于過(guò)濾數(shù)據(jù)。
二,數(shù)據(jù)刷新(Data Refresh)
PowerBI Service從Dataset中獲取數(shù)據(jù),用于數(shù)據(jù)分析和展示,用戶可以通過(guò)"SCHEDULE REFRESH"和"REFRESH NOW"刷新Dataset的數(shù)據(jù),把Dataset的數(shù)據(jù)更新到最新。用戶刷新Dataset之前,必須配置內(nèi)網(wǎng)數(shù)據(jù)網(wǎng)關(guān)(On-Premises Data Gateway),詳細(xì)信息,請(qǐng)參考我的博文《PowerBI開(kāi)發(fā) 第六章:數(shù)據(jù)網(wǎng)管》。PowerBI Service對(duì)數(shù)據(jù)Dataset的刷新是完整數(shù)據(jù)刷新,而不是增量數(shù)據(jù)刷新。
When you refresh data, you are updating the data in the dataset that is stored in Power BI from your data source. This refresh is a full refresh and not incremental.
當(dāng)使用Import連接模式時(shí),所有的數(shù)據(jù)都會(huì)從Data Source導(dǎo)入到PowerBI Service的緩存中,PowerBI的可視化控件都是從緩存中查詢數(shù)據(jù)。一旦PowerBI文件發(fā)布到PowerBI Service中,PowerBI 將會(huì)創(chuàng)建一個(gè)Dataset,用于存儲(chǔ)被導(dǎo)入的數(shù)據(jù)。設(shè)置調(diào)度,定時(shí)刷新Dataset,使得PowerBI呈現(xiàn)最新的分析數(shù)據(jù),對(duì)于做出正確的決策是非常重要的。
三,連接模式的性能
推薦使用導(dǎo)入(Import)連接模式,這是因?yàn)镻owerBI 使用內(nèi)存的列式數(shù)據(jù)庫(kù)?VertiPaq,用于對(duì)已發(fā)布的數(shù)據(jù)集(Dataset)進(jìn)行數(shù)據(jù)壓縮和快速處理,能夠使PowerBI報(bào)表執(zhí)行脫機(jī)訪問(wèn),面向列的處理,高度優(yōu)化對(duì)1:N關(guān)系的處理性能。導(dǎo)入模式非常適合聚合查詢,特別是,當(dāng)存在大量的關(guān)系時(shí),PowerBI能夠快速執(zhí)行聚合運(yùn)算。導(dǎo)入模式的缺點(diǎn)是Dataset的Size最大是1GB,需要調(diào)度刷新才能訪問(wèn)最新的數(shù)據(jù)。
直接查詢(DirectQuery)模式,建立PowerBI和Data Source之間的直接連接,訪問(wèn)的數(shù)據(jù)始終是最新的,并且數(shù)據(jù)源的大小是無(wú)限制的。在直接查詢模式下,PowerBI直接發(fā)送查詢到Datasource中,以獲取所需要的數(shù)據(jù)。當(dāng)Data Source是關(guān)系型數(shù)據(jù)庫(kù)時(shí),PowerBI直接發(fā)送SQL查詢語(yǔ)句到數(shù)據(jù)庫(kù)中。直接查詢模式的最大缺點(diǎn)是性能問(wèn)題。
在直接查詢模式下,所有的直接查詢請(qǐng)求都直接發(fā)送到源數(shù)據(jù)庫(kù)中,后端數(shù)據(jù)源響應(yīng)查詢請(qǐng)求的速度決定了直接查詢的性能。雖然PowerBI盡可能的優(yōu)化生成的SQL命令,但是,通過(guò)監(jiān)控發(fā)現(xiàn),PowerBI最終生成的SQL命令是非常低效的,特別是在查詢海量的數(shù)據(jù)源時(shí),后端(Back-end)數(shù)據(jù)源需要執(zhí)行很長(zhǎng)時(shí)間,才能返回結(jié)果。等待的時(shí)間超過(guò)30s,用戶體檢就很不理想了。當(dāng)導(dǎo)入模式不能滿足業(yè)務(wù)需求時(shí),再考慮直接查詢模式。
四,數(shù)據(jù)加載(并行和串行)
在設(shè)計(jì)PowerBI 報(bào)表時(shí),我們使用兩種方式來(lái)刷新數(shù)據(jù),可以手動(dòng)逐個(gè)地刷新Query,也可以點(diǎn)擊Refresh按鈕同時(shí)刷新所有的Query。當(dāng)點(diǎn)擊刷新全部(Refresh All)時(shí),由于系統(tǒng)內(nèi)存的限制,刷新操作可能會(huì)失敗。PowerBI Desktop加載數(shù)據(jù)的方式可以是串行的,也可以是并行的,默認(rèn)是并行的,以串行方式加載數(shù)據(jù),不需要很大的內(nèi)存就可以完成。當(dāng)PowerBI需要刷新很多Query時(shí),刷新全部可能會(huì)使PowerBI占用過(guò)多的系統(tǒng)內(nèi)存而發(fā)生錯(cuò)誤,此時(shí),可以設(shè)置PowerBI,使其以串行的方式加載數(shù)據(jù)以解決這個(gè)問(wèn)題。
設(shè)置串行加載數(shù)據(jù)的步驟是:點(diǎn)擊File->Opions & Settings->Options,如下圖所示,在CURRENT FILE選項(xiàng)卡中,打開(kāi)"Data Load"分組,勾選“Enable parallel loading of tables”,啟用PowerBI的串行加載數(shù)據(jù)模式。
然而,這種模式只是以串行的方式把數(shù)據(jù)加載到PowerBI的緩存中,當(dāng)在數(shù)據(jù)模型中創(chuàng)建連接時(shí)發(fā)生異常,或者在等待數(shù)據(jù)源返回?cái)?shù)據(jù)集時(shí)出現(xiàn)異常,
數(shù)據(jù)刷新仍然會(huì)失敗。PowerBI的刷新全部數(shù)據(jù)(Refresh All)的工作流程類似于事務(wù),只有當(dāng)全部的數(shù)據(jù)集都刷新成功時(shí),數(shù)據(jù)刷新才是成功的;只要有一個(gè)數(shù)據(jù)集刷新失敗,整個(gè)刷新操作就失敗。
當(dāng)需要查詢的數(shù)據(jù)集較多時(shí),用戶體驗(yàn)非常差。如果PowerBI不能解決大量數(shù)據(jù)集的刷新問(wèn)題,那么其功能是不完善的,期待PowerBI 團(tuán)隊(duì)后續(xù)的更新會(huì)修復(fù)這個(gè)異常。
參考文檔:
總結(jié)
以上是生活随笔為你收集整理的powerbi实时刷新mysql数据库_PowerBI开发 第七篇:数据集和数据刷新的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 微软公布ChatGPT版Bing不到48
- 下一篇: voltdb mysql_MySQL/H