欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

這篇文章主要介紹“怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)”,在日常操作中,相信很多人在怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的凱里網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

看一個(gè)具體的例子:ABAP 740里的一個(gè)新關(guān)鍵字REDUCE. 這個(gè)關(guān)鍵字的作用和在大規(guī)模數(shù)據(jù)集并行計(jì)算領(lǐng)域里廣泛使用的"Map-Reduce"編程模型中的Reduce操作類(lèi)似,可以按照字面意思理解為“歸約”。

下圖是Map Reduce框架的工作步驟,統(tǒng)計(jì)一個(gè)海量輸入數(shù)據(jù)集(比如大于1TB)中的單詞出現(xiàn)次數(shù)。作為ABAP開(kāi)發(fā)人員,我們沒(méi)必要了解Map Reduce框架的每個(gè)執(zhí)行步驟,只需緊盯框架的輸入,以及執(zhí)行結(jié)果就行了。

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

回到Jerry接受的實(shí)際工作任務(wù)。德國(guó)同事讓Jerry在某個(gè)CRM測(cè)試系統(tǒng)上做個(gè)統(tǒng)計(jì),列出在數(shù)據(jù)庫(kù)表CRM_JSTO里,OBTYP(Object Type)和STSMA(Status Schema)這兩列擁有相同值的內(nèi)表行的個(gè)數(shù)。大家可以把"OBTYP和STSMA兩列具有相同值的內(nèi)表行"類(lèi)比成上圖中重復(fù)出現(xiàn)的單詞。

下圖是CRM_JSTO的部分行:

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

下圖是Jerry完成的任務(wù): 測(cè)試系統(tǒng)上內(nèi)表一共有55多萬(wàn)行,其中有90279行,只維護(hù)了OBTYP為T(mén)GP,而沒(méi)有維護(hù)STSMA. 排名第二的是COH和CRMLEAD的組合,出現(xiàn)了78722次。

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

稍稍做過(guò)一些ABAP開(kāi)發(fā)的朋友們,一定會(huì)立即寫(xiě)出下面的代碼:

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

利用SELECT COUNT直接在數(shù)據(jù)庫(kù)層完成統(tǒng)計(jì)工作。這也是SAP推薦的做法,所謂Code pusudown準(zhǔn)則,即能放到HANA數(shù)據(jù)庫(kù)層面進(jìn)行的操作,就盡量放進(jìn)去,以充分利用HANA強(qiáng)大的計(jì)算能力。在數(shù)據(jù)庫(kù)能夠完成計(jì)算邏輯的前提下,盡量避免把計(jì)算邏輯放到Netweaver ABAP應(yīng)用層去做。

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

不過(guò),我們也需要注意到這種方式的局限性。Jerry之前曾經(jīng)引用過(guò)SAP CTO的名言:

  • There is no future with ABAP alone

  • There is no future in SAP without ABAP

未來(lái)的ABAP會(huì)走向開(kāi)放,互聯(lián)的道路。回到這個(gè)需求本身,假設(shè)待檢索的輸入數(shù)據(jù)不是從ABAP數(shù)據(jù)庫(kù)表中來(lái),而是來(lái)自HTTP請(qǐng)求,或者第三方系統(tǒng)發(fā)過(guò)來(lái)的IDOC,此時(shí)我們無(wú)法再使用OPEN SQL本身的SELECT COUNT操作,而只能在ABAP應(yīng)用層解決這個(gè)問(wèn)題。

所謂技多不壓身,Jerry這里介紹兩種用ABAP完成這個(gè)需求的方式。

第一種方式比較傳統(tǒng),實(shí)現(xiàn)在方法get_result_traditional_way里:

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

ABAP的LOOP AT GROUP BY這個(gè)關(guān)鍵字組合簡(jiǎn)直就像是為這個(gè)需求量身定做一般:給GROUP BY指定obtyp和stsma這兩列,然后LOOP AT會(huì)自動(dòng)將輸入內(nèi)表的行記錄根據(jù)這兩列的值進(jìn)行分組,每組行記錄的個(gè)數(shù)通過(guò)關(guān)鍵字GROUP SIZE自動(dòng)計(jì)算出來(lái),每組各自的obtyp和stsma的值,以及組內(nèi)行記錄的條目數(shù),存儲(chǔ)在REFERENCE INTO指定的變量group_ref里。ABAP顧問(wèn)需要做的事情,只是簡(jiǎn)單地把這些結(jié)果存儲(chǔ)到輸出內(nèi)表即可。

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

第二種辦法,就是本文標(biāo)題所述,使用ABAP 740新的REDUCE關(guān)鍵字:

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

上面的代碼乍一看可能覺(jué)得有點(diǎn)晦澀,但仔細(xì)閱讀后發(fā)現(xiàn)這種方式本質(zhì)上也采用了和方法一LOOP AT GROUP BY同樣的分組策略——根據(jù)obtyp和stsma分組,這些子組通過(guò)變量<group_key>標(biāo)識(shí),然后通過(guò)第10行的REDUCE關(guān)鍵字,通過(guò)累加的方式,手動(dòng)計(jì)算這個(gè)組的條目數(shù)——把一個(gè)大的輸入集根據(jù)GROUP BY指定的條件歸約成一個(gè)個(gè)規(guī)模更小的子集,然后分別針對(duì)子集進(jìn)行計(jì)算——這就是REDUCE關(guān)鍵字通過(guò)字面含義傳遞給ABAP開(kāi)發(fā)人員的處理思想。

總結(jié)和比較一下這三種實(shí)現(xiàn)方式:當(dāng)待統(tǒng)計(jì)的數(shù)據(jù)源為ABAP數(shù)據(jù)庫(kù)表時(shí),一定優(yōu)先選用OPEN SQL的方式,使計(jì)算邏輯在數(shù)據(jù)庫(kù)層完成,以獲得最佳的性能。

當(dāng)數(shù)據(jù)源并非ABAP數(shù)據(jù)庫(kù)表,而分組統(tǒng)計(jì)的需求為簡(jiǎn)單的計(jì)數(shù)操作(COUNT)時(shí), 優(yōu)先用LOOP AT ... GROUP BY ... GROUP SIZE,使得計(jì)數(shù)操作通過(guò)GROUP SIZE在ABAP kernel完成,以獲得較好的性能。

當(dāng)數(shù)據(jù)源并非ABAP數(shù)據(jù)庫(kù)表,而分組統(tǒng)計(jì)的需求為自定義的邏輯時(shí),用本文介紹的第三種REDUCE解法,將自定義統(tǒng)計(jì)邏輯寫(xiě)在第11行的NEXT關(guān)鍵字后。

這三種解法的性能依次遞減,不過(guò)適用的場(chǎng)合和靈活程度依次遞增。

LOOP AT ... GROUP BY ... GROUP SIZE,在Jerry的服務(wù)器上處理55萬(wàn)條記錄,用了0.3秒,而REDUCE則需花費(fèi)0.8秒。

怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)

到此,關(guān)于“怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

文章名稱(chēng):怎么用ABAP的新關(guān)鍵字REDUCE完成實(shí)際工作任務(wù)
分享網(wǎng)址:http://chinadenli.net/article34/gieese.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名ChatGPTGoogle用戶(hù)體驗(yàn)微信公眾號(hào)網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管