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


獲取客戶(hù)租賃信息

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



保存查詢(xún)并刷新數據后,我們就能看到所有查詢(xún)字段和結果集:



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



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



對話(huà)框底部有一個(gè)預覽,告訴我們是否得到了想要的結果。

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



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

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



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



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


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



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



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