在數(shù)據(jù)庫(kù)設(shè)計(jì)和開(kāi)發(fā)中,避免存儲(chǔ)任何可以從其他字段計(jì)算或重建的數(shù)據(jù)是一種慣例。因此,在 Navicat BI 中構(gòu)建圖表時(shí),你可能會(huì)缺少一些數(shù)據(jù)。但這不是問(wèn)題,因?yàn)?Navicat BI 提供了專門用于此目的的計(jì)算字段。在今天的博客中,我們將使用計(jì)算字段來(lái)構(gòu)建圖表,該圖標(biāo)顯示每個(gè)客戶的平均租賃時(shí)間(即客戶在歸還電影前保留電影的時(shí)間長(zhǎng)度)。


獲取客戶租賃信息

正如本系列之前的博客中提到的,我們應(yīng)該在設(shè)計(jì)圖表前創(chuàng)建數(shù)據(jù)源,因?yàn)槲覀冃枰付▓D表使用的數(shù)據(jù)源。數(shù)據(jù)源引用連接中的表或文件/ODBC 源中的數(shù)據(jù),并可從不同服務(wù)器類型的表中選擇數(shù)據(jù)。創(chuàng)建新數(shù)據(jù)源后,我們可以點(diǎn)擊“新建數(shù)據(jù)源查詢”打開(kāi)查詢?cè)O(shè)計(jì)器。在這里,我們可以直接在編輯器中編寫(xiě) SQL 語(yǔ)句,使用可視化查詢生成器,或從 Navicat 導(dǎo)入查詢。下面是 SELECT 語(yǔ)句,它將獲取客戶信息、租賃金額、影片租賃日期和歸還日期:



保存查詢并刷新數(shù)據(jù)后,我們就能看到所有查詢字段和結(jié)果集:



現(xiàn)在,我們可以使用 rental_date 和 return_date 字段來(lái)計(jì)算租用期限。為此,請(qǐng)右鍵單擊字段列表中的 return_date(在 macOS 上按住 Control 鍵),然后從彈出菜單中選擇新建計(jì)算字段...:



“新建計(jì)算字段”對(duì)話框中,你可以查看到很多有用的函數(shù),包括聚合函數(shù)、日期時(shí)間函數(shù)、邏輯函數(shù)等。我們將使用 DATEDIFF() 函數(shù)計(jì)算出租日期和返回日期字段之間的天數(shù)。該函數(shù)接受一個(gè)時(shí)間單位以及開(kāi)始和結(jié)束日期。我們可以閱讀函數(shù)列表下方的說(shuō)明,了解更多信息。我們將傳遞一個(gè)“D”(日)作為單位,以及兩個(gè)日期字段,如下所示:



對(duì)話框底部有一個(gè)預(yù)覽,告訴我們是否得到了想要的結(jié)果。

單擊“確定”按鈕后,我們就可以在字段列表和結(jié)果中看到新字段了:



建立每個(gè)客戶的平均租賃時(shí)間圖表

由于每個(gè)客戶 ID 都是一個(gè)單獨(dú)的數(shù)據(jù)點(diǎn),因此使用散點(diǎn)圖可能效果不錯(cuò)。散點(diǎn)圖是將單個(gè)數(shù)據(jù)點(diǎn)沿著 X 軸和 Y 軸繪制的數(shù)據(jù)圖。我們將使用 customer_id 作為 X 軸,使用 rental_duration (Average) 作為 Y 軸。只需將字段拖動(dòng)到圖表設(shè)計(jì)器中的 X 軸和 Y 軸字段,將平均值聚合應(yīng)用到 rental_duration 上,然后,就可以立即繪制圖表了!



以下是顯示模式下的完整圖表:



補(bǔ)充:顯示每位客戶的租賃次數(shù)


雖然平均值很有用,但顯示每位客戶租用一部或多部電影的次數(shù)也很有用。為此,我們可以使用聚合函數(shù)。我們將計(jì)算結(jié)果集中的金額條目數(shù),并按 customer_id 進(jìn)行分組。下面是新計(jì)算字段對(duì)話框,其中調(diào)用了 AGGCOUNT() 函數(shù):



在圖表設(shè)計(jì)器中,我們將把新的 number_of_rentals 字段拖到顏色槽中。添加升序排序后,圖例項(xiàng)將按租用次數(shù)從少到多排序:



我們可以將光標(biāo)懸停在單個(gè)數(shù)據(jù)點(diǎn)上,查看其詳細(xì)信息。此時(shí)會(huì)出現(xiàn)一個(gè)工具提示,顯示租用次數(shù)、customer_id 以及平均租用天數(shù) rental_duration: