<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          怎樣考察報表工具的開發(fā)效率?

          共 5403字,需瀏覽 11分鐘

           ·

          2022-03-10 20:30

          工具,本身就是為了解決各種重復性工作效率低下的問題而誕生的產(chǎn)物,報表工具也是工具,所以它的誕生,它的使命,也是為了提效!是為了提升數(shù)據(jù)信息化項目中報表的開發(fā)效率而誕生的
          但不同的工具,開發(fā)方式不同,效率自然也分高下。效率高的,不僅做起來簡單方便,還能給項目上節(jié)省很多成本;效率低的,開發(fā)起來費事費力,不僅工程師受不了,常年累月無形中浪費掉的人工成本,企業(yè)也受不了
          那怎么才能選一個開發(fā)效率高的呢?開發(fā)效率應該怎么考察呢?
          很多人在考察報表工具時,會關(guān)注工具是不是有流暢的可視化操作界面(廠家也喜歡宣傳這一點,零編碼、拖拖拽拽做報表等等)。確實,有這種界面的工具很容易上手,能迅速開工。但是,報表工具通常是要長期使用的,這時候的重點其實是考察工具對付復雜場景的開發(fā)效率,因為長期使用后,總會碰到很多復雜的情況,而這種情況即便少,也是更費時費力的。工具一時易上手的特性并不是重點,因為程序員很快就會變成熟手
          下面我們用潤乾報表,通過幾個由簡到繁的示例來看看報表工具的開發(fā)效率應該怎么考察

          示例 1:簡單分組

          根據(jù)如下數(shù)據(jù)表,制作報表
          按銷售員、類別統(tǒng)計訂單數(shù)量,并增加合計,結(jié)果報表:
          制作過程
          數(shù)據(jù)集設(shè)置
          ds1: select * from orderlist
          報表模板設(shè)計
          A2:=ds1.group(NAME;NAME:1),按照銷售員分組,可以手動輸入公式,也可以報表設(shè)計器右下角選擇分組方式拖拽:
          B1:=ds1.group(CATEGORY;CATEGORY:1),操作方式同 A2,設(shè)置擴展方式為橫向
          B2:設(shè)計器右下角,選擇匯總,匯總方式選擇“計數(shù)”,拖拽任意字段到 B2 單元格
          B3、C2、C3:合計單元格,表達式手動輸入:=sum(B2{})
          報表結(jié)果
          對于這類簡單報表,各工具效率上基本沒有什么差異,潤乾報表是直接寫表達式(也可以拖拽),其他工具有寫表達式的,也有拖拽做的,都比較簡單。有些工具的可視化的點擊操作做得更人性化,體驗更好,更適合初級學習人員

          示例 2:帶條件的分組

          基于同一個數(shù)據(jù)表,我們改一下表樣,稍微增加一些難度,根據(jù)日期字段中的年來分組,看看不同產(chǎn)品的操作上有什么變化
          按照年度統(tǒng)計產(chǎn)品的平均售價,單筆采購數(shù)量不同、采購時間不同,產(chǎn)品的單價可能不同,產(chǎn)品平均單價 = 總金額 / 總數(shù)量
          結(jié)果表樣:
          制作過程
          數(shù)據(jù)集設(shè)置
          ds1:
          SELECTORDERLIST.ORDER_DATE,ORDERLIST.PRODUCT,ORDERLIST.PRICE,ORDERLIST.AMOUNT FROM ORDERLIST
          報表模板設(shè)計
          A2:=ds1.group(year(ORDER_DATE);ORDER_DATE:1)+“年”,取字段的年并分組
          B1:=ds1.group(PRODUCT;PRODUCT:1),按產(chǎn)品字段分組并設(shè)置橫向擴展
          B2:=ds1.sum(PRICEAMOUNT)/ds1.sum(AMOUNT),先通過 PRICEAMOUNT 算出金額,再進行匯總,然后除以總數(shù)量。
          難度稍微增加以后,潤乾報表還是只要在單元格里寫簡單的表達式就可以了,依舊簡單。
          但有些工具不支持格子里自由寫公式和條件,只能在對話框里設(shè)置,結(jié)果就是拖拽完基礎(chǔ)表達式以后,還得打開對話框設(shè)置一下條件才可以,比如這個按年分組
          從這個報表就已經(jīng)可以看出一些端倪了,ds1.group(year(ORDER_DATE);ORDER_DATE:1)+"年" 是寫一個這樣的表達式,還是每次都多點幾步對話框去設(shè)置,哪種方法的工作效率更高呢?只考察最簡單的情況是看不出這些區(qū)別的

          示例 3:再復雜一些的分組

          還是基于這個數(shù)據(jù)表,我們做個一個格式再復雜一些的表樣
          按銷售人員統(tǒng)計優(yōu)質(zhì)訂單的情況,優(yōu)質(zhì)訂單指:回款日期在訂單日期 30 日內(nèi)且單筆訂單金額 >=10000
          制作過程
          數(shù)據(jù)集設(shè)置
          ds1:select order_date,price,amount,name,re_date from orderlist where substr(order_date,0,4)=‘2012’
          報表模板設(shè)計
          A3:=ds1.group(NAME;NAME:1),可以鼠標拖拽,也可以手動輸入
          B3:=ds1.count()
          C3:=ds1.count(price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30)
          D3:=C3/B3,設(shè)置顯示格式為“#0.00%”
          E3:=ds1.sum(PRICE*amount)
          F3:=ds1.sum(PRICE*amount,price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30),條件表達式和 C3 一樣,可以在 =ds1.sum(PRICE*amount) 基礎(chǔ)上,直接將條件表達式復制過來
          G3:將 D3 直接復制到 G3,單元格引用名稱自動變化,顯示格式保留
          H3:=ds1.count(price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30 and month(ORDER_DATE)>=10 and month(ORDER_DATE)<=12),在 C3 的基礎(chǔ)上增加季度判斷條件
          I3:=H3/B3,設(shè)置顯示格式為“#0.00%”
          J3:=ds1.sum(PRICE*amount,price*amount>=10000 and interval(ORDER_DATE,RE_DATE)<=30 and month(ORDER_DATE)>=10 and month(ORDER_DATE)<=12),在 E3 的基礎(chǔ)上,直接將 H3 的條件表達式復制過來
          K3:將 I3 直接復制到 K3,單元格引用名稱自動變化,顯示格式保留
          到這個例子,是不是已經(jīng)感覺這些表達式寫起來也沒有多困難了,即使是初學者,也能輕易看懂并寫出來了,是的,有這樣的感覺就對了,對于搞計算機的同學,這確實不難
          再來看看其他的一些只能通過對話框來設(shè)置條件的工具處理這樣的情況會怎樣
          每增加一個條件,一個 and,就得點一次增加,如果要修改,刪除,同樣得挨個去點,每次設(shè)置還都得打開、關(guān)閉一次對話框
          如果每次都得這樣,估計初學者也不會覺得簡單而是會感到麻煩了,更別說熟練的老同學了這樣無端端多出了好多沒必要的操作,會浪費很多的時間,減少很多產(chǎn)出
          懂了表達式以后,還是直接寫表達式更快更好,可視化操作看上去很美,但效率并不會高

          小節(jié)

          從上面三個報表我們可以看出,簡單的表樣,可視化的對話框設(shè)置確實使用體驗更好,但格式稍微變復雜一點以后,工程師已經(jīng)掌握表達式的書寫以后,如果仍然還得用對話框就顯得繁瑣了
          而且報表開發(fā)人員是技術(shù)工種,從初學者到熟手是輕而易舉的事情,是否快和方便,要從一個熟手的角度去衡量,而不是初學者,所以考察的時候千萬不要掉到生手容易熟手繁瑣的操作陷阱中
          上面三個報表都是比較初級的報表,我們更多的是從簡單的普通操作上來看開發(fā)的效率如何,但實際的項目中,報表常常遠沒有這么簡單,很多都會涉及較復雜的計算, 制作這些復雜的報表耗費的時間會更多,也更需要注重效率,所以復雜計算報表的開發(fā)效率,也是我們考察的重點
          我們繼續(xù)用兩個示例來看下更復雜的報表的開發(fā)效率如何考察
          示例 4 側(cè)重于考察報表工具函數(shù)的功能,看一些復雜計算場景中,是否有對應的高級函數(shù)來直接解決問題,示例 5 側(cè)重于考察工具處理一些復雜的多步、過程式計算的能力,看處理這些計算是否簡單高效

          示例 4:找出進步最快的 3 名同學

          基于如下數(shù)據(jù)學生成績表:
          進行年度學生成績匯總,進行班級班名以及和去年成績對比,找出進步最快的三位同學,形成如下結(jié)果:
          要點:看各工具怎么去做這個計算,看哪個更簡單高效
          制作過程
          參數(shù)設(shè)置
          報表中增加參數(shù) nd,默認值為 2019,用于接收年份
          數(shù)據(jù)集設(shè)置:
          ds1:SELECT bj,studentid,yuwen+shuxue+yingyu zf,nd FROM XSCJ where nd=?,問號對應參數(shù)表達式:nd,用于對參數(shù)對應年度數(shù)據(jù)
          ds2:SELECT bj,studentid,yuwen+shuxue+yingyu zf,nd FROM XSCJ where nd=?,問號對應參數(shù)表達式:nd-1,取參數(shù)對應上一年數(shù)據(jù)
          報表模板設(shè)計:
          A3、A4 單元格合并,按照班級分組,設(shè)置顯示值表達式:chn(int(value()))+“班”
          B3、B4 分別取出姓名、分數(shù)字段
          D3:=count(C3[A3]{C3>$C3})+1,班級內(nèi)排名
          E3:=count(C3[`0]{C3>=$C3})+1,年級排名
          F3:=ds2.select(zf,bj==A3 && studentid==B3),從 ds2 數(shù)據(jù)集中取出去年成年,條件直接寫在 select 函數(shù)內(nèi)
          G3:=C3-F3,成績變化
          B4:=“班內(nèi)成績提升最快的三位同學是:”+string(esproc(“?.m(?.ptop(-3))”,B3{},G3{})),使用潤乾內(nèi)置函數(shù) esproc,將 K3 單元格(名次變化幅度)傳入,ptop(-3) 取最大的 3 位的位置,然后用 m() 函數(shù)根據(jù)位置取對應的姓名
          結(jié)果如下:
          這個例子主要是測試報表工具的一些復雜計算能力,如果報表工具的模型中函數(shù)較為豐富且計算能力強,比如潤乾報表內(nèi)置了很多開源 SPL 計算工具的高級函數(shù),那處理起復雜計算來就會游刃有余
          如果函數(shù)計算功能不足,那就得通過多步計算,額外在報表中設(shè)置輔助計算格才可以完成,比如有些報表工具,需要像下面這樣用 H 列進一步計算需要的數(shù)據(jù),然后再隱藏掉
          這些額外輔助計算格,不僅增加了開發(fā)工作量,數(shù)據(jù)量大的時候,還會影響報表的性能
          其實這款報表已經(jīng)不錯,提供有層次坐標之類的東西,用隱藏格還能做出來,有些報表工具連這個都沒有,只能自己在外部寫代碼實現(xiàn)了,工作效率會大受影響

          示例 5:找出指定時間內(nèi)的大客戶

          從如下銷售數(shù)據(jù)中:
          取出指定時段的大客戶。所謂大客戶,定義為銷售額占前一半的客戶,也就是把客戶銷售額從大到小排序后,前面若干個客戶的合計銷售額構(gòu)成總銷售的一半,這些客戶被稱為大客戶
          報表結(jié)果:
          制作過程
          數(shù)據(jù)集設(shè)置
          潤乾報表內(nèi)置了高效的開源計算工具 SPL,可以通過內(nèi)置的腳本更簡單高效的計算這些復雜的多步計算,把計算結(jié)果當做數(shù)據(jù)集直接供報表來使用,腳本如下:
          A3:對銷售額進行求和操作并處以 2,取出總金額的一半,用于判斷大客戶。B3 設(shè)置初始值為 0,用于做銷售額累加操作
          A4:對銷售額進行累加,取出累加金額大于 A3 中對應的 A2 的序號
          A5:根據(jù)序號取 A2 中對應的值,并做為結(jié)果集返回給報表
          報表模板設(shè)計
          報表結(jié)果
          從這個例子可以看出,原本需要在報表中做大量計算才能做出的報表,經(jīng)過腳本準備數(shù)據(jù)后,只需要在報表中直接取數(shù)就可以了
          如果沒有腳本,那就只能在報表中完成這樣的計算,寫起來麻煩,需要設(shè)置很多輔助格,同時增大了實現(xiàn)難度,對人員要求變高了很多(意味著成本上升),而且性能也遠沒有腳本的好
          本示例只是舉了一個很小的需要分步計算的例子,就已經(jīng)可以看出不同工具的設(shè)計效率了,一個簡單易懂的腳本搞定,還是一堆輔助計算格 + 復雜的表達式來完成,開發(fā)效率差異是顯而易見的
          實際的項目中的復雜報表,對原始數(shù)據(jù)的處理和計算,遠遠要比本例復雜的多,如果有腳本功能,那可以用腳本來處理這些計算,不僅寫起來簡單,算起來還快,如果沒有腳本功能,那就只能用成百上千行的復雜 SQL,存儲過程或者高級語言去寫了,那樣開發(fā)效率就更低了
          所以我們考察報表工具對于復雜報表的開發(fā)效率時,可以看看自己的項目中有沒有需要寫復雜的 SQL、存儲過程或者更復雜的數(shù)據(jù)來源處理的報表,拿來找各工具測試驗證下,看看它們的效率都如何

          價格也是個重要因素

          價格和考察開發(fā)效率也有關(guān)系嗎?
          還真有,考察開發(fā)效率的最終目的不就是為了節(jié)省時間和人工成本嗎?都是為了省成本,那價格上省出來的成本其實更直接。工具的購買價格和開發(fā)效率要放在一起綜合考慮才能得到總體的成本
          比如大家可能都會想到使用不要錢的開源報表,購買價格為 0,但開發(fā)效率太低(面對我國的復雜報表),結(jié)果總體成本卻不低。而商用報表工具雖然要花錢,但開發(fā)效率能提高很多,有可能總體成本會更低。
          當然,價格很容易對比,只要別忘了就行了

          總結(jié)

          怎么考察報表的開發(fā)效率,相信大家看過上面的考察要點和示例以后,應該都比較清楚了,其實并不難,那就是實際去用一用,看看一個熟練的工程師用起來繁瑣不繁瑣,測測項目上格式和計算復雜的報表各個工具做起來困難不困難,用過試過就找到答案了
          同時,價錢也挺重要



          感興趣的小伙伴,請識別右側(cè)二維碼與我們聯(lián)系

          微信號|RUNQIAN_RAQSOFT

          歡迎來【乾學院】的原文中留言,發(fā)表您的觀點!
          瀏覽 34
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  奇米影视成人社区 | 大雞巴疯狂浓精合集 | 草大B老骚B| 欧美黄色性爱视频 | 男人天堂社区 |