您可以使用任一支援的指令碼語言 (JavaScript 和 Python) 為 MySQL Shell 建立及註冊使用者定義的報表。報表功能會使用相同的 API 前端配置來處理內建報表和使用者定義報表。
報表可以指定其接受的報表特定選項清單,也可以接受指定數量的額外引數。您的報表可以支援這兩者、其中一個或都不支援。當您要求報表的說明時,MySQL Shell 會列出選項和引數,以及註冊報表時提供的任何可用說明。
要註冊為 MySQL Shell 報表的 Python 或 JavaScript 函數的簽章必須如下:
Dict report(Session session, List argv, Dict options);
其中
session
是要用來執行報表的 MySQL Shell 工作階段物件。argv
是包含傳遞至報表之額外引數的字串值的選用清單。options
是具有與任何報表特定選項及其值對應之鍵名稱和值的選用字典。
報表函數預期以特定格式傳回資料,具體取決於您註冊時使用的類型
- 清單類型
以清單的清單形式傳回輸出,第一個清單由欄名稱組成,其餘為列的內容。預設情況下,MySQL Shell 會以表格格式顯示輸出;如果
\show
或\watch
命令上指定了--vertical
或--E
選項,則會以垂直格式顯示輸出。列的值會轉換為項目的字串表示形式。如果列的元素少於欄名稱的數量,則會將遺失的元素視為 NULL。如果列的元素多於欄名稱的數量,則會忽略額外的元素。註冊此報表時,請使用類型 「list」。
- 報表類型
以包含單個項目的清單形式傳回自由格式輸出。MySQL Shell 會使用 YAML 顯示此輸出。註冊此報表時,請使用類型 「report」。
- 列印類型
將輸出直接列印到螢幕,並傳回空白清單給 MySQL Shell,以顯示輸出已顯示。註冊此報表時,請使用類型 「print」。
為了提供輸出,報表的 API 函數必須傳回一個具有鍵 report
的字典,以及 JSON 物件的清單,每個傳回清單中的項目對應一個 JSON 物件。對於清單類型,每個清單使用一個元素,對於報表類型使用單個元素,對於列印類型則不使用元素。