Azure Synapse Analytics和Power BI的性能改進(jìn)

URL:https://www.jamesserra.com/archive/2019/12/azure-synapse-analytics-power-bi/

最近纵隔,Azure Synapse Analytics(原名?Azure SQL數(shù)據(jù)倉庫)正式發(fā)布的兩個(gè)與關(guān)系型數(shù)據(jù)庫有關(guān)的新功能(結(jié)果集緩存 [Result-set caching]?和具體化視圖 [Materialized View]), 在配合Power BI使用時(shí)可大幅提升報(bào)表性能。本文將介紹可以為Power BI查詢提速的不同方法,以及在Power BI中是否依然需要使用Azure Analysis Services,或者只使用表格模型(例如“多維數(shù)據(jù)集”)就足夠了元咙。請(qǐng)注意赡译,Azure Synapse Analytics還有一個(gè)單獨(dú)的預(yù)覽版本,該版本包含工作區(qū)(Workspace)以及一些新功能占调,例如Apache Spark、Azure Analytics Studio移剪、Serverless按需查詢究珊,該版本中的關(guān)系型數(shù)據(jù)庫引擎和關(guān)系型存儲(chǔ)是“SQL Analytics”池的一部分。本文介紹的所有內(nèi)容同樣適用于SQL Analytics池纵苛。為避免產(chǎn)生混淆桩匪,下文將使用“SQL DW”同時(shí)代表當(dāng)前版本的Azure Synapse Analytics以及預(yù)覽版中的SQL Analytics池砾嫉。

首先簡(jiǎn)單看看可以在Power BI中使用的各類選項(xiàng):

導(dǎo)入:從數(shù)據(jù)源(例如SQL DW)選中的表和列可導(dǎo)入Power BI Desktop進(jìn)而導(dǎo)入計(jì)算機(jī)內(nèi)存。隨著我們創(chuàng)建可視化或與可視化結(jié)果交互,Power BI Desktop將直接使用導(dǎo)入的數(shù)據(jù)胸梆,而絕對(duì)不會(huì)碰觸數(shù)據(jù)源(在其內(nèi)部踊谋,Power BI會(huì)將相關(guān)數(shù)據(jù)存儲(chǔ)在位于內(nèi)存緩存中的分析服務(wù)引擎中)护赊。我們必須刷新數(shù)據(jù)進(jìn)而將完整數(shù)據(jù)集重新導(dǎo)入(或使用Power BI Premium的增量刷新功能)给赞,才可以看到自從初始導(dǎo)入或上次刷新后底層數(shù)據(jù)產(chǎn)生的變化(因此這種方式并不是實(shí)時(shí)的)。Power BI服務(wù)中導(dǎo)入的數(shù)據(jù)集大小存在上限蓬坡,Power BI Premium版最多可導(dǎo)入10GB數(shù)據(jù)集(預(yù)覽版中該上限為400GB猿棉,這也是Azure Analysis Services能支持的最大規(guī)模)磅叛,Power BI免費(fèi)版最多可導(dǎo)入1GB數(shù)據(jù)集。請(qǐng)注意铺根,數(shù)據(jù)在被導(dǎo)入內(nèi)存時(shí)會(huì)被高度壓縮宪躯,因此實(shí)際可導(dǎo)入的數(shù)據(jù)量可能遠(yuǎn)大于這些限制。詳情可參閱Power BI Desktop中的數(shù)據(jù)源位迂。

DirectQuery:不將任何數(shù)據(jù)導(dǎo)入或復(fù)制到Power BI Desktop中访雪。此時(shí)當(dāng)我們創(chuàng)建可視化或與可視化結(jié)果交互時(shí),Power BI Desktop會(huì)直接查詢底層數(shù)據(jù)源(例如SQL DW)掂林,這意味著我們始終可以看到SQL DW中的最新數(shù)據(jù)(也就是實(shí)時(shí)的)臣缀。DirectQuery可供我們針對(duì)非常大的數(shù)據(jù)集構(gòu)建可視化,此時(shí)數(shù)據(jù)集的規(guī)模甚至可以大到已經(jīng)無法首先導(dǎo)入然后進(jìn)行聚合(雖然現(xiàn)在可以支持最大400GB的數(shù)據(jù)集泻帮,但聚合表依然需要使用DirectQuery精置,因?yàn)楹芏嗲闆r下數(shù)據(jù)集無法完全裝入內(nèi)存,并且只有需要實(shí)時(shí)獲得結(jié)果時(shí)才有必要使用DirectQuery)锣杂。詳情可參閱DirectQuery支持的數(shù)據(jù)源脂倦。

復(fù)合模型:可供一個(gè)報(bào)表無縫結(jié)合來自一個(gè)或多個(gè)DirectQuery數(shù)據(jù)源的數(shù)據(jù),并/或結(jié)合來自DirectQuery數(shù)據(jù)源和已導(dǎo)入數(shù)據(jù)的混合數(shù)據(jù)元莫。這就意味著我們可以將多個(gè)DirectQuery數(shù)據(jù)源與多個(gè)導(dǎo)入的數(shù)據(jù)源結(jié)合在一起赖阻。

雙重存儲(chǔ)模式:取決于提交到Power BI數(shù)據(jù)集的查詢上下文,雙重表(Dual table)可以表現(xiàn)為緩存的(導(dǎo)入的)或未緩存的踱蠢。某些情況下火欧,使用緩存的數(shù)據(jù)即可實(shí)現(xiàn)查詢;但也有些情況茎截,可能需要針對(duì)數(shù)據(jù)源執(zhí)行按需查詢(DirectQuery)才能實(shí)現(xiàn)查詢苇侵。

聚合:通過底層詳細(xì)信息表(將被設(shè)置為DirectQuery,意味著詳細(xì)信息數(shù)據(jù)會(huì)保留在數(shù)據(jù)源企锌,不被導(dǎo)入)可以創(chuàng)建聚合表(如果設(shè)置為導(dǎo)入模式榆浓,聚合表會(huì)駐留在內(nèi)存中)。如果用戶查詢所需的數(shù)據(jù)可以從聚合表中獲取撕攒,那么將直接從內(nèi)存中的表內(nèi)獲榷妇椤;否則會(huì)針對(duì)底層詳細(xì)信息表發(fā)起一次DirectQuery打却。針對(duì)同一個(gè)詳細(xì)信息表杉适,我們可以使用不同的求和(Summations off)創(chuàng)建多個(gè)聚合表谎倔。聚合表可以看作一種微型的多維數(shù)據(jù)集柳击,或類似于在SQL數(shù)據(jù)庫中通過索引加速SQL查詢的性能優(yōu)化技術(shù)。然而要注意片习,聚合表的創(chuàng)建過程需要耗費(fèi)一定時(shí)間(類似于多維數(shù)據(jù)集的處理工作)捌肴,并且數(shù)據(jù)不是實(shí)時(shí)的(只能體現(xiàn)最后一次刷新后的結(jié)果)蹬叭。詳情可參閱Power BI中的聚合以及創(chuàng)建聚合,第1部分:簡(jiǎn)介状知。

你可能會(huì)好奇秽五,Power BI的導(dǎo)入模式現(xiàn)在已經(jīng)可以支持更大的模型(400GB),此時(shí)還有必要使用聚合表嗎饥悴?大部分情況下還是必要的坦喘。首先,僅Power BI

Premium支持更大的模型西设,如果你使用了免費(fèi)版Power BI瓣铣,那么模型最大只能達(dá)到10GB。其次贷揽,導(dǎo)入大規(guī)模的詳細(xì)信息表會(huì)在不進(jìn)行聚合的情況下導(dǎo)入所有詳細(xì)信息記錄(如果是一個(gè)260億行的表棠笑,那么就要將260億行數(shù)據(jù)導(dǎo)入內(nèi)存)。因此哪怕上限高達(dá)400GB禽绪,一些非常大的表依然無法導(dǎo)入蓖救,因而此時(shí)可以使用聚合表創(chuàng)建聚合(260億行的表經(jīng)過這種方式處理,可能被縮小為僅1000萬聚合行印屁,更容易裝入內(nèi)存中)循捺。這種情況下,需要復(fù)制到內(nèi)存的數(shù)據(jù)量將會(huì)大幅減小库车。就算某個(gè)查詢需要的聚合數(shù)據(jù)無法從內(nèi)存中的聚合表內(nèi)獲取巨柒,此時(shí)也沒問題,Power BI會(huì)針對(duì)詳細(xì)信息表執(zhí)行DirectQuery柠衍。簡(jiǎn)而言之洋满,聚合表可以幫助我們順利使用原本根本無法完全裝入內(nèi)存的大容量數(shù)據(jù)集,可以幫助我們使用更便宜的SKU節(jié)約成本珍坊,并且我們完全不需要管理將數(shù)據(jù)復(fù)制到內(nèi)存的相關(guān)操作牺勾。

Azure Synapse Analytics新增的兩個(gè)用于提高性能的功能非常重要:

>>?結(jié)果集緩存:可將查詢結(jié)果自動(dòng)緩存到用戶數(shù)據(jù)庫中以供重復(fù)使用。借此阵漏,后續(xù)查詢執(zhí)行時(shí)就可以從持久緩存中直接獲得結(jié)果驻民,不再需要重新計(jì)算。結(jié)果集緩存可改善查詢性能(將所需時(shí)間降低至毫秒級(jí))并降低計(jì)算資源的用量履怯。此外回还,使用緩存結(jié)果集的查詢會(huì)在Azure Synapse Analytics中設(shè)置為do not use any?concurrency slots,因此不會(huì)消耗現(xiàn)有的并行請(qǐng)求限制叹洲。

>>?具體化視圖:和表類似柠硕,這是一種預(yù)算計(jì)算、存儲(chǔ)并在SQL DW中維持?jǐn)?shù)據(jù)的視圖。每次使用具體化視圖時(shí)蝗柔,將不再重新進(jìn)行計(jì)算闻葵。用到具體化視圖中全部或部分?jǐn)?shù)據(jù)的查詢可以借此實(shí)現(xiàn)更高性能。更棒的是癣丧,查詢甚至可以在無需直接引用的情況下使用具體化視圖槽畔,因此該功能的使用完全不需要更改應(yīng)用程序代碼。

因此在使用Azure Synapse Analytics作為Power BI數(shù)據(jù)源的情況下胁编,查詢?cè)L問數(shù)據(jù)時(shí)涉及到的不同層面將會(huì)如下所示:

每一層的性能表現(xiàn)到底如何厢钧?在一場(chǎng)Ignite課程(可以在這里觀看)中,針對(duì)260億行數(shù)據(jù)運(yùn)行的Power BI查詢可按年份返回店鋪的總銷量嬉橙,相同查詢使用不同層運(yùn)行了三次:

1. 針對(duì)SQL DW中的表運(yùn)行DirectQuery坏快,耗時(shí)8秒

2. 針對(duì)SQL DW中的具體化視圖運(yùn)行DirectQuery憎夷,耗時(shí)2.4秒莽鸿。請(qǐng)注意:無需在查詢中指定自己要使用具體化視圖,SQL DW優(yōu)化器會(huì)判斷是否可以使用拾给。

3. 使用導(dǎo)入到Power BI的聚合表祥得,耗時(shí)0毫秒

需要注意的是蒋得,這一切對(duì)用戶都是透明的级及,用戶只需要?jiǎng)?chuàng)建報(bào)表即可。如果用戶在Power BI中查詢的表不在內(nèi)存中额衙,將會(huì)針對(duì)數(shù)據(jù)源執(zhí)行DirectQuery饮焦,整個(gè)過程可能需要一些時(shí)間。不過因?yàn)镾QL DW支持結(jié)果集緩存窍侧,因此重復(fù)的DirectQuery將會(huì)變得非诚靥撸快(在Ignite課程中演示的DirectQuery,查詢首次運(yùn)行耗時(shí)42秒伟件,但在使用結(jié)果集緩存的情況下硼啤,再次運(yùn)行該查詢僅耗時(shí)154毫秒)。

借助結(jié)果集緩存和具體化視圖等功能斧账,我們就可以在不將數(shù)據(jù)載入Power BI的前提下獲得夢(mèng)寐以求的高性能谴返。

另外需要注意:短期內(nèi),Synapse并不會(huì)對(duì)使用外部聯(lián)接的查詢(而這恰恰是Power BI默認(rèn)發(fā)送的查詢類型)使用具體化視圖咧织。因此Power BI用戶如果希望使用具體化視圖嗓袱,需要為數(shù)據(jù)完整性選項(xiàng)設(shè)置可信數(shù)據(jù)源(但當(dāng)Synapse正式發(fā)布后就不需要這樣做了)。另外需要注意习绢,具體化視圖可以直接查詢渠抹,因此用戶可以創(chuàng)建具體化視圖,隨后即可在Power BI中創(chuàng)建直接引用這些視圖的聚合。

這些新功能也會(huì)讓我們產(chǎn)生疑問:我們是否依然需要Azure Analysis Services(AAS)逼肯,或者Power BI中的表格模型(例如“多維數(shù)據(jù)集”)就足夠了?還是兩者都不再需要桃煎,直接在Power BI中使用DirectQuery足矣篮幢?

對(duì)于第一個(gè)問題,假設(shè)你已經(jīng)有了Power BI Premium(尤其是該版本現(xiàn)已支持XMLA終結(jié)點(diǎn))为迈,那么確實(shí)沒必要繼續(xù)使用AAS三椿。Power BI Premium最終將包含AAS的全部功能。但考慮到平移遷移的場(chǎng)景葫辐,AAS在可預(yù)見的未來將繼續(xù)獲得支持:AAS在模型建模方面與本地的SSAS保持了一致搜锰,因此對(duì)于尚未真正了解Power BI在現(xiàn)代化革新等方面完整收益(具體收益可參閱下文)的客戶,在準(zhǔn)備好擁抱Power BI前耿战,這些客戶可能暫時(shí)會(huì)選擇遷移至AAS(但最終依然將支持從SSAS平移至Power BI的做法)蛋叼。如果希望將其與第三方產(chǎn)品(例如報(bào)表工具)配合使用,并且無法使用Power BI Premium(例如你的公司可能統(tǒng)一使用了其他報(bào)表工具)此時(shí)可能依然需要用到AAS剂陡。例如我目前就遇到過這樣的場(chǎng)景:客戶已經(jīng)斥資訓(xùn)練了一小群?jiǎn)T工構(gòu)建AAS多維數(shù)據(jù)集狈涮,隨后將其提供給更廣泛的用戶群,以便他們通過多維數(shù)據(jù)集進(jìn)行自服務(wù)式的報(bào)表工作鸭栖。

將Power BI與AAS配合使用可獲得的收益包括:使用Microsoft Information Protection標(biāo)簽實(shí)現(xiàn)基于Microsoft Cloud App Security的數(shù)據(jù)保護(hù)歌馍、共享數(shù)據(jù)集聚合晕鹊、通過DW為大數(shù)據(jù)創(chuàng)建的復(fù)合模型松却、借助增量刷新實(shí)現(xiàn)的簡(jiǎn)化管理、跨越工作區(qū)的Power BI數(shù)據(jù)世系視圖溅话、與大數(shù)據(jù)數(shù)據(jù)源更完善的連接能力晓锻、分頁報(bào)表數(shù)據(jù)流飞几、自動(dòng)化的機(jī)器學(xué)習(xí)和認(rèn)知服務(wù)带射、Power BI Desktop建模自帶(加密)密鑰以及多模型內(nèi)存管理循狰。

不過也要注意窟社,目前AAS的某些功能依然未包含在Power BI中,這些功能包括:從Visual Studio部署至Power BI的能力绪钥、XMLA寫入終結(jié)點(diǎn)灿里、查詢的橫向擴(kuò)展、與某些第三方工具的集成程腹、備份/還原匣吊、防火墻多種服務(wù)層級(jí)Log Analytics集成色鸳、REST API的異步處理社痛、透視、模型中的關(guān)鍵績(jī)效指標(biāo)(KPI)命雀、不規(guī)則層次結(jié)構(gòu)蒜哀、對(duì)象級(jí)別安全性以及元數(shù)據(jù)翻譯

好在以后我們將能用非常簡(jiǎn)單的方法把Analysis Services模型部署到Power BI Premium吏砂,因此如果現(xiàn)在使用了Analysis Services撵儿,以后也不會(huì)丟失任何工作成果。屆時(shí)狐血,我們只需要在Visual Studio中淀歇,將部署服務(wù)器屬性的值由現(xiàn)有SSAS或Azure AS服務(wù)器改為Power BI Premium工作區(qū)的XMLA終結(jié)點(diǎn)即可。

此外還有一些很出色的博客文章對(duì)比了Power BI Premium和Azure Analysis Services:Power BI Premium和Azure Analysis Services匈织、為大型數(shù)據(jù)集選用Azure Analysis Services浪默、Power BI大型數(shù)據(jù)集:好的、壞的和丑陋的缀匕、ANALYSIS SERVICES與POWER BI PREMIUM模型功能矩陣浴鸿。

對(duì)于第二個(gè)問題:是否可以針對(duì)SQL DW只使用DirectQuery,以避免在Power BI中同時(shí)使用AAS和多維數(shù)據(jù)集弦追。答案是肯定的岳链,但前提是你確定所要使用的查詢總是能命中SQL DW的結(jié)果集緩存(可以在這里看到哪些東西不會(huì)被緩存,并在這里看到什么情況下會(huì)使用緩存的結(jié)果)劲件。但如果無法滿足這樣的前提掸哑,尤其是你使用的Power BI儀表板需要為所有查詢實(shí)現(xiàn)毫秒級(jí)別的響應(yīng),那么最好在Power BI中為這樣的儀表板使用多維數(shù)據(jù)集或聚合零远,并為即席查詢使用SQL DW苗分。另外需要注意,在Power BI中針對(duì)SQL DW使用DirectQuery時(shí)會(huì)在DAX方面用到一些限制牵辣,此時(shí)可能需要在Power BI中使用AAS或多維數(shù)據(jù)集摔癣,而非DirectQuery。這些限制也包括時(shí)間智能功能(完整清單可參閱這里)纬向。另外還要注意择浊,當(dāng)你不再使用多維數(shù)據(jù)集時(shí),可能會(huì)非常懷念它所提供的某些價(jià)值:語義層逾条、無需聯(lián)接或關(guān)系琢岩、層次結(jié)構(gòu)、KPI师脂、高級(jí)時(shí)間計(jì)算担孔,以及更高的并行請(qǐng)求限制江锨。

更多信息:

Power BI新功能:復(fù)合模型

為大型數(shù)據(jù)集選用Azure Analysis Services

Power BI大型數(shù)據(jù)集:好的、壞的和丑陋的

在Power BI中使用聚合的五大原因

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糕篇,一起剝皮案震驚了整個(gè)濱河市啄育,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拌消,老刑警劉巖挑豌,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拼坎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)完疫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門泰鸡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壳鹤,你說我怎么就攤上這事盛龄。” “怎么了芳誓?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵余舶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我锹淌,道長(zhǎng)匿值,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任赂摆,我火速辦了婚禮挟憔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烟号。我一直安慰自己绊谭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布汪拥。 她就那樣靜靜地躺著达传,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迫筑。 梳的紋絲不亂的頭發(fā)上宪赶,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音脯燃,去河邊找鬼逊朽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛曲伊,可吹牛的內(nèi)容都是我干的叽讳。 我是一名探鬼主播追他,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼岛蚤!你這毒婦竟也來了邑狸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤涤妒,失蹤者是張志新(化名)和其女友劉穎单雾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體她紫,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硅堆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贿讹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渐逃。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖民褂,靈堂內(nèi)的尸體忽然破棺而出茄菊,到底是詐尸還是另有隱情,我是刑警寧澤赊堪,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布面殖,位于F島的核電站,受9級(jí)特大地震影響哭廉,放射性物質(zhì)發(fā)生泄漏脊僚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一遵绰、第九天 我趴在偏房一處隱蔽的房頂上張望吃挑。 院中可真熱鬧,春花似錦街立、人聲如沸舶衬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逛犹。三九已至,卻和暖如春梁剔,著一層夾襖步出監(jiān)牢的瞬間虽画,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工荣病, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留码撰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓个盆,卻偏偏與公主長(zhǎng)得像脖岛,于是被迫代替她去往敵國(guó)和親朵栖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354