自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

零編碼制作報(bào)表真地可能嗎? 原創(chuàng)

發(fā)布于 2025-1-3 18:34
瀏覽
0收藏

很多報(bào)表工具都把零編碼作為宣傳口號(hào),這是真的嗎,真的能減少到零嗎,真有那么神嗎?

簡(jiǎn)單情況下能做到零編碼

當(dāng)數(shù)據(jù)來(lái)源,表格樣式和計(jì)算都比較簡(jiǎn)單時(shí),確實(shí)可以做到零編碼,比如只需要把數(shù)據(jù) select 出來(lái)后展現(xiàn),這樣的情況,大部分工具,都可以通過(guò)拖拽來(lái)完成報(bào)表,是真正的一個(gè)字符都不需要輸入的零編碼

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

上面這類簡(jiǎn)單的列表、分組、交叉報(bào)表,都是可以通過(guò)拖拽生成的,格子中的匯總統(tǒng)計(jì)等簡(jiǎn)單公式,也可以通過(guò)點(diǎn)選按鈕來(lái)自動(dòng)生成,是真正的零編碼

等公式稍復(fù)雜一些,就不能自動(dòng)生成了,就得手動(dòng)輸入一下了

比如上面例子里我們要加個(gè)訂單金額的統(tǒng)計(jì)項(xiàng),訂單金額 = 單價(jià) * 數(shù)量 *(1- 折扣),這個(gè)就只能手寫(xiě)了

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

雖然需要手寫(xiě),但這樣的公式非常簡(jiǎn)單,在工程師眼中不能算作編碼,所以這樣的報(bào)表也可以算零編碼的報(bào)表

再看更復(fù)雜一些的,排名、同比環(huán)比,多源分片等,邏輯更復(fù)雜,寫(xiě)的也就更復(fù)雜了

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

到這里,我們?nèi)匀豢梢悦銖?qiáng)把這些算作是零編碼,畢竟公式再?gòu)?fù)雜也不會(huì)有程序代碼復(fù)雜,這幾行公式,比起不用工具手寫(xiě)報(bào)表的代碼量,不知道要少了多少了

把上面的報(bào)表都能算作零編碼的,我們會(huì)遺憾地發(fā)現(xiàn),所謂的零編碼能做的表大概也就到此為止了,數(shù)據(jù)計(jì)算再?gòu)?fù)雜一些的,就不能硬說(shuō)是沒(méi)有編碼了,而實(shí)際應(yīng)用中這類復(fù)雜的報(bào)表恰恰還是占比比較多的

復(fù)雜情況下只能追求少編碼

報(bào)表的復(fù)雜情況主要體現(xiàn)在兩個(gè)部分,1 是表格內(nèi)計(jì)算復(fù)雜,2 是前期數(shù)據(jù)準(zhǔn)備復(fù)雜,這兩個(gè)方面,都需要一定的編碼了,不同的報(bào)表工具因?yàn)槟芰Φ牟煌?,編碼量的多少也不同,能力強(qiáng)的編碼就少一些,能力弱的,編碼多一些

我們?nèi)匀皇峭ㄟ^(guò)實(shí)際例子來(lái)看看各種復(fù)雜情況下報(bào)表工具的編碼量情況

先看一個(gè)函數(shù)能力強(qiáng)弱的例子

表格內(nèi)的復(fù)雜計(jì)算,有些情況下之所以復(fù)雜是因?yàn)楫a(chǎn)品的函數(shù)能力較弱導(dǎo)致的,比如要算 5 個(gè) 10,有乘法函數(shù)的,直接 5*10 就可以,沒(méi)有的,只能用加法算,10+10+10+10+10

我們通過(guò)成績(jī)表,做一個(gè)如下的報(bào)表

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

我們主要看最下面一個(gè)格子的數(shù)據(jù),要算出提升最快的三位同學(xué)

大部分工具都沒(méi)有專門(mén)做這樣計(jì)算的函數(shù),都需要設(shè)置輔助格,先對(duì)名次變化幅度做個(gè)排名,然后再根據(jù)幅度排名獲取前三位,比如下圖中的 H3 格

這樣原本 B4 一個(gè)格子的計(jì)算,就需要多弄一個(gè)輔助格才能完成,不僅寫(xiě)起來(lái)復(fù)雜,數(shù)據(jù)多的時(shí)候還會(huì)影響性能

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

如果有高級(jí)函數(shù)的工具,算起來(lái)就方便了,B4 一個(gè)格子寫(xiě)個(gè)表達(dá)式就算完了,比如下面潤(rùn)乾報(bào)表中的 SPL 函數(shù):+string(esproc(“?.m(?.ptop(-3))”,B3{},K3{}))

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

可見(jiàn),同樣的計(jì)算,報(bào)表工具中函數(shù)能力的不同,會(huì)導(dǎo)致零編碼的程度截然不同。同樣都號(hào)稱零編碼,但其零編碼適應(yīng)的范圍,對(duì)于不同工具是完全不同的

再看看表格內(nèi)多步計(jì)算的

有些表格內(nèi)計(jì)算更復(fù)雜的情況,需要多步、分步計(jì)算,單一函數(shù)能力無(wú)法覆蓋,那就得用更復(fù)雜的過(guò)程去算,但是這個(gè)過(guò)程也有很大差異,有的一步都少不了,有的可以三步并兩步,寫(xiě)的少還算的快

上例子,我們從如下銷(xiāo)售數(shù)據(jù)中取出指定時(shí)段的大客戶

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

所謂大客戶,定義為銷(xiāo)售額占前一半的客戶,也就是把客戶銷(xiāo)售額從大到小排序后,前面若干個(gè)客戶的合計(jì)銷(xiāo)售額構(gòu)成總銷(xiāo)售的一半,這些客戶被稱為大客戶

報(bào)表結(jié)果:

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

可以看到數(shù)據(jù)和表樣其實(shí)都很簡(jiǎn)單,但是制作的時(shí)候計(jì)算卻不簡(jiǎn)單,需要分多步在報(bào)表中完成計(jì)算才可以,大部分的報(bào)表工具,都是先在報(bào)表格子中算出銷(xiāo)售額總計(jì)、累計(jì)銷(xiāo)售額,然后進(jìn)行數(shù)據(jù)判斷來(lái)確定哪些客戶是大客戶并對(duì)數(shù)據(jù)統(tǒng)計(jì),最后再將這些用于中間過(guò)程計(jì)算,但卻不需要顯示的輔助行列隱藏掉,報(bào)表才算完成,比如下圖中的 B2 和 C3

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

這樣的,通過(guò)一堆輔助格和公式去一步步算,雖然看起來(lái)還是沒(méi)有寫(xiě)代碼,但捋清楚邏輯也挺費(fèi)時(shí)間,復(fù)雜度甚至比寫(xiě)代碼還高了

如果像潤(rùn)乾報(bào)表那樣有自己獨(dú)有的計(jì)算引擎,使用內(nèi)置腳本來(lái)處理這類多步、邏輯復(fù)雜的計(jì)算就簡(jiǎn)單了很多

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

簡(jiǎn)單幾句腳本直接把需要的結(jié)果集計(jì)算出來(lái)返回,報(bào)表模板只要的常規(guī)行式報(bào)表設(shè)計(jì)就可以了

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

這一下,就節(jié)省出了不少的工作量

零編碼的目的是減少工作量,降低復(fù)雜度,但如果復(fù)雜的計(jì)算只能一步步在輔助格里通過(guò)公式來(lái)算,弄出一大堆沒(méi)用的格子和公式來(lái)處理數(shù)據(jù),這樣的零編碼反倒不如去編碼來(lái)的更快了,只有工具具備強(qiáng)力的數(shù)據(jù)處理能力,才能正真的做到少編碼、更接近零編碼

再來(lái)看一個(gè)前期數(shù)據(jù)準(zhǔn)備復(fù)雜的

前面的兩個(gè)例子都是數(shù)據(jù)準(zhǔn)備好以后,在格子中的計(jì)算比較復(fù)雜需要編碼的情況,實(shí)際應(yīng)用中,數(shù)據(jù)準(zhǔn)備的過(guò)程才是更復(fù)雜的場(chǎng)景,才是更需要大量編碼的地方,我們來(lái)看看報(bào)表工具有沒(méi)有能力在這個(gè)過(guò)程中實(shí)現(xiàn)零編碼

例子:報(bào)表中需要呈現(xiàn)連續(xù)上漲超過(guò) 5 天的gu piao及上漲天數(shù)

這樣的報(bào)表,制表時(shí)候只需要設(shè)計(jì)幾個(gè)格子,很簡(jiǎn)單,但數(shù)據(jù)準(zhǔn)備卻不簡(jiǎn)單,大部分的工作量都得花在這個(gè)數(shù)據(jù)的準(zhǔn)備上

用 SQL 來(lái)算的話,得寫(xiě) 好幾層嵌套

select code,max(risenum)-1 maxRiseDays 
from (  
      select code,count(1) risenum 
      from(
           select code,changeSign,sum(changeSign) over(partition by code order by ddate) unRiseDays 
           from(
                select code,ddate,case when price>=lag(price) over(partition by code order by ddate)
                       then 0 else 1 end changeSign
                from stock_record
                )
            )
       group by code,unRiseDays
      )
group by code
having max(risenum) > 5

select code,max(risenum)-1 maxRiseDays 
from (  
      select code,count(1) risenum 
      from(
           select code,changeSign,sum(changeSign) over(partition by code order by ddate) unRiseDays 
           from(
                select code,ddate,case when price>=lag(price) over(partition by code order by ddate)
                       then 0 else 1 end changeSign
                from stock_record
                )
            )
       group by code,unRiseDays
      )
group by code
having max(risenum) > 5

這個(gè) SQL, 無(wú)論如何要算成是編碼了,有多年經(jīng)驗(yàn)的程序員都不一定能駕馭。而且,這種編碼是省不掉的,只能想辦法簡(jiǎn)化,追求少編碼了

我們繼續(xù)用 SPL 腳本去寫(xiě)一下,看看能減少多少編碼

零編碼制作報(bào)表真地可能嗎?-AI.x社區(qū)

短短三行就可以搞定,而且邏輯更清晰易懂了

這個(gè) SQL 還只是一個(gè)很簡(jiǎn)單的計(jì)算例子,實(shí)際應(yīng)用中的數(shù)據(jù)準(zhǔn)備場(chǎng)景大都要比這個(gè)復(fù)雜,有些甚至要復(fù)雜百倍千倍,成百上千行的 SQL 和存儲(chǔ)過(guò)程也是總能見(jiàn)到的

這樣大的編碼量,大部分的報(bào)表工具別說(shuō)是把它變成零編碼,就算是少一行都基本是無(wú)能為力的,能像上面的例子一樣用專業(yè)計(jì)算工具 SPL 把編碼量減少一部分就是最好的結(jié)果了

另外如果數(shù)據(jù)源不是關(guān)系數(shù)據(jù)庫(kù),而是文本、NoSQL、JOSN 這些,那這個(gè)前期數(shù)據(jù)準(zhǔn)備就更是去寫(xiě)代碼了,報(bào)表工具號(hào)稱的零編碼就更是口號(hào)有余但力不足了

當(dāng)然,用 SPL 這樣的計(jì)算工具去處理,去做準(zhǔn)備,仍然有一定的編碼量,但還是能減少不少開(kāi)發(fā)量,這時(shí)候我們就不是追求零編碼,而是追求少編碼了

通過(guò)上面 3 個(gè)例子可以看出,涉及格內(nèi)復(fù)雜計(jì)算和復(fù)雜數(shù)據(jù)準(zhǔn)備過(guò)程的報(bào)表,所有報(bào)表工具想通過(guò)簡(jiǎn)單的零編碼方式來(lái)實(shí)現(xiàn)都是絕無(wú)可能的,都得工程師去費(fèi)時(shí)間捋順其中的邏輯,然后去寫(xiě)公式和代碼才能做出來(lái)的

不同之處在于,計(jì)算能力較強(qiáng)的工具,可以利用它的高效函數(shù)和算法,使得編碼量少而簡(jiǎn)單,更接近零編碼,能力一般的,那就還是得費(fèi)勁去硬編碼了

總結(jié)

報(bào)表工具的設(shè)計(jì)初衷,旨在減少手工設(shè)計(jì)報(bào)表的編碼量,能真正做到少編碼的就已經(jīng)算作是好產(chǎn)品了,至于零編碼,那是少編碼的終極狀態(tài),是各工具遠(yuǎn)沒(méi)有達(dá)到的,也是需要去持續(xù)努力才能一步步接近的。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2025-1-3 18:38:38修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦